Changeset 1492:a7112dcc916c for admin/posts.php
- Timestamp:
- 08/20/13 11:01:52 (12 years ago)
- Branch:
- twig
- Parents:
- 1491:2b9253624dbe (diff), 1486:602b24e80834 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
admin/posts.php
r1476 r1492 4 4 # This file is part of Dotclear 2. 5 5 # 6 # Copyright (c) 2003-201 3Olivier Meunier & Association Dotclear6 # Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear 7 7 # Licensed under the GPL version 2.0 license. 8 8 # See LICENSE file or … … 12 12 13 13 require dirname(__FILE__).'/../inc/admin/prepend.php'; 14 14 global $_ctx; 15 15 dcPage::check('usage,contentadmin'); 16 16 … … 48 48 # Filter form we'll put in html_block 49 49 $users_combo = $categories_combo = array(); 50 $users_combo['-'] = $categories_combo['-'] = '';51 50 while ($users->fetch()) 52 51 { … … 61 60 } 62 61 63 $categories_combo[__('None')] = 'NULL'; 62 63 # Getting categories 64 $categories_combo = array(); 65 try { 66 $categories = $core->blog->getCategories(array('post_type'=>'post')); 64 67 while ($categories->fetch()) { 65 $categories_combo[str_repeat(' ',$categories->level-1).($categories->level-1 == 0 ? '' : '• '). 66 html::escapeHTML($categories->cat_title). 67 ' ('.$categories->nb_post.')'] = $categories->cat_id; 68 $categories_combo[$categories->cat_id] = 69 str_repeat(' ',$categories->level-1). 70 ($categories->level-1 == 0 ? '' : '• '). 71 html::escapeHTML($categories->cat_title); 68 72 } 69 73 } catch (Exception $e) { } 70 74 $status_combo = array( 71 '-' => ''72 75 ); 73 76 foreach ($core->blog->getAllPostStatus() as $k => $v) { 74 $status_combo[ $v] = (string) $k;77 $status_combo[(string) $k] = (string)$v; 75 78 } 76 79 77 80 $selected_combo = array( 78 '-' => '', 79 __('Selected') => '1', 80 __('Not selected') => '0' 81 '1' => __('is selected'), 82 '0' => __('is not selected') 81 83 ); 82 84 83 85 # Months array 84 $dt_m_combo['-'] = '';85 86 while ($dates->fetch()) { 86 $dt_m_combo[ dt::str('%B %Y',$dates->ts())] = $dates->year().$dates->month();87 $dt_m_combo[$dates->year().$dates->month()] = dt::str('%B %Y',$dates->ts()); 87 88 } 88 89 89 $lang_combo['-'] = '';90 90 while ($langs->fetch()) { 91 91 $lang_combo[$langs->post_lang] = $langs->post_lang; 92 92 } 93 94 $sortby_combo = array(95 __('Date') => 'post_dt',96 __('Title') => 'post_title',97 __('Category') => 'cat_title',98 __('Author') => 'user_id',99 __('Status') => 'post_status',100 __('Selected') => 'post_selected'101 );102 103 $order_combo = array(104 __('Descending') => 'desc',105 __('Ascending') => 'asc'106 );107 93 } 94 $form = new dcForm($core,'post','post.php'); 95 108 96 109 97 # Actions combo box … … 138 126 $core->callBehavior('adminPostsActionsCombo',array(&$combo_action)); 139 127 140 /* Get posts141 -------------------------------------------------------- */142 $user_id = !empty($_GET['user_id']) ? $_GET['user_id'] : '';143 $cat_id = !empty($_GET['cat_id']) ? $_GET['cat_id'] : '';144 $status = isset($_GET['status']) ? $_GET['status'] : '';145 $selected = isset($_GET['selected']) ? $_GET['selected'] : '';146 $month = !empty($_GET['month']) ? $_GET['month'] : '';147 $lang = !empty($_GET['lang']) ? $_GET['lang'] : '';148 $sortby = !empty($_GET['sortby']) ? $_GET['sortby'] : 'post_dt';149 $order = !empty($_GET['order']) ? $_GET['order'] : 'desc';150 128 151 $show_filters = false;152 129 153 $page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1; 154 $nb_per_page = 30; 155 156 if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) { 157 if ($nb_per_page != $_GET['nb']) { 158 $show_filters = true; 130 class monthdcFilterCombo extends dcFilterCombo { 131 public function applyFilter($params) { 132 $month=$this->avalues['values'][0]; 133 $params['post_month'] = substr($month,4,2); 134 $params['post_year'] = substr($month,0,4); 159 135 } 160 $nb_per_page = (integer) $_GET['nb'];161 136 } 162 137 163 $params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page); 164 $params['no_content'] = true; 138 class PostsFetcher extends dcListFetcher { 165 139 166 # - User filter 167 if ($user_id !== '' && in_array($user_id,$users_combo)) { 168 $params['user_id'] = $user_id; 169 $show_filters = true; 170 } else { 171 $user_id=''; 172 } 140 public function getEntries($params,$offset,$limit) { 141 $params['limit'] = array($offset,$limit); 142 return $this->core->blog->getPosts($params); 143 } 173 144 174 # - Categories filter 175 if ($cat_id !== '' && in_array($cat_id,$categories_combo)) { 176 $params['cat_id'] = $cat_id; 177 $show_filters = true; 178 } else { 179 $cat_id=''; 180 } 181 182 # - Status filter 183 if ($status !== '' && in_array($status,$status_combo)) { 184 $params['post_status'] = $status; 185 $show_filters = true; 186 } else { 187 $status=''; 188 } 189 190 # - Selected filter 191 if ($selected !== '' && in_array($selected,$selected_combo)) { 192 $params['post_selected'] = $selected; 193 $show_filters = true; 194 } else { 195 $selected=''; 196 } 197 198 # - Month filter 199 if ($month !== '' && in_array($month,$dt_m_combo)) { 200 $params['post_month'] = substr($month,4,2); 201 $params['post_year'] = substr($month,0,4); 202 $show_filters = true; 203 } else { 204 $month=''; 205 } 206 207 # - Lang filter 208 if ($lang !== '' && in_array($lang,$lang_combo)) { 209 $params['post_lang'] = $lang; 210 $show_filters = true; 211 } else { 212 $lang=''; 213 } 214 215 # - Sortby and order filter 216 if ($sortby !== '' && in_array($sortby,$sortby_combo)) { 217 if ($order !== '' && in_array($order,$order_combo)) { 218 $params['order'] = $sortby.' '.$order; 219 } else { 220 $order='desc'; 145 public function getEntriesCount($params) { 146 $count = $this->core->blog->getPosts($params,true); 147 return $count->f(0); 221 148 } 222 223 if ($sortby != 'post_dt' || $order != 'desc') {224 $show_filters = true;225 }226 } else {227 $sortby='post_dt';228 $order='desc';229 }230 231 # Get posts232 try {233 $posts = $core->blog->getPosts($params);234 $counter = $core->blog->getPosts($params,true);235 $post_list = new adminPostList($core,$posts,$counter->f(0));236 } catch (Exception $e) {237 $core->error->add($e->getMessage());238 149 } 239 150 240 151 /* DISPLAY 241 152 -------------------------------------------------------- */ 242 $starting_script = dcPage::jsLoad('js/_posts_list.js'); 243 if (!$show_filters) { 244 $starting_script .= dcPage::jsLoad('js/filter-controls.js'); 245 } 153 $filterSet = new dcFilterSet($core,'fposts','posts.php'); 246 154 247 dcPage::open(__('Entries'),$starting_script, 248 dcPage::breadcrumb( 249 array( 250 html::escapeHTML($core->blog->name) => '', 251 '<span class="page-title">'.__('Entries').'</span>' => '' 252 )) 253 ); 254 if (!empty($_GET['upd'])) { 255 dcPage::message(__('Selected entries have been successfully updated.')); 256 } elseif (!empty($_GET['del'])) { 257 dcPage::message(__('Selected entries have been successfully deleted.')); 258 } 259 if (!$core->error->flag()) 260 { 261 echo 262 '<p class="top-add"><a class="button add" href="post.php">'.__('New entry').'</a></p>'; 263 264 if (!$show_filters) { 265 echo '<p><a id="filter-control" class="form-control" href="#">'. 266 __('Filter posts list').'</a></p>'; 267 } 268 269 echo 270 '<form action="posts.php" method="get" id="filters-form">'. 271 '<h3>'.__('Filter posts list').'</h3>'. 155 $filterSet 156 ->addFilter(new dcFilterRichCombo( 157 'users',__('Author'), __('Author'), 'user_id', $users_combo,array( 158 'multiple' => true))) 159 ->addFilter(new dcFilterRichCombo( 160 'category',__('Category'), __('Category'), 'cat_id', $categories_combo)) 161 ->addFilter(new dcFilterRichCombo( 162 'post_status',__('Status'), __('Status'), 'post_status', $status_combo)) 163 ->addFilter(new dcFilterRichCombo( 164 'lang',__('Lang'), __('Lang'), 'post_lang', $lang_combo)) 165 ->addFilter(new dcFilterCombo( 166 'selected',__('Selected'), __('The post : '),'post_selected', $selected_combo)) 167 ->addFilter(new monthdcFilterCombo( 168 'month',__('Month'),__('Month'), 'post_month', $dt_m_combo,array('singleval' => 1))) 169 ->addFilter(new dcFilterText( 170 'search',__('Contains'),__('The entry contains'), 'search',20,255)); 272 171 273 '<div class="table">'.274 '<div class="cell">'.275 '<p><label for="user_id" class="ib">'.__('Author:').'</label> '.276 form::combo('user_id',$users_combo,$user_id).'</p>'.277 '<p><label for="cat_id" class="ib">'.__('Category:').'</label> '.278 form::combo('cat_id',$categories_combo,$cat_id).'</p>'.279 '<p><label for="status" class="ib">'.__('Status:').'</label> ' .280 form::combo('status',$status_combo,$status).'</p> '.281 '</div>'.282 283 '<div class="cell">'.284 '<p><label for="selected" class="ib">'.__('Selected:').'</label> '.285 form::combo('selected',$selected_combo,$selected).'</p>'.286 '<p><label for="month" class="ib">'.__('Month:').'</label> '.287 form::combo('month',$dt_m_combo,$month).'</p>'.288 '<p><label for="lang" class="ib">'.__('Lang:').'</label> '.289 form::combo('lang',$lang_combo,$lang).'</p> '.290 '</div>'.291 292 '<div class="cell filters-options">'.293 '<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.294 form::combo('sortby',$sortby_combo,$sortby).'</p>'.295 '<p><label for="order" class="ib">'.__('Sort:').'</label> '.296 form::combo('order',$order_combo,$order).'</p>'.297 '<p><span class="label ib">'.__('Show').'</span> <label for="nb" class="classic">'.298 form::field('nb',3,3,$nb_per_page).' '.299 __('entries per page').'</label></p>'.300 '</div>'.301 '</div>'.302 172 303 '<p><input type="submit" value="'.__('Apply filters').'" />'. 304 '<br class="clear" /></p>'. //Opera sucks 305 '</form>'; 306 307 # Show posts 308 $post_list->display($page,$nb_per_page, 309 '<form action="posts_actions.php" method="post" id="form-entries">'. 310 311 '%s'. 312 313 '<div class="two-cols">'. 314 '<p class="col checkboxes-helpers"></p>'. 315 316 '<p class="col right"><label for="action" class="classic">'.__('Selected entries action:').'</label> '. 317 form::combo('action',$combo_action). 318 '<input type="submit" value="'.__('ok').'" /></p>'. 319 form::hidden(array('user_id'),$user_id). 320 form::hidden(array('cat_id'),$cat_id). 321 form::hidden(array('status'),$status). 322 form::hidden(array('selected'),$selected). 323 form::hidden(array('month'),$month). 324 form::hidden(array('lang'),$lang). 325 form::hidden(array('sortby'),$sortby). 326 form::hidden(array('order'),$order). 327 form::hidden(array('page'),$page). 328 form::hidden(array('nb'),$nb_per_page). 329 $core->formNonce(). 330 '</div>'. 331 '</form>' 332 ); 333 } 173 $lfetcher = new PostsFetcher($core); 174 $lposts = new dcItemList ($core,array('lposts','form-entries'),$filterSet,$lfetcher,'posts_actions.php'); 175 $lposts->addTemplate('posts_cols.html.twig'); 334 176 335 dcPage::helpBlock('core_posts'); 336 dcPage::close(); 177 $lposts 178 ->addColumn(new dcColumn('title',__('Title'),'post_title')) 179 ->addColumn(new dcColumn('cat',__('Category'),'cat_title')) 180 ->addColumn(new dcColumn('date',__('Date'),'post_date')) 181 ->addColumn(new dcColumn('datetime',__('Date and Time'),'post_dt')) 182 ->addColumn(new dcColumn('author',__('Author'),'user_id')) 183 ->addColumn(new dcColumn('status',__('Status'),'post_status')); 184 185 186 $lposts->setup(); 187 188 $_ctx 189 ->setBreadCrumb(array(__('Entries') => 'posts.php')); 190 191 192 $core->tpl->display('posts.html.twig'); 193 194 337 195 ?>
Note: See TracChangeset
for help on using the changeset viewer.