OSDN Git Service

「Wiki更新リスト」ウィジェット更新。 v2.9.1
authornaoki hirata <naoki@magic3.org>
Tue, 22 Jul 2014 04:13:11 +0000 (13:13 +0900)
committernaoki hirata <naoki@magic3.org>
Tue, 22 Jul 2014 04:13:11 +0000 (13:13 +0900)
widgets/wiki_update/include/container/rss_wiki_updateWidgetContainer.php
widgets/wiki_update/include/container/wiki_updateWidgetContainer.php
widgets/wiki_update/include/template/index.tmpl.html

index fa1c99e..93d1ba8 100644 (file)
@@ -24,9 +24,7 @@ class rss_wiki_updateWidgetContainer extends BaseRssContainer
        private $rssChannel;                            // RSSチャンネル部出力データ
        private $rssSeqUrl = array();                                   // 項目の並び
        const DEFAULT_ITEM_COUNT = 10;          // デフォルトの表示項目数
-       const CONTENT_TYPE = '';                // コンテンツタイプ
-       const TARGET_WIDGET = 'default_content';                // 呼び出しウィジェットID
-       const DEFAULT_TITLE = '更新コンテンツ';                  // デフォルトのウィジェットタイトル
+       const DEFAULT_TITLE = '更新リスト';                        // デフォルトのウィジェットタイトル
        const DEFAULT_DESC = '最新の更新コンテンツが取得できます。';
        
        /**
@@ -73,14 +71,10 @@ class rss_wiki_updateWidgetContainer extends BaseRssContainer
                if (!empty($paramObj)){
                        $this->itemCount        = $paramObj->itemCount;
                }
-                       
-               // ログインユーザでないときは、ユーザ制限のない項目だけ表示
-               $all = false;
-               if ($this->gEnv->isCurrentUserLogined()) $all = true;
                
                // 一覧を作成
-               $this->db->getContentList($langId, self::CONTENT_TYPE, $all, $now, array($this, 'itemsLoop'));
-                               
+               $this->db->getUpdatePages($this->itemCount, 1/*1ページ目*/, array($this, 'itemsLoop'));
+               
                // 画面にデータを埋め込む
                if ($this->isExistsList) $this->tmpl->setAttribute('itemlist', 'visibility', 'visible');
                
@@ -114,31 +108,23 @@ class rss_wiki_updateWidgetContainer extends BaseRssContainer
         */
        function itemsLoop($index, $fetchedRow)
        {
-               // 表示項目数に達したときは終了
-               if ($index >= $this->itemCount) return false;
-               
-               $serial = $fetchedRow['vc_serial'];
-               $totalViewCount = $fetchedRow['total'];
-               $name = $fetchedRow['cn_name'];
+               $name = $fetchedRow['wc_id'];
 
                // リンク先の作成
-               $linkUrl = $this->getUrl($this->gEnv->getDefaultUrl() . '?' . M3_REQUEST_PARAM_CONTENT_ID . '=' . $fetchedRow['cn_id'], true);
+               $linkUrl = $this->getUrl($this->gEnv->getDefaultUrl() . '?' . $fetchedRow['wc_id'], true);
 
-               if (!empty($name)){
-                       $row = array(
-                               'total' => $totalViewCount,             // 閲覧数
-                               'link_url' => $this->convertUrlToHtmlEntity($linkUrl),          // リンク
-                               'name' => $this->convertToDispString($name),                    // タイトル
-                               'date' => getW3CDate($fetchedRow['cn_create_dt'])               // 更新日時
-                       );
-                       $this->tmpl->addVars('itemlist', $row);
-                       $this->tmpl->parseTemplate('itemlist', 'a');
+               $row = array(
+                       'link_url' => $this->convertUrlToHtmlEntity($linkUrl),          // リンク
+                       'name' => $this->convertToDispString($name),                    // タイトル
+                       'date' => getW3CDate($fetchedRow['wc_content_dt'])              // 更新日時
+               );
+               $this->tmpl->addVars('itemlist', $row);
+               $this->tmpl->parseTemplate('itemlist', 'a');
+       
+               // RSS用
+               $this->rssSeqUrl[] = $linkUrl;                                  // 項目の並び
                
-                       // RSS用
-                       $this->rssSeqUrl[] = $linkUrl;                                  // 項目の並び
-                       
-                       $this->isExistsList = true;             // リスト項目が存在するかどうか
-               }
+               $this->isExistsList = true;             // リスト項目が存在するかどうか
                return true;
        }
 }
