Dotclear

Changeset 884:7d0472c14d9d for plugins


Ignore:
Timestamp:
10/05/12 12:57:46 (13 years ago)
Author:
franck <carnet.franck.paul@…>
Branch:
formfilters
Message:

Mise en place filtres sur le plugin Pages, step 1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins/pages/list.php

    r782 r884  
    1111# -- END LICENSE BLOCK ----------------------------------------- 
    1212if (!defined('DC_CONTEXT_ADMIN')) { return; } 
     13 
    1314dcPage::check('pages,contentadmin'); 
    1415 
    15 /* Pager class 
    16 -------------------------------------------------------- */ 
    17 class adminPageList extends adminPostList 
     16class adminPageList extends adminItemsList 
    1817{ 
    1918     public function setColumns() 
    2019     { 
    21           $this->addColumn('title',__('Title'),array('adminPostList','getTitle'),' class="maximal"',false); 
    22           $this->addColumn('date',__('Date'),array('adminPostList','getDate')); 
    23           $this->addColumn('author',__('Author'),array('adminPostList','getAuthor')); 
    24           $this->addColumn('comment',__('Comments'),array('adminPostList','getComments')); 
    25           $this->addColumn('trackback',__('Trackbacks'),array('adminPostList','getTrackbacks')); 
    26           $this->addColumn('status',__('Status'),array('adminPostList','getStatus')); 
     20          $this->addColumn('title','post_title',__('Title'),array('adminPostList','getTitle'),array('class' => array('maximal')),true,true,false); 
     21          $this->addColumn('date','post_dt',__('Date'),array('adminPostList','getDate')); 
     22          $this->addColumn('datetime','post_dt',__('Date and time'),array('adminPostList','getDateTime')); 
     23          $this->addColumn('author','user_id',__('Author'),array('adminPostList','getAuthor')); 
     24          $this->addColumn('comments','nb_comment',__('Comments'),array('adminPostList','getComments')); 
     25          $this->addColumn('trackbacks','nb_trackback',__('Trackbacks'),array('adminPostList','getTrackbacks')); 
     26          $this->addColumn('status','post_status',__('Status'),array('adminPostList','getStatus')); 
     27          $this->default_sortby = 'datetime'; 
     28          $this->default_order = 'desc'; 
     29 
    2730     } 
    2831      
     
    3134          return __('Pages list'); 
    3235     } 
    33 } 
    34  
    35 /* Getting pages 
    36 -------------------------------------------------------- */ 
    37 $params = array( 
    38      'post_type' => 'page' 
    39 ); 
    40  
    41 $page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1; 
    42 $nb_per_page =  30; 
    43  
    44 if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) { 
    45      $nb_per_page = (integer) $_GET['nb']; 
    46 } 
    47  
    48 $params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page); 
    49 $params['no_content'] = true; 
    50 $params['order'] = 'post_position ASC, post_title ASC'; 
    51  
    52 try { 
    53      $pages = $core->blog->getPosts($params); 
    54      $counter = $core->blog->getPosts($params,true); 
    55      $post_list = new adminPageList($core,$pages,$counter->f(0)); 
    56 } catch (Exception $e) { 
    57      $core->error->add($e->getMessage()); 
     36      
     37     protected function getDefaultLine() 
     38     { 
     39          return 
     40          '<tr class="line'.($this->rs->post_status != 1 ? ' offline' : '').'"'. 
     41          ' id="p'.$this->rs->post_id.'">%s</tr>'; 
     42     } 
     43      
     44     protected function getTitle() 
     45     { 
     46          return 
     47          '<th scope="row" class="maximal">'. 
     48          form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable()).'&nbsp;'. 
     49          '<a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'">'. 
     50          html::escapeHTML($this->rs->post_title).'</a></th>'; 
     51     } 
     52      
     53     protected function getDate() 
     54     { 
     55          return '<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d'),$this->rs->post_dt).'</td>'; 
     56     } 
     57      
     58     protected function getDateTime() 
     59     { 
     60          return '<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->post_dt).'</td>'; 
     61     } 
     62      
     63     protected function getAuthor() 
     64     { 
     65          return '<td class="nowrap">'.$this->rs->user_id.'</td>'; 
     66     } 
     67      
     68     protected function getComments() 
     69     { 
     70          return '<td class="nowrap">'.$this->rs->nb_comment.'</td>'; 
     71     } 
     72      
     73     protected function getTrackbacks() 
     74     { 
     75          return '<td class="nowrap">'.$this->rs->nb_trackback.'</td>'; 
     76     } 
     77      
     78     protected function getStatus() 
     79     { 
     80          $img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />'; 
     81          switch ($this->rs->post_status) { 
     82               case 1: 
     83                    $img_status = sprintf($img,__('published'),'check-on.png'); 
     84                    break; 
     85               case 0: 
     86                    $img_status = sprintf($img,__('unpublished'),'check-off.png'); 
     87                    break; 
     88               case -1: 
     89                    $img_status = sprintf($img,__('scheduled'),'scheduled.png'); 
     90                    break; 
     91               case -2: 
     92                    $img_status = sprintf($img,__('pending'),'check-wrn.png'); 
     93                    break; 
     94          } 
     95           
     96          $protected = ''; 
     97          if ($this->rs->post_password) { 
     98               $protected = sprintf($img,__('protected'),'locker.png'); 
     99          } 
     100           
     101          $attach = ''; 
     102          $nb_media = $this->rs->countMedia(); 
     103          if ($nb_media > 0) { 
     104               $attach_str = $nb_media == 1 ? __('%d attachment') : __('%d attachments'); 
     105               $attach = sprintf($img,sprintf($attach_str,$nb_media),'attach.png'); 
     106          } 
     107           
     108          return '<td class="nowrap status">'.$img_status.' '.$protected.' '.$attach.'</td>'; 
     109     } 
     110} 
     111 
     112 
     113# Getting authors 
     114try { 
     115     $users = $core->blog->getPostsUsers('page'); 
     116} catch (Exception $e) { 
     117     $core->error->add($e->getMessage()); 
     118} 
     119 
     120# Getting dates 
     121try { 
     122     $dates = $core->blog->getDates(array('type'=>'month','post_type'=>'page')); 
     123} catch (Exception $e) { 
     124     $core->error->add($e->getMessage()); 
     125} 
     126 
     127# Getting langs 
     128try { 
     129     $langs = $core->blog->getLangs(array('post_type'=>'page')); 
     130} catch (Exception $e) { 
     131     $core->error->add($e->getMessage()); 
     132} 
     133 
     134# Creating filter combo boxes 
     135if (!$core->error->flag()) 
     136{ 
     137     # Filter form we'll put in html_block 
     138     $users_combo = array(); 
     139     while ($users->fetch()) 
     140     { 
     141          $user_cn = dcUtils::getUserCN($users->user_id,$users->user_name, 
     142          $users->user_firstname,$users->user_displayname); 
     143           
     144          if ($user_cn != $users->user_id) { 
     145               $user_cn .= ' ('.$users->user_id.')'; 
     146          } 
     147           
     148          $users_combo[$user_cn] = $users->user_id;  
     149     } 
     150      
     151     $status_combo = array( 
     152     ); 
     153     foreach ($core->blog->getAllPostStatus() as $k => $v) { 
     154          $status_combo[$v] = (string) $k; 
     155     } 
     156      
     157     # Months array 
     158     while ($dates->fetch()) { 
     159          $dt_m_combo[dt::str('%B %Y',$dates->ts())] = $dates->year().$dates->month(); 
     160     } 
     161      
     162     while ($langs->fetch()) { 
     163          $lang_combo[$langs->post_lang] = $langs->post_lang; 
     164     } 
    58165} 
    59166 
     
    62169if ($core->auth->check('publish,contentadmin',$core->blog->id)) 
    63170{ 
    64      $combo_action[__('publish')] = 'publish'; 
    65      $combo_action[__('unpublish')] = 'unpublish'; 
    66      $combo_action[__('schedule')] = 'schedule'; 
    67      $combo_action[__('mark as pending')] = 'pending'; 
    68 } 
    69 if ($core->auth->check('admin',$core->blog->id)) { 
    70      $combo_action[__('change author')] = 'author'; 
     171     $combo_action[__('Status')] = array( 
     172          __('Publish') => 'publish', 
     173          __('Unpublish') => 'unpublish', 
     174          __('Schedule') => 'schedule', 
     175          __('Mark as pending') => 'pending' 
     176     ); 
     177} 
     178if ($core->auth->check('admin',$core->blog->id)) 
     179{ 
     180     $combo_action[__('Change')] = array(__('Change author') => 'author'); 
    71181} 
    72182if ($core->auth->check('delete,contentadmin',$core->blog->id)) 
    73183{ 
    74      $combo_action[__('delete')] = 'delete'; 
     184     $combo_action[__('Delete')] = array(__('Delete') => 'delete'); 
    75185} 
    76186 
    77187# --BEHAVIOR-- adminPagesActionsCombo 
    78188$core->callBehavior('adminPagesActionsCombo',array(&$combo_action)); 
     189 
     190 
     191/* Get posts 
     192-------------------------------------------------------- */ 
     193$post_list = new adminPageList($core); 
     194 
     195$params = new ArrayObject(); 
     196$params['post_type'] = 'page'; 
     197$params['no_content'] = true; 
     198 
     199$filterSet = new dcFilterSet('pages',$p_url); 
     200class monthComboFilter extends comboFilter { 
     201     public function applyFilter($params) { 
     202          $month=$this->values[0]; 
     203          $params['post_month'] = substr($month,4,2); 
     204          $params['post_year'] = substr($month,0,4); 
     205     } 
     206} 
     207$filterSet 
     208     ->addFilter(new comboFilter( 
     209          'users',__('Author'), __('Author'), 'user_id', $users_combo)) 
     210     ->addFilter(new comboFilter( 
     211          'post_status',__('Status'), __('Status'), 'post_status', $status_combo)) 
     212     ->addFilter(new comboFilter( 
     213          'lang',__('Lang'), __('Lang'), 'post_lang', $lang_combo)) 
     214     ->addFilter(new monthComboFilter( 
     215          'month',__('Month'),__('Month'), 'post_month', $dt_m_combo,array('singleval' => 1))) 
     216     ->addFilter(new textFilter( 
     217          'search',__('Contains'),__('The page contains'), 'search',20,255)); 
     218 
     219$core->callBehavior('adminPagesFilters',$filterSet); 
     220$filterSet->setExtra($post_list); 
     221 
     222$filterSet->setup($_GET,$_POST); 
     223 
     224# Get pages 
     225try { 
     226     $nfparams = $params->getArrayCopy(); 
     227     $filtered = $filterSet->applyFilters($params); 
     228     $core->callBehavior('adminPostsParams',$params); 
     229     $posts = $core->blog->getPosts($params); 
     230     $counter = $core->blog->getPosts($params,true); 
     231     if ($filtered) { 
     232          $totalcounter = $core->blog->getPosts($nfparams,true); 
     233          $page_title = sprintf(__('Pages / %s filtered out of %s'),$counter->f(0),$totalcounter->f(0)); 
     234     } else { 
     235          $page_title = __('Pages'); 
     236          $filters_info = ''; 
     237     } 
     238     $post_list->setItems($posts,$counter->f(0)); 
     239} catch (Exception $e) { 
     240     $core->error->add($e->getMessage()); 
     241} 
     242 
    79243 
    80244/* Display 
     
    90254  //]]> 
    91255  </script> 
     256<?php 
     257echo $filterSet->header(); 
     258?> 
    92259</head> 
    93260 
    94261<body> 
    95262<?php 
    96 echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Pages').'</span></h2>'. 
    97 '<p class="top-add"><a class="button add" href="'.$p_url.'&amp;act=page">'.__('New page').'</a></p>'; 
    98  
    99263if (!$core->error->flag()) 
    100264{ 
     265     echo  
     266     '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Pages').'</span></h2>'. 
     267     '<p class="top-add"><a class="button add" href="'.$p_url.'&amp;act=page">'.__('New page').'</a></p>'; 
     268 
     269     $filterSet->display(); 
    101270     # Show pages 
    102      $post_list->display($page,$nb_per_page, 
    103      '<form action="posts_actions.php" method="post" id="form-entries">'. 
     271     $post_list->display('<form action="posts_actions.php" method="post" id="form-entries">'. 
    104272      
    105273     '%s'. 
     
    111279     form::combo('action',$combo_action). 
    112280     '<input type="submit" value="'.__('ok').'" /></p>'. 
    113      form::hidden(array('post_type'),'page'). 
    114      form::hidden(array('redir'),html::escapeHTML($_SERVER['REQUEST_URI'])). 
     281     str_replace('%','%%',$filterSet->getFormFieldsAsHidden()). 
    115282     $core->formNonce(). 
    116283     '</div>'. 
    117      '</form>'); 
    118 } 
     284     '</form>' 
     285     ); 
     286} 
     287 
    119288dcPage::helpBlock('pages'); 
    120289?> 
Note: See TracChangeset for help on using the changeset viewer.

Sites map