OSDN Git Service

「ブログメイン」ウィジェットに予約管理画面追加。
authornaoki hirata <naoki@magic3.org>
Sun, 29 May 2016 23:20:32 +0000 (08:20 +0900)
committernaoki hirata <naoki@magic3.org>
Sun, 29 May 2016 23:20:32 +0000 (08:20 +0900)
widgets/blog_main/include/container/admin_blog_mainBaseWidgetContainer.php
widgets/blog_main/include/container/admin_blog_mainScheduleWidgetContainer.php [new file with mode: 0644]
widgets/blog_main/include/container/admin_blog_mainWidgetContainer.php
widgets/blog_main/include/container/blog_mainBaseWidgetContainer.php
widgets/blog_main/include/container/blog_mainWidgetContainer.php
widgets/blog_main/include/template/admin_entry_detail.tmpl.html
widgets/blog_main/include/template/admin_schedule.tmpl.html [new file with mode: 0644]

index bfe1a6e..0d7ba6f 100644 (file)
@@ -34,6 +34,8 @@ class admin_blog_mainBaseWidgetContainer extends BaseAdminWidgetContainer
        const TASK_ENTRY_DETAIL         = 'entry_detail';               // ブログ記事(詳細)
        const TASK_IMAGE                        = 'image';                              // ブログ記事画像
        const TASK_HISTORY                      = 'history';                    // ブログ記事履歴
+       const TASK_SCHEDULE                     = 'schedule';                   // ブログ記事予約(一覧)
+       const TASK_SCHEDULE_DETAIL      = 'schedule_detail';    // ブログ記事予約(詳細)
        const TASK_COMMENT                      = 'comment';                    // ブログ記事コメント(一覧)
        const TASK_COMMENT_DETAIL       = 'comment_detail';             // ブログ記事コメント(詳細)
        const TASK_ANALYTICS            = 'analytics';                  // アクセス解析
@@ -101,6 +103,19 @@ class admin_blog_mainBaseWidgetContainer extends BaseAdminWidgetContainer
                                $titles[] = '詳細';
                                $titles[] = '履歴';
                                break;
+                       case self::TASK_SCHEDULE:                       // ブログ記事予約(一覧)
+                               $titles[] = 'ブログ記事管理';
+                               $titles[] = '記事一覧';
+                               $titles[] = '記事詳細';
+                               $titles[] = '予約一覧';
+                               break;
+                       case self::TASK_SCHEDULE_DETAIL:                        // ブログ記事予約(詳細)
+                               $titles[] = 'ブログ記事管理';
+                               $titles[] = '記事一覧';
+                               $titles[] = '記事詳細';
+                               $titles[] = '予約一覧';
+                               $titles[] = '詳細';
+                               break;
                        case self::TASK_COMMENT:                        // ブログ記事コメント(一覧)
                                $titles[] = 'ブログ記事管理';
                                $titles[] = 'コメント一覧';
@@ -150,6 +165,8 @@ class admin_blog_mainBaseWidgetContainer extends BaseAdminWidgetContainer
                                                                                        $task == self::TASK_ENTRY_DETAIL ||             // ブログ記事(詳細)
                                                                                        $task == self::TASK_IMAGE ||                    // ブログ記事画像
                                                                                        $task == self::TASK_HISTORY ||                  // ブログ記事履歴
+                                                                                       $task == self::TASK_SCHEDULE ||                 // ブログ記事予約(一覧)
+                                                                                       $task == self::TASK_SCHEDULE_DETAIL ||          // ブログ記事予約(詳細)
                                                                                        $task == self::TASK_COMMENT ||                  // ブログ記事コメント(一覧)
                                                                                        $task == self::TASK_COMMENT_DETAIL              // ブログ記事コメント(詳細)
                                                                                ),
@@ -163,7 +180,9 @@ class admin_blog_mainBaseWidgetContainer extends BaseAdminWidgetContainer
                                                                                                        $task == self::TASK_ENTRY ||                    // ブログ記事(一覧)
                                                                                                        $task == self::TASK_ENTRY_DETAIL ||             // ブログ記事(詳細)
                                                                                                        $task == self::TASK_IMAGE ||                    // ブログ記事画像