index 72d787d..152064d 100644 (file)
@@ -22,9 +22,11 @@ class wiki_updateWidgetContainer extends BaseWidgetContainer
        private $itemCount;                                     // リスト項目数
        private $isExistsList;                          // リスト項目が存在するかどうか
        private $headRssFile;                           // RSS情報
+       private $currentDate;                           // 現在日付
        const DEFAULT_ITEM_COUNT = 10;          // デフォルトの表示項目数
        const DEFAULT_TITLE = '更新リスト';                        // デフォルトのウィジェットタイトル
        const RSS_ICON_FILE = '/images/system/rss14.png';               // RSSリンク用アイコン
+       const DATE_FORMAT = 'Y年 n月 j日';           // 日付フォーマット
        
        /**
         * コンストラクタ
@@ -74,8 +76,17 @@ class wiki_updateWidgetContainer extends BaseWidgetContainer
                // 一覧を作成
                $this->db->getUpdatePages($this->itemCount, 1/*1ページ目*/, array($this, 'itemsLoop'));
                        
-               // 画面にデータを埋め込む
-               if ($this->isExistsList) $this->tmpl->setAttribute('itemlist', 'visibility', 'visible');
+               // 一覧データがない場合は非表示
+               if ($this->isExistsList){
+                       // 前の日付を表示
+                       $dateRow = array(
+                               'date'          => $this->convertToDispString($this->currentDate)                       // 日付
+                       );
+                       $this->tmpl->addVars('date_list', $dateRow);
+                       $this->tmpl->parseTemplate('date_list', 'a');
+               } else {
+                       $this->tmpl->setAttribute('date_list', 'visibility', 'hidden');
+               }
 
                // RSS用リンク作成
                $iconTitle = self::DEFAULT_TITLE;
@@ -128,17 +139,38 @@ class wiki_updateWidgetContainer extends BaseWidgetContainer
        function itemsLoop($index, $fetchedRow)
        {
                $name = $fetchedRow['wc_id'];
-
+               $date = date(self::DATE_FORMAT, strtotime($fetchedRow['wc_content_dt']));
+               
                // リンク先の作成
-               $linkUrl = $this->getUrl($this->gEnv->getDefaultUrl() . '?' . M3_REQUEST_PARAM_CONTENT_ID . '=' . $fetchedRow['wc_id'], true);
+               $linkUrl = $this->getUrl($this->gEnv->getDefaultUrl() . '?' . $fetchedRow['wc_id'], true);
 
+               if (!isset($this->currentDate)){
+                       // 日付を更新
+                       $this->currentDate = $date;
+                       
+                       // バッファ更新
+                       $this->tmpl->clearTemplate('item_list');
+               } else if ($date != $this->currentDate){
+                       // 前の日付を表示
+                       $dateRow = array(
+                               'date'          => $this->convertToDispString($this->currentDate)                       // 日付
+                       );
+                       $this->tmpl->addVars('date_list', $dateRow);
+                       $this->tmpl->parseTemplate('date_list', 'a');
+                       
+                       // 日付を更新
+                       $this->currentDate = $date;
+                       
+                       // バッファ更新
+                       $this->tmpl->clearTemplate('item_list');
+               }
                $row = array(
                        'link_url'      => $this->convertUrlToHtmlEntity($linkUrl),             // リンク
                        'name'          => $this->convertToDispString($name)                    // タイトル
                );
-               $this->tmpl->addVars('itemlist', $row);
-               $this->tmpl->parseTemplate('itemlist', 'a');
-       
+               $this->tmpl->addVars('item_list', $row);
+               $this->tmpl->parseTemplate('item_list', 'a');
+               
                $this->isExistsList = true;             // リスト項目が存在するかどうか
                return true;
        }
index cd40349..3dccee1 100644 (file)
  * @link       http://www.magic3.org
  */
 <patTemplate:tmpl name="_widget">
+<patTemplate:tmpl name="date_list">
+<strong>{DATE}</strong>
 <ul>
-  <patTemplate:tmpl name="itemlist"><li><a href="{LINK_URL}"><span>{NAME}</span></a></li></patTemplate:tmpl>
+<patTemplate:tmpl name="item_list">
+<li><a href="{LINK_URL}">{NAME}</a></li>
+</patTemplate:tmpl>
 </ul>
+</patTemplate:tmpl>
 {RSS_LINK}
 </patTemplate:tmpl>