Changeset 225:411ee50a8664
- Timestamp:
- 05/09/11 13:30:40 (13 years ago)
- Branch:
- formfilters
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
admin/posts.php
r158 r225 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 { … … 69 68 70 69 $status_combo = array( 71 '-' => ''72 70 ); 73 71 foreach ($core->blog->getAllPostStatus() as $k => $v) { … … 76 74 77 75 $selected_combo = array( 78 '-' => '',79 76 __('selected') => '1', 80 77 __('not selected') => '0' … … 82 79 83 80 # Months array 84 $dt_m_combo['-'] = '';85 81 while ($dates->fetch()) { 86 82 $dt_m_combo[dt::str('%B %Y',$dates->ts())] = $dates->year().$dates->month(); 87 83 } 88 84 89 $lang_combo['-'] = '';90 85 while ($langs->fetch()) { 91 86 $lang_combo[$langs->post_lang] = $langs->post_lang; … … 138 133 /* Get posts 139 134 -------------------------------------------------------- */ 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 151 135 $page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1; 152 136 $nb_per_page = 30; … … 159 143 } 160 144 145 $params = new ArrayObject(); 161 146 $params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page); 162 147 $params['no_content'] = true; 163 148 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'); 150 class 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); 211 173 212 174 # Get posts 213 175 try { 176 $nfparams = $params->getArrayCopy(); 177 $filtered = $filterSet->applyFilters($params); 214 178 $posts = $core->blog->getPosts($params); 215 179 $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 } 216 186 $post_list = new adminPostList($core,$posts,$counter->f(0)); 217 187 } catch (Exception $e) { … … 222 192 -------------------------------------------------------- */ 223 193 $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(); 227 196 228 197 dcPage::open(__('Entries'),$starting_script); … … 231 200 { 232 201 echo 233 '<h2>'.html::escapeHTML($core->blog->name).' › '. __('Entries').'</h2>'.202 '<h2>'.html::escapeHTML($core->blog->name).' › '.$page_title.'</h2>'. 234 203 '<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 277 207 # Show posts 278 208 $post_list->display($page,$nb_per_page, … … 287 217 form::combo('action',$combo_action). 288 218 '<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(). 299 220 $core->formNonce(). 300 221 '</div>'. -
admin/style/default.css
r217 r225 1080 1080 label input, label select, label span { 1081 1081 display: block; 1082 } 1083 #filters-form label { 1084 display: inline; 1082 1085 } 1083 1086 p.form-note { … … 1300 1303 background-color: #2373A8; 1301 1304 } 1305 1306 form#filters {font-size: 100%; background: #f0f0f0; padding: 1em; border-radius: .5em; border: 1px solid #ddd;} 1307 form#filters .margintop {padding-top: 1.33em;} 1308 form#filters ul {list-style-type:none;margin: 0; padding: 0; margin-left: 1em;} 1309 form#filters .col30 {border-left: 1px solid #999;} 1310 form#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;} 1323 li.line { padding: 0 0 0 20px; height: 1em;} 1324 li.line label {width: auto;} 1325 #available_filters input[type=submit] {padding: 0 .1em; margin-left: .5em;} -
inc/prepend.php
r9 r225 41 41 $__autoload['dcCategories'] = dirname(__FILE__).'/core/class.dc.categories.php'; 42 42 $__autoload['dcError'] = dirname(__FILE__).'/core/class.dc.error.php'; 43 $__autoload['dcGenericMeta'] = dirname(__FILE__).'/core/class.dc.genmeta.php'; 43 44 $__autoload['dcMeta'] = dirname(__FILE__).'/core/class.dc.meta.php'; 45 $__autoload['dcUserMeta'] = dirname(__FILE__).'/core/class.dc.usermeta.php'; 44 46 $__autoload['dcMedia'] = dirname(__FILE__).'/core/class.dc.media.php'; 45 47 $__autoload['dcModules'] = dirname(__FILE__).'/core/class.dc.modules.php'; … … 68 70 $__autoload['adminCommentList'] = dirname(__FILE__).'/admin/lib.pager.php'; 69 71 $__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'; 70 74 71 75 $__autoload['dcTemplate'] = dirname(__FILE__).'/public/class.dc.template.php'; … … 118 122 # Constants 119 123 define('DC_ROOT',path::real(dirname(__FILE__).'/..')); 120 define('DC_VERSION','2.3. 0-dev');124 define('DC_VERSION','2.3.1'); 121 125 define('DC_DIGESTS',dirname(__FILE__).'/digests'); 122 126 define('DC_L10N_ROOT',dirname(__FILE__).'/../locales');
Note: See TracChangeset
for help on using the changeset viewer.