Dotclear

Changeset 225:411ee50a8664


Ignore:
Timestamp:
05/09/11 13:30:40 (13 years ago)
Author:
Dsls <dsls@…>
Branch:
formfilters
Message:

New branch formfilters, starting work on generic filters on admin side.

Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • admin/posts.php

    r158 r225  
    4848     # Filter form we'll put in html_block 
    4949     $users_combo = $categories_combo = array(); 
    50      $users_combo['-'] = $categories_combo['-'] = ''; 
    5150     while ($users->fetch()) 
    5251     { 
     
    6968      
    7069     $status_combo = array( 
    71      '-' => '' 
    7270     ); 
    7371     foreach ($core->blog->getAllPostStatus() as $k => $v) { 
     
    7674      
    7775     $selected_combo = array( 
    78      '-' => '', 
    7976     __('selected') => '1', 
    8077     __('not selected') => '0' 
     
    8279      
    8380     # Months array 
    84      $dt_m_combo['-'] = ''; 
    8581     while ($dates->fetch()) { 
    8682          $dt_m_combo[dt::str('%B %Y',$dates->ts())] = $dates->year().$dates->month(); 
    8783     } 
    8884      
    89      $lang_combo['-'] = ''; 
    9085     while ($langs->fetch()) { 
    9186          $lang_combo[$langs->post_lang] = $langs->post_lang; 
     
    138133/* Get posts 
    139134-------------------------------------------------------- */ 
    140 $user_id = !empty($_GET['user_id']) ?   $_GET['user_id'] : ''; 
    141 $cat_id = !empty($_GET['cat_id']) ?     $_GET['cat_id'] : ''; 
    142 $status = isset($_GET['status']) ? $_GET['status'] : ''; 
    143 $selected = isset($_GET['selected']) ?  $_GET['selected'] : ''; 
    144 $month = !empty($_GET['month']) ?       $_GET['month'] : ''; 
    145 $lang = !empty($_GET['lang']) ?         $_GET['lang'] : ''; 
    146 $sortby = !empty($_GET['sortby']) ?     $_GET['sortby'] : 'post_dt'; 
    147 $order = !empty($_GET['order']) ?       $_GET['order'] : 'desc'; 
    148  
    149 $show_filters = false; 
    150  
    151135$page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1; 
    152136$nb_per_page =  30; 
     
    159143} 
    160144 
     145$params = new ArrayObject(); 
    161146$params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page); 
    162147$params['no_content'] = true; 
    163148 
    164 # - User filter 
    165 if ($user_id !== '' && in_array($user_id,$users_combo)) { 
    166      $params['user_id'] = $user_id; 
    167      $show_filters = true; 
    168 } 
    169  
    170 # - Categories filter 
    171 if ($cat_id !== '' && in_array($cat_id,$categories_combo)) { 
    172      $params['cat_id'] = $cat_id; 
    173      $show_filters = true; 
    174 } 
    175  
    176 # - Status filter 
    177 if ($status !== '' && in_array($status,$status_combo)) { 
    178      $params['post_status'] = $status; 
    179      $show_filters = true; 
    180 } 
    181  
    182 # - Selected filter 
    183 if ($selected !== '' && in_array($selected,$selected_combo)) { 
    184      $params['post_selected'] = $selected; 
    185      $show_filters = true; 
    186 } 
    187  
    188 # - Month filter 
    189 if ($month !== '' && in_array($month,$dt_m_combo)) { 
    190      $params['post_month'] = substr($month,4,2); 
    191      $params['post_year'] = substr($month,0,4); 
    192      $show_filters = true; 
    193 } 
    194  
    195 # - Lang filter 
    196 if ($lang !== '' && in_array($lang,$lang_combo)) { 
    197      $params['post_lang'] = $lang; 
    198      $show_filters = true; 
    199 } 
    200  
    201 # - Sortby and order filter 
    202 if ($sortby !== '' && in_array($sortby,$sortby_combo)) { 
    203      if ($order !== '' && in_array($order,$order_combo)) { 
    204           $params['order'] = $sortby.' '.$order; 
    205      } 
    206       
    207      if ($sortby != 'post_dt' || $order != 'desc') { 
    208           $show_filters = true; 
    209      } 
    210 } 
     149$filterSet = new dcFilterSet('posts.php'); 
     150class monthComboFilter extends comboFilter { 
     151     public function applyFilter($params) { 
     152          $month=$this->values[0]; 
     153          $params['post_month'] = substr($month,4,2); 
     154          $params['post_year'] = substr($month,0,4); 
     155     } 
     156} 
     157$filterSet 
     158     ->addFilter(new comboFilter( 
     159          'users',__('Author'), 'user', $users_combo)) 
     160     ->addFilter(new comboFilter( 
     161          'category',__('Category'), 'cat_id', $categories_combo)) 
     162     ->addFilter(new comboFilter( 
     163          'post_status',__('Status'), 'post_status', $status_combo,array('singleval' => 1))) 
     164     ->addFilter(new comboFilter( 
     165          'post_selected',__('Selected'), 'post_selected', $selected_combo)) 
     166     ->addFilter(new comboFilter( 
     167          'lang',__('Lang'), 'post_lang', $lang_combo)) 
     168     ->addFilter(new monthComboFilter( 
     169          'month',__('Month'), 'post_month', $dt_m_combo,array('singleval' => 1))) 
     170     ->addFilter(new valueFilter( 
     171          'title',__('Title contains'),"post_title",25,100)); 
     172$filterSet->setValues($_GET); 
    211173 
    212174# Get posts 
    213175try { 
     176     $nfparams = $params->getArrayCopy(); 
     177     $filtered = $filterSet->applyFilters($params); 
    214178     $posts = $core->blog->getPosts($params); 
    215179     $counter = $core->blog->getPosts($params,true); 
     180     if ($filtered) { 
     181          $totalcounter = $core->blog->getPosts($nfparams,true); 
     182          $page_title = sprintf(__('Entries / %s filtered out of %s'),$counter->f(0),$totalcounter->f(0)); 
     183     } else { 
     184          $page_title = __('Entries'); 
     185     } 
    216186     $post_list = new adminPostList($core,$posts,$counter->f(0)); 
    217187} catch (Exception $e) { 
     
    222192-------------------------------------------------------- */ 
    223193$starting_script = dcPage::jsLoad('js/_posts_list.js'); 
    224 if (!$show_filters) { 
    225      $starting_script .= dcPage::jsLoad('js/filter-controls.js'); 
    226 } 
     194 
     195$starting_script = $filterSet->header(); 
    227196 
    228197dcPage::open(__('Entries'),$starting_script); 
     
    231200{ 
    232201     echo  
    233      '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.__('Entries').'</h2>'. 
     202     '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.$page_title.'</h2>'. 
    234203     '<p class="top-add"><a class="button add" href="post.php">'.__('New entry').'</a></p>'; 
    235       
    236      if (!$show_filters) { 
    237           echo '<p><a id="filter-control" class="form-control" href="#">'. 
    238           __('Filters').'</a></p>'; 
    239      } 
    240       
    241      echo 
    242      '<form action="posts.php" method="get" id="filters-form">'. 
    243      '<fieldset><legend>'.__('Filters').'</legend>'. 
    244      '<div class="three-cols">'. 
    245      '<div class="col">'. 
    246      '<label for="user_id">'.__('Author:'). 
    247      form::combo('user_id',$users_combo,$user_id).'</label> '. 
    248      '<label for="cat_id">'.__('Category:'). 
    249      form::combo('cat_id',$categories_combo,$cat_id).'</label> '. 
    250      '<label for="status">'.__('Status:'). 
    251      form::combo('status',$status_combo,$status).'</label> '. 
    252      '</div>'. 
    253       
    254      '<div class="col">'. 
    255      '<label for="selected">'.__('Selected:'). 
    256      form::combo('selected',$selected_combo,$selected).'</label> '. 
    257      '<label for="month">'.__('Month:'). 
    258      form::combo('month',$dt_m_combo,$month).'</label> '. 
    259      '<label for="lang">'.__('Lang:'). 
    260      form::combo('lang',$lang_combo,$lang).'</label> '. 
    261      '</div>'. 
    262       
    263      '<div class="col">'. 
    264      '<p><label for="sortby">'.__('Order by:'). 
    265      form::combo('sortby',$sortby_combo,$sortby).'</label> '. 
    266      '<label for="order">'.__('Sort:'). 
    267      form::combo('order',$order_combo,$order).'</label></p>'. 
    268      '<p><label for="nb" class="classic">'.  form::field('nb',3,3,$nb_per_page).' '. 
    269      __('Entries per page').'</label></p> '. 
    270      '<p><input type="submit" value="'.__('Apply filters').'" /></p>'. 
    271      '</div>'. 
    272      '</div>'. 
    273      '<br class="clear" />'. //Opera sucks 
    274      '</fieldset>'. 
    275      '</form>'; 
    276       
     204 
     205     $filterSet->display(); 
     206 
    277207     # Show posts 
    278208     $post_list->display($page,$nb_per_page, 
     
    287217     form::combo('action',$combo_action). 
    288218     '<input type="submit" value="'.__('ok').'" /></p>'. 
    289      form::hidden(array('user_id'),$user_id). 
    290      form::hidden(array('cat_id'),$cat_id). 
    291      form::hidden(array('status'),$status). 
    292      form::hidden(array('selected'),$selected). 
    293      form::hidden(array('month'),$month). 
    294      form::hidden(array('lang'),$lang). 
    295      form::hidden(array('sortby'),$sortby). 
    296      form::hidden(array('order'),$order). 
    297      form::hidden(array('page'),$page). 
    298      form::hidden(array('nb'),$nb_per_page). 
     219     $filterSet->getFormFieldsAsHidden(). 
    299220     $core->formNonce(). 
    300221     '</div>'. 
  • admin/style/default.css

    r217 r225  
    10801080label input, label select, label span { 
    10811081     display: block; 
     1082} 
     1083#filters-form label { 
     1084     display: inline; 
    10821085} 
    10831086p.form-note { 
     
    13001303     background-color: #2373A8; 
    13011304} 
     1305 
     1306form#filters {font-size: 100%; background: #f0f0f0; padding: 1em; border-radius: .5em; border: 1px solid #ddd;} 
     1307form#filters .margintop {padding-top: 1.33em;} 
     1308form#filters ul {list-style-type:none;margin: 0; padding: 0; margin-left: 1em;} 
     1309form#filters .col30 {border-left: 1px solid #999;} 
     1310form#filters .col30 h3 {margin-left: 1em;} 
     1311.line { position: relative; padding: 3px 0 0 28px; margin: 0 0 1em 0;} 
     1312.line input[type=submit] {position: absolute; left:0;top:0; padding: 0 .1em; margin: 0;} 
     1313.line input[type=checkbox] {position: absolute; left: 0; top: .2em; padding: 0 .1em; margin: 0;} 
     1314.line select { margin-right: 2em;} 
     1315.line label { display: block; width: 8em; float: left;} 
     1316.line label img {margin-right: 8px;} 
     1317.line label.or { 
     1318     text-align: right; 
     1319     margin-left: 5em; 
     1320     font-weight: bold; 
     1321} 
     1322.line label.or + select {margin-left: 2em;} 
     1323li.line { padding: 0 0 0 20px; height: 1em;} 
     1324li.line label {width: auto;} 
     1325#available_filters input[type=submit] {padding: 0 .1em; margin-left: .5em;} 
  • inc/prepend.php

    r9 r225  
    4141$__autoload['dcCategories']             = dirname(__FILE__).'/core/class.dc.categories.php'; 
    4242$__autoload['dcError']                  = dirname(__FILE__).'/core/class.dc.error.php'; 
     43$__autoload['dcGenericMeta']       = dirname(__FILE__).'/core/class.dc.genmeta.php'; 
    4344$__autoload['dcMeta']                   = dirname(__FILE__).'/core/class.dc.meta.php'; 
     45$__autoload['dcUserMeta']                    = dirname(__FILE__).'/core/class.dc.usermeta.php'; 
    4446$__autoload['dcMedia']                  = dirname(__FILE__).'/core/class.dc.media.php'; 
    4547$__autoload['dcModules']                = dirname(__FILE__).'/core/class.dc.modules.php'; 
     
    6870$__autoload['adminCommentList']         = dirname(__FILE__).'/admin/lib.pager.php'; 
    6971$__autoload['adminUserList']            = dirname(__FILE__).'/admin/lib.pager.php'; 
     72$__autoload['dcFilterSet'] =  dirname(__FILE__).'/admin/class.dc.filter.php'; 
     73$__autoload['dcFilter'] =  dirname(__FILE__).'/admin/class.dc.filter.php'; 
    7074 
    7175$__autoload['dcTemplate']               = dirname(__FILE__).'/public/class.dc.template.php'; 
     
    118122# Constants 
    119123define('DC_ROOT',path::real(dirname(__FILE__).'/..')); 
    120 define('DC_VERSION','2.3.0-dev'); 
     124define('DC_VERSION','2.3.1'); 
    121125define('DC_DIGESTS',dirname(__FILE__).'/digests'); 
    122126define('DC_L10N_ROOT',dirname(__FILE__).'/../locales'); 
Note: See TracChangeset for help on using the changeset viewer.

Sites map