*
* @package Magic3 Framework
* @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright Copyright 2006-2015 Magic3 Project.
+ * @copyright Copyright 2006-2017 Magic3 Project.
* @license http://www.gnu.org/copyleft/gpl.html GPL License
* @version SVN: $Id$
* @link http://www.magic3.org
class admin_wiki_mainBaseWidgetContainer extends BaseAdminWidgetContainer
{
protected static $_mainDb; // DB接続オブジェクト
+ protected $_baseUrl; // 管理画面のベースURL
// 画面
const TASK_PAGE = 'page'; // Wikiページ管理(一覧)
if (!isset(self::$_mainDb)) self::$_mainDb = new wiki_mainDb();
}
/**
+ * テンプレートに前処理
+ *
+ * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
+ *
+ * @param RequestManager $request HTTPリクエスト処理クラス
+ * @param object $param 任意使用パラメータ。_setTemplate()と共有。
+ * @return なし
+ */
+ function _preAssign($request, &$param)
+ {
+ $this->_openBy = $request->trimValueOf(M3_REQUEST_PARAM_OPEN_BY); // ウィンドウオープンタイプ
+ if (!empty($this->_openBy)) $this->addOptionUrlParam(M3_REQUEST_PARAM_OPEN_BY, $this->_openBy);
+
+ // 管理画面ペースURL取得
+ $this->_baseUrl = $this->getAdminUrlWithOptionParam();
+ }
+ /**
* テンプレートにデータ埋め込む
*
* _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
*
* @package Magic3 Framework
* @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright Copyright 2006-2016 Magic3 Project.
+ * @copyright Copyright 2006-2017 Magic3 Project.
* @license http://www.gnu.org/copyleft/gpl.html GPL License
* @version SVN: $Id$
* @link http://www.magic3.org
private $serialNo; // シリアル番号
private $serialArray = array(); // 表示されている項目シリアル番号
private $builtinPages; // 自動生成されるWikiページ
+ private $sortKeyType; // ソートキータイプ
+ private $sortKey; // ソートキー
+ private $sortDirection; // ソート方向
const DEFAULT_LIST_COUNT = 20; // 最大リスト表示数
const LINK_PAGE_COUNT = 5; // リンクページ数
const ICON_SIZE = 32; // アイコンのサイズ
+ const SORT_ICON_SIZE = 10; // ソートアイコンサイズ
const LOCK_ICON_FILE = '/images/system/lock32.png'; // ロック状態アイコン
const UNLOCK_ICON_FILE = '/images/system/unlock32_inactive.png'; // アンロック状態アイコン
const PREVIEW_ICON_FILE = '/images/system/window32.png'; // プレビュー用アイコン
+ const SORT_UP_ICON_FILE = '/images/system/arrow_up10.png'; // ソート降順アイコン
+ const SORT_DOWN_ICON_FILE = '/images/system/arrow_down10.png'; // ソート昇順アイコン
const WIKI_OBJ_ID = 'wikilib'; // Wikiコンテンツオブジェクト
+ const DEFAULT_SORT_KEY = 'id'; // デフォルトのソートキー
/**
* コンストラクタ
// パラメータ初期化
$this->maxListCount = self::DEFAULT_LIST_COUNT;
$this->builtinPages = $this->wikiLibObj->getBuiltinPages(); // 自動生成されるWikiページ
+ $this->sortKeyType = array('id'/*WikiページID*/, 'date'/*更新日時*/, 'locked'/*ページロック状態*/);
}
/**
* テンプレートファイルを設定
{
$act = $request->trimValueOf('act');
$pageNo = $request->trimIntValueOf(M3_REQUEST_PARAM_PAGE_NO, '1'); // ページ番号
+ $sort = $request->trimValueOf('sort'); // ソート順
+
+ // ソート順
+ list($this->sortKey, $this->sortDirection) = explode('-', $sort);
+ if (!in_array($this->sortKey, $this->sortKeyType) || !in_array($this->sortDirection, array('0', '1'))){
+ $this->sortKey = self::DEFAULT_SORT_KEY; // デフォルトのソートキー
+ $this->sortDirection = '1'; // 昇順
+ }
if ($act == 'delete'){ // 項目削除の場合
$listedItem = explode(',', $request->trimValueOf('seriallist'));
$this->calcPageLink($pageNo, $totalCount, $this->maxListCount);
// ページングリンク作成
- $pageLink = $this->createPageLink($pageNo, self::LINK_PAGE_COUNT, ''/*リンク作成用(未使用)*/, 'selpage($1);return false;');
-
- // イベントリストを取得
- self::$_mainDb->getAvailablePageList($this->maxListCount, $pageNo, array($this, 'itemListLoop'));
+ $sort = ''; // ソート値
+ if (!empty($this->sortKey)) $sort = '&sort=' . $this->sortKey . '-' . $this->sortDirection;
+// $pageLink = $this->createPageLink($pageNo, self::LINK_PAGE_COUNT, ''/*リンク作成用(未使用)*/, 'selpage($1);return false;');
+
+ $currentBaseUrl = $this->_baseUrl . $sort;
+ $pageLink = $this->createPageLink($pageNo, self::LINK_PAGE_COUNT, $currentBaseUrl/*リンク作成用*/);
+
+ // ページリストを取得
+// self::$_mainDb->getAvailablePageList($this->maxListCount, $pageNo, array($this, 'itemListLoop'));
+ self::$_mainDb->getAvailablePageList($this->maxListCount, $pageNo, $this->sortKey, $this->sortDirection, array($this, 'itemListLoop'));
if (count($this->serialArray) <= 0) $this->tmpl->setAttribute('itemlist', 'visibility', 'hidden');// 表示データないときは、一覧を表示しない
+ // ソート用データ設定
+ if (empty($this->sortDirection)){
+ $iconUrl = $this->getUrl($this->gEnv->getRootUrl() . self::SORT_UP_ICON_FILE); // ソート降順アイコン
+ $iconTitle = '降順';
+ } else {
+ $iconUrl = $this->getUrl($this->gEnv->getRootUrl() . self::SORT_DOWN_ICON_FILE); // ソート昇順アイコン
+ $iconTitle = '昇順';
+ }
+ $style = 'style="' . 'width:' . self::SORT_ICON_SIZE . 'px;height:' . self::SORT_ICON_SIZE . 'px;"';
+ $sortImage = '<img src="' . $iconUrl . '" title="' . $iconTitle . '" alt="' . $iconTitle . '" rel="m3help" ' . $style . ' />';
+
+ switch ($this->sortKey){
+ case 'id': // WikiページID
+ $this->tmpl->addVar('_widget', 'direct_icon_id', $sortImage);
+ break;
+ case 'date': // 更新日時
+ $this->tmpl->addVar('_widget', 'direct_icon_date', $sortImage);
+ break;
+ case 'locked': // ロック状態
+ $this->tmpl->addVar('_widget', 'direct_icon_locked', $sortImage);
+ break;
+ }
+ if ($this->sortKey == 'id' && !empty($this->sortDirection)){
+ $this->tmpl->addVar('_widget', 'sort_id', 'id-0');
+ } else {
+ $this->tmpl->addVar('_widget', 'sort_id', 'id-1');
+ }
+ if ($this->sortKey == 'date' && !empty($this->sortDirection)){
+ $this->tmpl->addVar('_widget', 'sort_date', 'date-0');
+ } else {
+ $this->tmpl->addVar('_widget', 'sort_date', 'date-1');
+ }
+ if ($this->sortKey == 'locked' && !empty($this->sortDirection)){
+ $this->tmpl->addVar('_widget', 'sort_locked', 'locked-0');
+ } else {
+ $this->tmpl->addVar('_widget', 'sort_locked', 'locked-1');
+ }
+ $this->tmpl->addVar('_widget', 'sort', $this->sortKey . '-' . $this->sortDirection);
+
// 一覧用項目
$this->tmpl->addVar("_widget", "page", $pageNo); // ページ番号
$this->tmpl->addVar("_widget", "page_link", $pageLink);
*
* @package Magic3 Framework
* @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright Copyright 2006-2015 Magic3 Project.
+ * @copyright Copyright 2006-2017 Magic3 Project.
* @license http://www.gnu.org/copyleft/gpl.html GPL License
* @version SVN: $Id$
* @link http://www.magic3.org
*
* @param int $limit 取得する項目数
* @param int $pageNo 取得するページ(1~)
+ * @param string $sortKey ソートキー(id=WikiページID,date=更新日時,locked=ロック状態)
+ * @param int $sortDirection 取得順(0=降順,1=昇順)
* @param function $callback コールバック関数
* @return なし
*/
- function getAvailablePageList($limit, $pageNo, $callback)
+ function getAvailablePageList($limit, $pageNo, $sortKey, $sortDirection, $callback)
{
$offset = $limit * ($pageNo -1);
if ($offset < 0) $offset = 0;
$queryStr .= 'WHERE wc_deleted = false '; // 削除されていない
$queryStr .= 'AND wc_type = ? ';
$queryStr .= 'AND wc_id NOT LIKE \':%\' '; // システムファイルは除く
- $queryStr .= 'ORDER BY wc_id LIMIT ' . $limit . ' OFFSET ' . $offset;
+
+ // ソート順
+ switch ($sortKey){
+ case 'id': // WikiページID
+ $orderKey = 'wc_id ';
+ break;
+ case 'date': // 更新日時
+ $orderKey = 'wc_content_dt ';
+ break;
+ case 'locked': // ロック状態
+ $orderKey = 'wc_locked ';
+ break;
+ }
+ $ord = '';
+ if (empty($sortDirection)) $ord = 'DESC ';
+ $defaultOrder = '';
+ if ($sortKey != 'id') $defaultOrder = ', wc_id ';
+ $queryStr .= 'ORDER BY ' . $orderKey . $ord . $defaultOrder . 'LIMIT ' . $limit . ' OFFSET ' . $offset;
$this->selectLoop($queryStr, array($type), $callback);
}
/**
*
* @package Magic3 Framework
* @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright Copyright 2006-2015 Magic3 Project.
+ * @copyright Copyright 2006-2017 Magic3 Project.
* @license http://www.gnu.org/copyleft/gpl.html GPL License
* @version SVN: $Id$
* @link http://www.magic3.org
document.main.submit();
return true;
}
+function sortList(type){
+ document.main.sort.value = type;
+ document.main.submit();
+ return true;
+}
$(function(){
// テーブルを作成
m3SetConfigTable('mainconfig');
<input type="hidden" name="serial" />
<input type="hidden" name="seriallist" value="{SERIAL_LIST}" />
<input type="hidden" name="page" value="{PAGE}" />
+<input type="hidden" name="sort" value="{SORT}" />
<h3 class="m3config_h"><span {_HELP_PAGE_LIST}>Wikiページ一覧</span></h3>
<div class="m3config_h_side_buttons pull-right"><div {_HELP_PAGE_BUTTONS}><div class="btn-group">
<input type="button" class="button" data-toggle="modal" data-target="#uploadModal" value="アップロード" />
<thead>
<tr>
<th class="select"><span {_HELP_PAGE_CHECK}>選択</span></th>
- <th><span {_HELP_PAGE_ID}>ID</span></th>
- <th style="width:50px;"><span {_HELP_PAGE_STATUS}>状態</span></th>
+ <th class="sort"><a href="#" onclick="sortList('{SORT_ID}');"><span {_HELP_PAGE_ID}>ID</span></a>{DIRECT_ICON_ID}</th>
+ <th class="sort" style="width:50px;"><a href="#" onclick="sortList('{SORT_LOCKED}');"><span {_HELP_PAGE_STATUS}>状態</span></a>{DIRECT_ICON_LOCKED}</th>
<th style="width:50px;"><span {_HELP_PAGE_VIEW_COUNT}>閲覧</span></th>
<th style="width:50px;"><span {_HELP_PAGE_ATTACH_COUNT}>添付</span></th>
- <th style="width:110px;">更新日時</th>
+ <th class="sort" style="width:110px;"><a href="#" onclick="sortList('{SORT_DATE}');"><span {_HELP_PAGE_DATE}>更新日時</span></a>{DIRECT_ICON_DATE}</th>
<th style="width:60px;"><span {_HELP_CONTENT_ACT}>操作</span></th>
</tr>
</thead>