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'; // アクセス解析
$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[] = 'コメント一覧';
$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 // ブログ記事コメント(詳細)
),
$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(
--- /dev/null
+<?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 = ' ' . $i;
+ } else {
+ $link = ' <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;
+ }
+}
+?>
case self::TASK_CONFIG: // その他設定
case self::TASK_IMAGE: // ブログ記事画像
case self::TASK_HISTORY: // ブログ記事履歴
+ case self::TASK_SCHEDULE: // ブログ記事予約
case self::TASK_ANALYTICS: // アクセス解析
$goWidget = true; // サブウィジェットを実行するかどうか
break;
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プラグインのリンク情報取得用
$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[] = 'コメント一覧';
$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 // ブログ記事コメント(詳細)
),
$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(
*
* @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
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が指定されていない場合
*\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
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
</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
--- /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-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>