-                                                                                                       $task == self::TASK_HISTORY                             // ブログ記事履歴
+                                                                                                       $task == self::TASK_HISTORY     ||                      // ブログ記事履歴
+                                                                                                       $task == self::TASK_SCHEDULE ||                 // ブログ記事予約(一覧)
+                                                                                                       $task == self::TASK_SCHEDULE_DETAIL             // ブログ記事予約(詳細)
                                                                                                )
                                                        ),
                                                        (Object)array(
diff --git a/widgets/blog_main/include/container/admin_blog_mainScheduleWidgetContainer.php b/widgets/blog_main/include/container/admin_blog_mainScheduleWidgetContainer.php
new file mode 100644 (file)
index 0000000..459d0d1
--- /dev/null
@@ -0,0 +1,141 @@
+<?php
+/**
+ * コンテナクラス
+ *
+ * PHP versions 5
+ *
+ * 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-2016 Magic3 Project.
+ * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
+ * @version    SVN: $Id$
+ * @link       http://www.magic3.org
+ */
+/***************************************************************************************************
+### 複製元クラス admin_blog_mainHistoryWidgetContainer ###
+複製元クラスからadmin_blog_mainScheduleWidgetContainerクラスを生成する
+変更行
+ ・親クラスファイルの読み込み(require_once)
+ ・クラス名定義
+****************************************************************************************************/
+require_once($gEnvManager->getCurrentWidgetContainerPath() . '/admin_blog_mainBaseWidgetContainer.php');
+
+class admin_blog_mainScheduleWidgetContainer extends admin_blog_mainBaseWidgetContainer
+{
+       private $totalCount;            // 編集履歴総数
+       const DEFAULT_LIST_COUNT = 20;                  // 最大リスト表示数
+       const HISTORY_GET_ICON_FILE = '/images/system/history_get32.png';               // 履歴データ取得用アイコン
+       const ICON_SIZE = 32;           // アイコンのサイズ
+       
+       /**
+        * コンストラクタ
+        */
+       function __construct()
+       {
+               // 親クラスを呼び出す
+               parent::__construct();
+       }
+       /**
+        * テンプレートファイルを設定
+        *
+        * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
+        * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
+        *
+        * @param RequestManager $request               HTTPリクエスト処理クラス
+        * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
+        * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
+        */
+       function _setTemplate($request, &$param)
+       {
+               return 'admin_schedule.tmpl.html';
+       }
+       /**
+        * テンプレートにデータ埋め込む
+        *
+        * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
+        *
+        * @param RequestManager $request               HTTPリクエスト処理クラス
+        * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
+        * @param                                                               なし
+        */
+       function _assign($request, &$param)
+       {
+               $userId         = $this->gEnv->getCurrentUserId();
+               $langId = $this->gEnv->getCurrentLanguage();            // 表示言語を取得
+               $act = $request->trimValueOf('act');
+               $entryId = $request->trimValueOf(M3_REQUEST_PARAM_BLOG_ENTRY_ID);
+               $pageNo = $request->trimIntValueOf(M3_REQUEST_PARAM_PAGE_NO, '1');                              // ページ番号
+               
+               // 一覧表示数
+               $maxListCount = self::DEFAULT_LIST_COUNT;
+               
+               // コンテンツ総数を取得
+               $this->totalCount = self::$_mainDb->getEntryHistoryCount($entryId, $langId);
+
+               // 表示するページ番号の修正
+               $pageCount = (int)(($this->totalCount -1) / $maxListCount) + 1;         // 総ページ数
+               if ($pageNo < 1) $pageNo = 1;
+               if ($pageNo > $pageCount) $pageNo = $pageCount;
+               $this->firstNo = ($pageNo -1) * $maxListCount + 1;              // 先頭番号
+               
+               // ページング用リンク作成
+               $pageLink = '';
+               if ($pageCount > 1){    // ページが2ページ以上のときリンクを作成
+                       for ($i = 1; $i <= $pageCount; $i++){
+                               if ($i == $pageNo){
+                                       $link = '&nbsp;' . $i;
+                               } else {
+                                       $link = '&nbsp;<a href="#" onclick="selpage(\'' . $i . '\');return false;">' . $i . '</a>';
+                               }
+                               $pageLink .= $link;
+                       }
+               }
+               
+               // コンテンツ編集履歴を取得
+               self::$_mainDb->getEntryHistory($entryId, $langId, $maxListCount, $pageNo, array($this, 'itemListLoop'));
+               
+               $this->tmpl->addVar("_widget", "page", $pageNo);
+               $this->tmpl->addVar("_widget", "page_link", $pageLink);
+               $this->tmpl->addVar("_widget", "entry_id", $entryId);
+               $this->tmpl->addVar("_widget", "serial_list", implode($this->serialArray, ','));// 表示項目のシリアル番号を設定
+       }
+       /**
+        * 取得したデータをテンプレートに設定する
+        *
+        * @param int $index                    行番号(0~)
+        * @param array $fetchedRow             フェッチ取得した行
+        * @param object $param                 未使用
+        * @return bool                                 true=処理続行の場合、false=処理終了の場合
+        */
+       function itemListLoop($index, $fetchedRow, $param)
+       {
+               // 履歴番号
+               $no = $fetchedRow['be_history_index'];
+               if ($no == $this->totalCount -1){
+                       $no = '最新';
+               } else {
+                       $no++;
+               }
+               // 操作用ボタン
+               $iconUrl = $this->gEnv->getRootUrl() . self::HISTORY_GET_ICON_FILE;             // 履歴データ取得用アイコン
+               $iconTitle = 'データを取得';
+               $historyGetTag = '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::ICON_SIZE . '" height="' . self::ICON_SIZE . '" rel="m3help" alt="' . $iconTitle . '" title="' . $iconTitle . '" />';
+
+               $row = array(
+                       'no' => $this->convertToDispString($no),                                                                                                        // 履歴番号
+                       'serial' => $this->convertToDispString($fetchedRow['be_serial']),                       // シリアル番号
+                       'image' => $historyGetTag,                                                                                      // 履歴データ取得用の画像
+                       'user' => $this->convertToDispString($fetchedRow['lu_name']),   // 更新者
+                       'date' => $this->convertToDispDateTime($fetchedRow['be_create_dt'])     // 更新日時
+               );
+               $this->tmpl->addVars('itemlist', $row);
+               $this->tmpl->parseTemplate('itemlist', 'a');
+               
+               // 表示中のコンテンツIDを保存
+               $this->serialArray[] = $fetchedRow['be_serial'];
+               return true;
+       }
+}
+?>
index de307c9..5089c90 100644 (file)
@@ -47,6 +47,7 @@ class admin_blog_mainWidgetContainer extends admin_blog_mainBaseWidgetContainer
                        case self::TASK_CONFIG:         // その他設定
                        case self::TASK_IMAGE:          // ブログ記事画像
                        case self::TASK_HISTORY:        // ブログ記事履歴
+                       case self::TASK_SCHEDULE:       // ブログ記事予約
                        case self::TASK_ANALYTICS:      // アクセス解析
                                $goWidget = true;               // サブウィジェットを実行するかどうか
                                break;
index 4db0c97..000a538 100644 (file)
@@ -36,6 +36,8 @@ class blog_mainBaseWidgetContainer extends BaseWidgetContainer
        const TASK_ENTRY_DETAIL         = 'entry_detail';                       // 記事編集画面詳細
        const TASK_IMAGE                        = 'image';                              // ブログ記事画像
        const TASK_HISTORY                      = 'history';                    // ブログ記事履歴
+       const TASK_SCHEDULE                     = 'schedule';                   // ブログ記事予約(一覧)
+       const TASK_SCHEDULE_DETAIL      = 'schedule_detail';    // ブログ記事予約(詳細)
        const TASK_COMMENT                      = 'comment';            // ブログ記事コメント管理
        const TASK_COMMENT_DETAIL       = 'comment_detail';             // ブログ記事コメント管理(詳細)
        const TASK_LINKINFO                     = 'linkinfo';           // CKEditorプラグインのリンク情報取得用
@@ -143,6 +145,19 @@ class blog_mainBaseWidgetContainer extends BaseWidgetContainer
                                $titles[] = '詳細';
                                $titles[] = '履歴';
                                break;
+                       case self::TASK_SCHEDULE:                       // ブログ記事予約(一覧)
+                               $titles[] = 'ブログ記事管理';
+                               $titles[] = '記事一覧';
+                               $titles[] = '記事詳細';
+                               $titles[] = '予約一覧';
+                               break;
+                       case self::TASK_SCHEDULE_DETAIL:                        // ブログ記事予約(詳細)
+                               $titles[] = 'ブログ記事管理';
+                               $titles[] = '記事一覧';
+                               $titles[] = '記事詳細';
+                               $titles[] = '予約一覧';
+                               $titles[] = '詳細';
+                               break;
                        case self::TASK_COMMENT:                        // ブログ記事コメント(一覧)
                                $titles[] = 'ブログ記事管理';
                                $titles[] = 'コメント一覧';
@@ -188,6 +203,8 @@ class blog_mainBaseWidgetContainer extends BaseWidgetContainer
                                                                                        $task == self::TASK_ENTRY_DETAIL ||             // ブログ記事(詳細)
                                                                                        $task == self::TASK_IMAGE ||                    // ブログ記事画像
                                                                                        $task == self::TASK_HISTORY ||                  // ブログ記事履歴
+                                                                                       $task == self::TASK_SCHEDULE ||                 // ブログ記事予約(一覧)
+                                                                                       $task == self::TASK_SCHEDULE_DETAIL ||          // ブログ記事予約(詳細)
                                                                                        $task == self::TASK_COMMENT ||                  // ブログ記事コメント(一覧)
                                                                                        $task == self::TASK_COMMENT_DETAIL              // ブログ記事コメント(詳細)
                                                                                ),
