pixmicat - Diff between revs 563 and 886

Subversion Repositories:
Rev:
Show entire file - Ignore whitespace
Rev 563 Rev 886
Line 3... Line 3...
3 mod_catalog : 以相簿模式列出圖檔方便瀏覽及抓取 3 mod_catalog : 以相簿模式列出圖檔方便瀏覽及抓取
4 By: scribe (Adopted from Pixmicat!-Festival) 4 By: scribe (Adopted from Pixmicat!-Festival)
5 */ 5 */
6 6
7 class mod_catalog{ 7 class mod_catalog{
8         var $CATALOG_NUMBER; -  
-   8         var $CATALOG_NUMBER, $USE_SEARCH_CODE;
9 9
10         function mod_catalog(){ 10         function mod_catalog(){
11                 global $PMS; 11                 global $PMS;
12                 $PMS->hookModuleMethod('ModulePage', 'mod_catalog'); // 向系統登記模組專屬獨立頁面 12                 $PMS->hookModuleMethod('ModulePage', 'mod_catalog'); // 向系統登記模組專屬獨立頁面
13 13
14                 $this->CATALOG_NUMBER = 20; // 相簿模式一頁最多顯示個數 (視文章是否有貼圖而有實際變動) 14                 $this->CATALOG_NUMBER = 20; // 相簿模式一頁最多顯示個數 (視文章是否有貼圖而有實際變動)
-   15                 $this->USE_SEARCH_CODE = true; // 使用搜尋程序來建立相簿?
15         } 16         }
16 17
17         /* Get the name of module */ 18         /* Get the name of module */
18         function getModuleName(){ 19         function getModuleName(){
19                 return 'mod_catalog : 以相簿模式列出圖檔'; 20                 return 'mod_catalog : 以相簿模式列出圖檔';
20         } 21         }
21 22
22         /* Get the module version infomation */ 23         /* Get the module version infomation */
23         function getModuleVersionInfo(){ 24         function getModuleVersionInfo(){
24                 return '4th.Release.2 (v071109)'; -  
-   25                 return '4th.Release.3 (v130717)';
25         } 26         }
26 27
27         /* 自動掛載:頂部連結列 */ 28         /* 自動掛載:頂部連結列 */
28         function autoHookToplink(&$linkbar, $isReply){ 29         function autoHookToplink(&$linkbar, $isReply){
29                 global $PMS; 30                 global $PMS;
Line 32... Line 33...
32 33
33         /* 掛載樣式表 */ 34         /* 掛載樣式表 */
34         function hookHeadCSS(&$style, $isReply){ 35         function hookHeadCSS(&$style, $isReply){
35                 $style .= '<style type="text/css"> 36                 $style .= '<style type="text/css">
36 div.list { float: left; margin: 5px; width: '.MAX_RW.'px; height: '.MAX_RH.'px; } /* (相簿模式) div 框格設定 */ 37 div.list { float: left; margin: 5px; width: '.MAX_RW.'px; height: '.MAX_RH.'px; } /* (相簿模式) div 框格設定 */
-   38 div.list input { width:14px; height:14px; }
-   39 div.list .tools { position: absolute; overflow:hidden; width:18px; height:18px; }
-   40 div.list .tools-expend { position: absolute; overflow:hidden; width:auto; }
37 </style> 41 </style>
38 '; 42 ';
39         } 43         }
40 44
41         /* 模組獨立頁面 */ 45         /* 模組獨立頁面 */
42         function ModulePage(){ 46         function ModulePage(){
43                 global $PMS, $PIO, $FileIO; -  
-   47                 global $PTE, $PMS, $PIO, $FileIO;
44 48
45                 $thisPage = $PMS->getModulePageURL('mod_catalog'); // 基底位置 49                 $thisPage = $PMS->getModulePageURL('mod_catalog'); // 基底位置
46                 $dat = ''; // HTML Buffer 50                 $dat = ''; // HTML Buffer
47                 $listMax = $PIO->postCount(); // 文章總筆數 51                 $listMax = $PIO->postCount(); // 文章總筆數
48                 $pageMax = ceil($listMax / $this->CATALOG_NUMBER) - 1; // 分頁最大編號 52                 $pageMax = ceil($listMax / $this->CATALOG_NUMBER) - 1; // 分頁最大編號
49                 $page = isset($_GET['page']) ? intval($_GET['page']) : 0; // 目前所在分頁頁數 53                 $page = isset($_GET['page']) ? intval($_GET['page']) : 0; // 目前所在分頁頁數
50                 if($page < 0 || $page > $pageMax) exit('Page out of range.'); // $page 超過範圍 54                 if($page < 0 || $page > $pageMax) exit('Page out of range.'); // $page 超過範圍
51                 $plist = $PIO->fetchPostList(0, $this->CATALOG_NUMBER * $page, $this->CATALOG_NUMBER); // 取得定位正確的 N 筆資料號碼 -  
52                 $post = $PIO->fetchPosts($plist); // 取出資料 -  
-   55                 if(!$this->USE_SEARCH_CODE && !isset($_GET['search'])) {
-   56                         $plist = $PIO->fetchPostList(0, $this->CATALOG_NUMBER * $page, $this->CATALOG_NUMBER); // 取得定位正確的 N 筆資料號碼
-   57                         $post = $PIO->fetchPosts($plist); // 取出資料
-   58                 } else {
-   59                         $post = $PIO->searchPost(array('.'), 'ext', 'AND');
-   60                         $pageMax = ceil(count($post) / $this->CATALOG_NUMBER) - 1;
-   61                         $post = array_slice($post, $this->CATALOG_NUMBER * $page, $this->CATALOG_NUMBER);
-   62                 }
53                 $post_count = count($post); 63                 $post_count = count($post);
54 64
55                 $PMS->hookModuleMethod('Head', array(&$this, 'hookHeadCSS')); 65                 $PMS->hookModuleMethod('Head', array(&$this, 'hookHeadCSS'));
56                 head($dat); 66                 head($dat);
57                 $dat .= '<div id="contents"> 67                 $dat .= '<div id="contents">
58 [<a href="'.PHP_SELF2.'?'.time().'">回到版面</a>] 68 [<a href="'.PHP_SELF2.'?'.time().'">回到版面</a>]
59 <div class="bar_reply">相簿模式</div> -  
-   69 <div class="bar_reply">相簿模式'.(@$_GET['style']=='detail'?' <a href="'.$thisPage.($page?'&amp;page='.$page:'').(isset($_GET['search'])?'&amp;search':'').'&amp;style=simple">■</a>':' <a href="'.$thisPage.($page?'&amp;page='.$page:'').(isset($_GET['search'])?'&amp;search':'').'&amp;style=detail">≡</a>').'</div>
60 '; 70 ';
-   71                 if($_GET['style']=='detail'){
-   72                         $dat .= '<script>
-   73 function hover(obj,ishover){
-   74 if(ishover) obj.className="tools-expend";
-   75 else obj.className="tools";
-   76 }
-   77 </script>
-   78 <form action="'.PHP_SELF.'" method="post">';
-   79                 }
-   80
61                 // 逐步取資料 81                 // 逐步取資料
62                 for($i = 0; $i < $post_count; $i++){ 82                 for($i = 0; $i < $post_count; $i++){
63                         list($imgw, $imgh, $tw, $th, $tim, $ext) = array($post[$i]['imgw'], $post[$i]['imgh'],$post[$i]['tw'], $post[$i]['th'], $post[$i]['tim'], $post[$i]['ext']); -  
-   83                         list($no, $resto, $imgw, $imgh, $tw, $th, $tim, $ext, $now) = array($post[$i]['no'], $post[$i]['resto'], $post[$i]['imgw'], $post[$i]['imgh'],$post[$i]['tw'], $post[$i]['th'], $post[$i]['tim'], $post[$i]['ext'], $post[$i]['now']);
64                         if($FileIO->imageExists($tim.$ext)){ 84                         if($FileIO->imageExists($tim.$ext)){
65                                 $dat .= '<div class="list"><a href="'.$FileIO->getImageURL($tim.$ext).'" rel="_blank"><img src="'.$FileIO->getImageURL($tim.'s.jpg').'" style="'.$this->OptimizeImageWH($tw, $th).'" title="'.$imgw.'x'.$imgh.'" alt="'.$tim.$ext.'" /></a></div>'."\n"; -  
-   85                                 $dat .= '<div class="list">'.(@$_GET['style']=='detail'?'<div class="tools" onmouseover="hover(this,true)" onmouseout="hover(this,false)"><input type="checkbox" name="'.$no.'" value="delete" /><a href="'.PHP_SELF.'?res='.($resto?$resto:$no).'#r'.$no.'">†</a></div>':'').'<a href="'.$FileIO->getImageURL($tim.$ext).'" rel="_blank"><img src="'.$FileIO->getImageURL($tim.'s.jpg').'" style="'.$this->OptimizeImageWH($tw, $th).'" title="'.(@$_GET['style']=='detail'?'No.'.$no.($resto?'('.$resto.')':'').' '.$now.' ':'').$imgw.'x'.$imgh.'" alt="'.$tim.$ext.'" /></a></div>'."\n";
66                         } 86                         }
67                 } 87                 }
68 88
69                 $dat .= '</div> -  
-   89                 $dat .= '</div><hr />';
-   90
-   91                 if(@$_GET['style']=='detail') {
-   92                         $adminMode = adminAuthenticate('check'); // 前端管理模式
-   93                         $adminFunc = ''; // 前端管理選擇
-   94                         if($adminMode){
-   95                                 $adminFunc = '<select name="func"><option value="delete">'._T('admin_delete').'</option>';
-   96                                 $funclist = array();
-   97                                 $dummy = '';
-   98                                 $PMS->useModuleMethods('AdminFunction', array('add', &$funclist, null, &$dummy)); // "AdminFunction" Hook Point
-   99                                 foreach($funclist as $f) $adminFunc .= '<option value="'.$f[0].'">'.$f[1].'</option>'."\n";
-   100                                 $adminFunc .= '</select>';
-   101                         }
-   102
-   103                         $pte_vals = array('{$DEL_HEAD_TEXT}' => '<input type="hidden" name="mode" value="usrdel" />'._T('del_head'),
-   104                                 '{$DEL_IMG_ONLY_FIELD}' => '<input type="checkbox" name="onlyimgdel" id="onlyimgdel" value="on" />',
-   105                                 '{$DEL_IMG_ONLY_TEXT}' => _T('del_img_only'),
-   106                                 '{$DEL_PASS_TEXT}' => ($adminMode ? $adminFunc : '')._T('del_pass'),
-   107                                 '{$DEL_PASS_FIELD}' => '<input type="password" name="pwd" size="8" value="" />',
-   108                                 '{$DEL_SUBMIT_BTN}' => '<input type="submit" value="'._T('del_btn').'" />');
-   109                         $dat .= $PTE->ParseBlock('DELFORM', $pte_vals).'</form>';
-   110                 }
70 111
71 <hr /> -  
-   112                 $dat .= '
72 113
73 <div id="page_switch"> 114 <div id="page_switch">
74 <table border="1" style="float: left;"><tr> 115 <table border="1" style="float: left;"><tr>
75 '; 116 ';
76                 if($page) $dat .= '<td><a href="'.$thisPage.'&amp;page='.($page - 1).'">上一頁</a></td>'; -  
-   117                 if($page) $dat .= '<td><a href="'.$thisPage.'&amp;page='.($page - 1).(@$_GET['style']=='detail'?'&amp;style=detail':'').(isset($_GET['search'])?'&amp;search':'').'">上一頁</a></td>';
77                 else $dat .= '<td style="white-space: nowrap;">第一頁</td>'; 118                 else $dat .= '<td style="white-space: nowrap;">第一頁</td>';
78                 $dat .= '<td>'; 119                 $dat .= '<td>';
79                 for($i = 0; $i <= $pageMax; $i++){ 120                 for($i = 0; $i <= $pageMax; $i++){
80                         if($i==$page) $dat .= '[<b>'.$i.'</b>] '; 121                         if($i==$page) $dat .= '[<b>'.$i.'</b>] ';
81                         else $dat .= '[<a href="'.$thisPage.'&amp;page='.$i.'">'.$i.'</a>] '; -  
-   122                         else $dat .= '[<a href="'.$thisPage.'&amp;page='.$i.(@$_GET['style']=='detail'?'&amp;style=detail':'').(isset($_GET['search'])?'&amp;search':'').'">'.$i.'</a>] ';
82                 } 123                 }
83                 $dat .= '</td>'; 124                 $dat .= '</td>';
84                 if($page < $pageMax) $dat .= '<td><a href="'.$thisPage.'&amp;page='.($page + 1).'">下一頁</a></td>'; -  
-   125                 if($page < $pageMax) $dat .= '<td><a href="'.$thisPage.'&amp;page='.($page + 1).(@$_GET['style']=='detail'?'&amp;style=detail':'').(isset($_GET['search'])?'&amp;search':'').'">下一頁</a></td>';
85                 else $dat .= '<td style="white-space: nowrap;">最後一頁</td>'; 126                 else $dat .= '<td style="white-space: nowrap;">最後一頁</td>';
86                 $dat .= ' 127                 $dat .= '
87 </tr></table> 128 </tr></table>
88 </div> 129 </div>
89 130