@@ -201,7 +218,9 @@ class blog_mainBaseWidgetContainer extends BaseWidgetContainer
                                                                                                        $task == self::TASK_ENTRY ||                    // ブログ記事(一覧)
                                                                                                        $task == self::TASK_ENTRY_DETAIL ||             // ブログ記事(詳細)
                                                                                                        $task == self::TASK_IMAGE ||                    // ブログ記事画像
-                                                                                                       $task == self::TASK_HISTORY                             // ブログ記事履歴
+                                                                                                       $task == self::TASK_HISTORY     ||                      // ブログ記事履歴
+                                                                                                       $task == self::TASK_SCHEDULE ||                 // ブログ記事予約(一覧)
+                                                                                                       $task == self::TASK_SCHEDULE_DETAIL             // ブログ記事予約(詳細)
                                                                                                )
                                                        ),
                                                        (Object)array(
index 1a6b70c..16d96e0 100644 (file)
@@ -8,7 +8,7 @@
  *
  * @package    Magic3 Framework
  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright  Copyright 2006-2015 Magic3 Project.
+ * @copyright  Copyright 2006-2016 Magic3 Project.
  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
  * @version    SVN: $Id$
  * @link       http://www.magic3.org
@@ -60,6 +60,7 @@ class blog_mainWidgetContainer extends blog_mainBaseWidgetContainer
                        case self::TASK_ENTRY_DETAIL:                   // 記事編集画面詳細
                        case self::TASK_IMAGE:                  // ブログ記事画像
                        case self::TASK_HISTORY:                        // ブログ記事履歴
+                       case self::TASK_SCHEDULE:       // ブログ記事予約
                        case self::TASK_COMMENT:                // ブログ記事コメント管理
                        case self::TASK_COMMENT_DETAIL:         // ブログ記事コメント管理(詳細)
                                if (empty($blogId)){    // ブログIDが指定されていない場合
index 5a65d2f..9c545fc 100644 (file)
@@ -5,7 +5,7 @@
  *\r
  * @package    Magic3 Framework\r
  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>\r
- * @copyright  Copyright 2006-2015 Magic3 Project.\r
+ * @copyright  Copyright 2006-2016 Magic3 Project.\r
  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License\r
  * @version    SVN: $Id$\r
  * @link       http://www.magic3.org\r
@@ -97,6 +97,11 @@ function viewHistory(){
        document.main.submit();\r
        return true;\r
 }\r
+function schedule(){\r
+       document.main.task.value = 'schedule';\r
+       document.main.submit();\r
+       return true;\r
+}\r
 function configImage()\r
 {\r
        document.main.task.value = 'image';\r
@@ -205,7 +210,9 @@ $(function(){
 </patTemplate:tmpl>\r
 <div class="m3config_h_side_buttons pull-right" style="margin-right:10px;"><div {_HELP_ENTRY_BUTTONS2}><div class="btn-group">\r
 <input type="button" class="button" onclick="configImage();" value="画像" {IMAGE_BTN_DISABLED} />\r
-<input type="button" class="button" onclick="viewHistory();" value="履歴" {HISTORY_BTN_DISABLED} /><input type="button" class="button" onclick="previewInOtherWindow();" value="プレビュー" {PREVIEW_BTN_DISABLED} />\r
+<input type="button" class="button" onclick="schedule();" value="予約" {SCHEDULE_BTN_DISABLED} />\r
+<input type="button" class="button" onclick="viewHistory();" value="履歴" {HISTORY_BTN_DISABLED} />\r
+<input type="button" class="button" onclick="previewInOtherWindow();" value="プレビュー" {PREVIEW_BTN_DISABLED} />\r
 </div></div></div>\r
 \r
 <table id="mainconfig">\r
diff --git a/widgets/blog_main/include/template/admin_schedule.tmpl.html b/widgets/blog_main/include/template/admin_schedule.tmpl.html
new file mode 100644 (file)
index 0000000..2579677
--- /dev/null
@@ -0,0 +1,79 @@
+/**
+ * 表示データ作成用テンプレート(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-2016 Magic3 Project.
+ * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
+ * @version    SVN: $Id$
+ * @link       http://www.magic3.org
+ */
+<patTemplate:tmpl name="_widget">
+<script type="text/javascript">
+//<![CDATA[
+function cancelItem(){
+       document.main.task.value = 'entry_detail';
+       document.main.submit();
+       return true;
+}
+function selpage(page){
+       document.main.act.value = 'selpage';
+       document.main.page.value = page;
+       document.main.submit();
+       return true;
+}
+function getHistory(serial){
+       document.main.task.value = 'entry_detail';
+       document.main.act.value = 'get_history';
+       document.main.serial.value = serial;
+       document.main.submit();
+       return true;
+}
+$(function(){
+       // テーブルを作成
+       m3SetConfigTable('itemlist');
+});
+//]]>
+</script>
+<div class="m3config_container">
+<!-- m3:ErrorMessage -->
+<form method="post" name="main">
+<input type="hidden" name="task" value="history" />
+<input type="hidden" name="act" />
+<input type="hidden" name="serial" />
+<input type="hidden" name="seriallist" value="{SERIAL_LIST}" />
+<input type="hidden" name="entryid" value="{ENTRY_ID}" />
+<input type="hidden" name="page" value="{PAGE}" />
+<!-- m3:PostParam -->
+<h3 class="m3config_h">ブログ記事予約</h3>
+<div class="m3config_h_side_buttons pull-right"><div {_HELP_ENTRY_BUTTONS}><div class="btn-group">
+<input type="button" class="button" onclick="cancelItem();" value="戻る" />
+</div></div></div>
+
+<table id="itemlist">
+    <thead>
+    <tr>
+           <th style="width:50px;">No</th>
+           <th>更新日時</th>
+           <th>更新者</th>
+           <th>操作</th>
+       </tr>
+    </thead>
+    <tbody>
+    <patTemplate:tmpl name="itemlist">
+    <tr>
+           <td>{NO}</td>
+           <td>{DATE}</td>
+           <td>{USER}</td>
+           <td><a href="javascript:void(0);" onclick="getHistory('{SERIAL}');">{IMAGE}</a></td>
+       </tr>
+       </patTemplate:tmpl>
+    </tbody>
+</table>
+{PAGE_LINK}
+
+</form>
+</div>
+</patTemplate:tmpl>