Changeset 1999:a0ed28c2da5a
- Timestamp:
- 09/22/13 11:38:22 (12 years ago)
- Branch:
- default
- Parents:
- 1998:dae906985ebb (diff), 1905:d72d24250853 (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. - Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
admin/comments.php
r1905 r1999 66 66 $show_filters = false; 67 67 68 $page = !empty($_GET['page']) ? (integer) $_GET['page']: 1;68 $page = !empty($_GET['page']) ? max(1,(integer) $_GET['page']) : 1; 69 69 $nb_per_page = 30; 70 70 -
admin/comments.php
r1912 r1999 131 131 $combo_action = array(); 132 132 $default = ''; 133 if ($core->auth->check(' publish,contentadmin',$core->blog->id))133 if ($core->auth->check('delete,contentadmin',$core->blog->id) && $status == -2) 134 134 { 135 $combo_action[__('Publish')] = 'publish'; 136 $combo_action[__('Unpublish')] = 'unpublish'; 137 $combo_action[__('Mark as pending')] = 'pending'; 138 $combo_action[__('Mark as junk')] = 'junk'; 139 } 140 if ($core->auth->check('delete,contentadmin',$core->blog->id)) 141 { 142 $combo_action[__('Delete')] = 'delete'; 143 if ($status == -2) { 144 $default = 'delete'; 145 } 146 } 147 148 # --BEHAVIOR-- adminCommentsActionsCombo 149 $core->callBehavior('adminCommentsActionsCombo',array(&$combo_action)); 135 $default = 'delete'; 136 } 137 138 $comments_actions_page = new dcCommentsActionsPage($core,'comments.php'); 139 140 $comments_actions_page->process(); 150 141 151 142 /* Get comments … … 165 156 $starting_script .= dcPage::jsLoad('js/filter-controls.js'); 166 157 } 167 # --BEHAVIOR-- adminCommentsHeaders168 $starting_script .= $core->callBehavior('adminCommentsHeaders');169 158 170 159 dcPage::open(__('Comments and trackbacks'),$starting_script, … … 175 164 )) 176 165 ); 166 if (!empty($_GET['upd'])) { 167 dcPage::success(__('Selected comments have been successfully updated.')); 168 } elseif (!empty($_GET['del'])) { 169 dcPage::success(__('Selected comments have been successfully deleted.')); 170 } 177 171 178 172 if (!$core->error->flag()) … … 254 248 # Show comments 255 249 $comment_list->display($page,$nb_per_page, 256 '<form action="comments _actions.php" method="post" id="form-comments">'.250 '<form action="comments.php" method="post" id="form-comments">'. 257 251 258 252 '%s'. … … 262 256 263 257 '<p class="col right"><label for="action" class="classic">'.__('Selected comments action:').'</label> '. 264 form::combo('action',$com bo_action,$default,'','','','title="'.__('Actions').'"').258 form::combo('action',$comments_actions_page->getCombo(),$default,'','','','title="'.__('Actions').'"'). 265 259 $core->formNonce(). 266 260 '<input type="submit" value="'.__('ok').'" /></p>'. -
admin/posts.php
r1806 r1999 121 121 $show_filters = false; 122 122 123 $page = !empty($_GET['page']) ? (integer) $_GET['page']: 1;123 $page = !empty($_GET['page']) ? max(1,(integer) $_GET['page']) : 1; 124 124 $nb_per_page = 30; 125 125 -
admin/posts.php
r1912 r1999 103 103 104 104 # Actions combo box 105 $combo_action = array(); 106 if ($core->auth->check('publish,contentadmin',$core->blog->id)) 107 { 108 $combo_action[__('Status')] = array( 109 __('Publish') => 'publish', 110 __('Unpublish') => 'unpublish', 111 __('Schedule') => 'schedule', 112 __('Mark as pending') => 'pending' 113 ); 114 } 115 $combo_action[__('Mark')] = array( 116 __('Mark as selected') => 'selected', 117 __('Mark as unselected') => 'unselected' 118 ); 119 $combo_action[__('Change')] = array( 120 __('Change category') => 'category', 121 __('Change language') => 'lang'); 122 if ($core->auth->check('admin',$core->blog->id)) 123 { 124 $combo_action[__('Change')] = array_merge($combo_action[__('Change')], 125 array(__('Change author') => 'author')); 126 } 127 if ($core->auth->check('delete,contentadmin',$core->blog->id)) 128 { 129 $combo_action[__('Delete')] = array(__('Delete') => 'delete'); 130 } 131 132 # --BEHAVIOR-- adminPostsActionsCombo 133 $core->callBehavior('adminPostsActionsCombo',array(&$combo_action)); 105 106 $posts_actions_page = new dcPostsActionsPage($core,'posts.php'); 107 108 $posts_actions_page->process(); 134 109 135 110 /* Get posts … … 304 279 # Show posts 305 280 $post_list->display($page,$nb_per_page, 306 '<form action="posts _actions.php" method="post" id="form-entries">'.281 '<form action="posts.php" method="post" id="form-entries">'. 307 282 308 283 '%s'. … … 312 287 313 288 '<p class="col right"><label for="action" class="classic">'.__('Selected entries action:').'</label> '. 314 form::combo('action',$ combo_action).289 form::combo('action',$posts_actions_page->getCombo()). 315 290 '<input type="submit" value="'.__('ok').'" /></p>'. 316 291 form::hidden(array('user_id'),$user_id). -
admin/posts_actions.php
r1964 r1999 11 11 # -- END LICENSE BLOCK ----------------------------------------- 12 12 13 /* ### THIS FILE IS DEPRECATED ### */ 14 /* ### IT IS ONLY USED FOR PLUGINS COMPATIBILITY ### */ 15 13 16 require dirname(__FILE__).'/../inc/admin/prepend.php'; 14 17 15 18 dcPage::check('usage,contentadmin'); 16 19 17 $p arams = array();20 $posts_actions_page = new dcPostsActionsPage($core,'posts.php'); 18 21 19 /** 20 * FieldsList - Compatibility class for hidden fields & entries[] fields 21 * 22 */ 23 class FieldsList { 24 /** @var array list of hidden fields */ 25 protected $hidden; 26 /** @var array list of selected entries */ 27 protected $entries; 22 $posts_actions_page->process(); 28 23 29 30 /**31 * Class constructor32 */33 public function __construct() {34 $this->hidden=array();35 $this->entries =array();36 }37 38 /**39 * addHidden - adds a hidden field40 *41 * @param string $name the field name.42 * @param mixed $value the field value.43 *44 * @access public45 * @return the FieldsList instance, enabling to chain requests46 */47 public function addHidden($name,$value) {48 $this->hidden[] = form::hidden($name,$value);49 return $this;50 }51 52 /**53 * addEntry - adds a antry field54 *55 * @param string $id the entry id.56 * @param mixed $title the entry title.57 *58 * @access public59 * @return the FieldsList instance, enabling to chain requests60 */61 public function addEntry($id,$title) {62 $this->entries[$id]=$title;63 return $this;64 }65 66 /**67 * getHidden - returns the list of hidden fields, html encoded68 *69 * @access public70 * @return the list of hidden fields, html encoded71 */72 public function getHidden() {73 return join('',$this->hidden);74 }75 76 /**77 * getEntries - returns the list of entry fields, html encoded78 *79 * @param boolean $hidden if set to true, returns entries as a list of hidden field80 * if set to false, returns html code displaying the list of entries81 * with a list of checkboxes to enable to select/deselect entries82 * @access public83 * @return the list of entry fields, html encoded84 */85 public function getEntries ($hidden=false) {86 $ret = '';87 if ($hidden) {88 foreach ($this->entries as $id=> $e) {89 $ret .= form::hidden('entries[]',$id);90 }91 } else {92 $ret =93 '<table class="posts-list"><tr>'.94 '<th colspan="2">'.__('Title').'</th>'.95 '</tr>';96 foreach ($this->entries as $id=>$title) {97 $ret .=98 '<tr><td>'.99 form::checkbox(array('entries[]'),$id,true,'','').'</td>'.100 '<td>'. $title.'</td></tr>';101 }102 $ret .= '</table>';103 }104 return $ret;105 }106 107 /**108 * getEntriesQS - returns the list of entry fields as query string109 *110 * @access public111 * @return the list of entry fields, html encoded112 */113 public function getEntriesQS() {114 $ret=array();115 foreach ($this->entries as $id=>$title) {116 $ret[] = 'entries[]='.$id;117 }118 return join('&',$ret);119 }120 121 /**122 * __toString - magic method. -- DEPRECATED here123 * This method is only used to preserve compatibility with plugins124 * relying on previous versions of adminPostsActionsContent behavior,125 *126 * @access public127 * @return the list of hidden fields and entries (as hidden fields too), html encoded128 */129 public function __toString() {130 return join('',$this->hidden).$this->getEntries(true);131 }132 }133 134 $fields = new FieldsList();135 $posts_ids = array();136 137 if (isset($_POST['redir']) && strpos($_POST['redir'],'://') === false)138 {139 $redir = $_POST['redir'];140 }141 else142 {143 $redir =144 'posts.php?user_id='.$_POST['user_id'].145 '&cat_id='.$_POST['cat_id'].146 '&status='.$_POST['status'].147 '&selected='.$_POST['selected'].148 '&month='.$_POST['month'].149 '&lang='.$_POST['lang'].150 '&sortby='.$_POST['sortby'].151 '&order='.$_POST['order'].152 '&page='.$_POST['page'].153 '&nb='.$_POST['nb'];154 }155 $redir_sel = $redir;156 157 if (!empty($_POST['entries']))158 {159 $entries = $_POST['entries'];160 161 foreach ($entries as $k => $v) {162 $entries[$k] = (integer) $v;163 }164 165 $params['sql'] = 'AND P.post_id IN('.implode(',',$entries).') ';166 167 if (!isset($_POST['full_content']) || empty($_POST['full_content'])) {168 $params['no_content'] = true;169 }170 171 if (isset($_POST['post_type'])) {172 $params['post_type'] = $_POST['post_type'];173 }174 175 $posts = $core->blog->getPosts($params);176 while ($posts->fetch()) {177 $posts_ids[] = $posts->post_id;178 $fields->addEntry($posts->post_id,$posts->post_title);179 }180 // Redirection including selected entries181 $redir_sel = $redir.'&'.$fields->getEntriesQS();182 183 } else {184 $posts = $core->con->select("SELECT blog_id FROM ".$core->prefix."blog WHERE false");;185 }186 187 /* Actions188 -------------------------------------------------------- */189 if (!empty($_POST['action']))190 {191 $action = $_POST['action'];192 }193 else194 {195 $core->error->add(__('No action specified.'));196 dcPage::open(197 __('Entries'),'',dcPage::breadcrumb(198 array(199 html::escapeHTML($core->blog->name) => '',200 __('Entries') => 'posts.php',201 '<span class="page-title">'.__('Entries actions').'</span>' => ''202 ))203 );204 205 echo '<p><a class="back" href="'.html::escapeURL($redir_sel).'">'.__('Back to entries list').'</a></p>';206 207 dcPage::close();208 exit;209 }210 211 # --BEHAVIOR-- adminPostsActions212 $core->callBehavior('adminPostsActions',$core,$posts,$action,$redir);213 214 if (preg_match('/^(publish|unpublish|schedule|pending)$/',$action))215 {216 switch ($action) {217 case 'unpublish' : $status = 0; break;218 case 'schedule' : $status = -1; break;219 case 'pending' : $status = -2; break;220 default : $status = 1; break;221 }222 223 try224 {225 $core->blog->updPostsStatus($posts_ids,$status);226 227 http::redirect($redir_sel.'&upd=1');228 }229 catch (Exception $e)230 {231 $core->error->add($e->getMessage());232 }233 }234 elseif ($action == 'selected' || $action == 'unselected')235 {236 try237 {238 $core->blog->updPostsSelected($posts_ids,$action == 'selected');239 240 http::redirect($redir_sel."&upd=1");241 }242 catch (Exception $e)243 {244 $core->error->add($e->getMessage());245 }246 }247 elseif ($action == 'delete')248 {249 try250 {251 // Backward compatibility252 foreach($posts_ids as $post_id)253 {254 # --BEHAVIOR-- adminBeforePostDelete255 $core->callBehavior('adminBeforePostDelete',(integer) $post_id);256 }257 258 # --BEHAVIOR-- adminBeforePostsDelete259 $core->callBehavior('adminBeforePostsDelete',$posts_ids);260 261 $core->blog->delPosts($posts_ids);262 263 http::redirect($redir."&del=1");264 }265 catch (Exception $e)266 {267 $core->error->add($e->getMessage());268 }269 270 }271 elseif ($action == 'category' && isset($_POST['new_cat_id']))272 {273 $new_cat_id = $_POST['new_cat_id'];274 275 try276 {277 if (!empty($_POST['new_cat_title']) && $core->auth->check('categories', $core->blog->id))278 {279 $cur_cat = $core->con->openCursor($core->prefix.'category');280 $cur_cat->cat_title = $_POST['new_cat_title'];281 $cur_cat->cat_url = '';282 283 $parent_cat = !empty($_POST['new_cat_parent']) ? $_POST['new_cat_parent'] : '';284 285 # --BEHAVIOR-- adminBeforeCategoryCreate286 $core->callBehavior('adminBeforeCategoryCreate', $cur_cat);287 288 $new_cat_id = $core->blog->addCategory($cur_cat, (integer) $parent_cat);289 290 # --BEHAVIOR-- adminAfterCategoryCreate291 $core->callBehavior('adminAfterCategoryCreate', $cur_cat, $new_cat_id);292 }293 294 $core->blog->updPostsCategory($posts_ids, $new_cat_id);295 296 http::redirect($redir_sel."&upd=1");297 }298 catch (Exception $e)299 {300 $core->error->add($e->getMessage());301 }302 }303 elseif ($action == 'author' && isset($_POST['new_auth_id'])304 && $core->auth->check('admin',$core->blog->id))305 {306 $new_user_id = $_POST['new_auth_id'];307 308 try309 {310 if ($core->getUser($new_user_id)->isEmpty()) {311 throw new Exception(__('This user does not exist'));312 }313 314 $cur = $core->con->openCursor($core->prefix.'post');315 $cur->user_id = $new_user_id;316 $cur->update('WHERE post_id '.$core->con->in($posts_ids));317 318 http::redirect($redir_sel."&upd=1");319 }320 catch (Exception $e)321 {322 $core->error->add($e->getMessage());323 }324 }325 elseif ($action == 'lang' && isset($_POST['new_lang']))326 {327 $new_lang = $_POST['new_lang'];328 try329 {330 $cur = $core->con->openCursor($core->prefix.'post');331 $cur->post_lang = $new_lang;332 $cur->update('WHERE post_id '.$core->con->in($posts_ids));333 334 http::redirect($redir_sel."&upd=1");335 }336 catch (Exception $e)337 {338 $core->error->add($e->getMessages());339 }340 }341 342 /* DISPLAY343 -------------------------------------------------------- */344 // Get current users list345 $usersList = '';346 if ($action == 'author' && $core->auth->check('admin',$core->blog->id)) {347 $params = array(348 'limit' => 100,349 'order' => 'nb_post DESC'350 );351 $rs = $core->getUsers($params);352 while ($rs->fetch())353 {354 $usersList .= ($usersList != '' ? ',' : '').'"'.$rs->user_id.'"';355 }356 }357 dcPage::open(358 __('Entries'),359 '<script type="text/javascript">'."\n".360 "//<![CDATA[\n".361 'usersList = ['.$usersList.']'."\n".362 "\n//]]>\n".363 "</script>\n".364 dcPage::jsLoad('js/jquery/jquery.autocomplete.js').365 dcPage::jsLoad('js/_posts_actions.js').366 dcPage::jsMetaEditor().367 # --BEHAVIOR-- adminBeforePostDelete368 $core->callBehavior('adminPostsActionsHeaders')369 );370 371 if (!isset($action)) {372 dcPage::close();373 exit;374 }375 376 if (isset($_POST['redir']) && strpos($_POST['redir'],'://') === false)377 {378 $fields->addHidden(array('redir'),html::escapeURL($_POST['redir']));379 }380 else381 {382 $fields383 ->addHidden(array('user_id'),$_POST['user_id'])384 ->addHidden(array('cat_id'),$_POST['cat_id'])385 ->addHidden(array('status'),$_POST['status'])386 ->addHidden(array('selected'),$_POST['selected'])387 ->addHidden(array('month'),$_POST['month'])388 ->addHidden(array('lang'),$_POST['lang'])389 ->addHidden(array('sortby'),$_POST['sortby'])390 ->addHidden(array('order'),$_POST['order'])391 ->addHidden(array('page'),$_POST['page'])392 ->addHidden(array('nb'),$_POST['nb'])393 ;394 }395 396 if (isset($_POST['post_type'])) {397 $fields->addHidden(array('post_type'),$_POST['post_type']);398 }399 400 # --BEHAVIOR-- adminPostsActionsContent401 $core->callBehavior('adminPostsActionsContent',$core,$action,$fields);402 403 if ($action == 'category')404 {405 echo dcPage::breadcrumb(406 array(407 html::escapeHTML($core->blog->name) => '',408 __('Entries') => 'posts.php',409 '<span class="page-title">'.__('Change category for this selection').'</span>' => ''410 ));411 412 echo '<p><a class="back" href="'.html::escapeURL($redir_sel).'">'.__('Back to entries list').'</a></p>';413 414 # categories list415 # Getting categories416 $categories_combo = dcAdminCombos::getCategoriesCombo(417 $core->blog->getCategories(array('post_type'=>'post'))418 );419 420 echo421 '<form action="posts_actions.php" method="post">'.422 $fields->getEntries().423 '<p><label for="new_cat_id" class="classic">'.__('Category:').'</label> '.424 form::combo('new_cat_id',$categories_combo,'');425 426 if ($core->auth->check('categories', $core->blog->id)) {427 echo428 '<div>'.429 '<p id="new_cat">'.__('Create a new category for the post(s)').'</p>'.430 '<p><label for="new_cat_title">'.__('Title:').'</label> '.431 form::field('new_cat_title',30,255,'','').'</p>'.432 '<p><label for="new_cat_parent">'.__('Parent:').'</label> '.433 form::combo('new_cat_parent',$categories_combo,'','').434 '</p>'.435 '</div>';436 }437 438 echo439 $fields->getHidden().440 $core->formNonce().441 form::hidden(array('action'),'category').442 '<input type="submit" value="'.__('Save').'" /></p>'.443 '</form>';444 }445 elseif ($action == 'lang')446 {447 echo dcPage::breadcrumb(448 array(449 html::escapeHTML($core->blog->name) => '',450 __('Entries') => 'posts.php',451 '<span class="page-title">'.__('Change language for this selection').'</span>' => ''452 ));453 echo '<p><a class="back" href="'.html::escapeURL($redir_sel).'">'.__('Back to entries list').'</a></p>';454 455 # lang list456 # Languages combo457 $rs = $core->blog->getLangs(array('order'=>'asc'));458 $lang_combo = dcAdminCombos::getLangsCombo($rs,true);459 460 echo461 '<form action="posts_actions.php" method="post">'.462 $fields->getEntries().463 464 '<p><label for="new_lang" class="classic">'.__('Entry language:').'</label> '.465 form::combo('new_lang',$lang_combo,'');466 467 echo468 $fields->getHidden().469 $core->formNonce().470 form::hidden(array('action'),'lang').471 '<input type="submit" value="'.__('Save').'" /></p>'.472 '</form>';473 474 }475 elseif ($action == 'author' && $core->auth->check('admin',$core->blog->id))476 {477 echo dcPage::breadcrumb(478 array(479 html::escapeHTML($core->blog->name) => '',480 __('Entries') => 'posts.php',481 '<span class="page-title">'.__('Change author for this selection').'</span>' => ''482 ));483 echo '<p><a class="back" href="'.html::escapeURL($redir_sel).'">'.__('Back to entries list').'</a></p>';484 485 echo486 '<form action="posts_actions.php" method="post">'.487 $fields->getEntries().488 '<p><label for="new_auth_id" class="classic">'.__('New author (author ID):').'</label> '.489 form::field('new_auth_id',20,255);490 491 echo492 $fields->getHidden().493 $core->formNonce().494 form::hidden(array('action'),'author').495 '<input type="submit" value="'.__('Save').'" /></p>'.496 '</form>';497 }498 499 dcPage::close();500 24 ?> -
inc/admin/lib.pager.php
r1905 r1999 12 12 if (!defined('DC_RC_PATH')) { return; } 13 13 14 class dcPager extends pager 15 { 16 protected $form_action; 17 protected $form_hidden; 18 19 protected function getLink($li_class,$href,$img_src,$img_src_nolink,$img_alt,$enable_link) { 20 if ($enable_link) { 21 $formatter = '<li class="%s btn"><a href="%s"><img src="%s" alt="%s"/></a><span class="hidden">%s</span></li>'; 22 return sprintf ($formatter, 23 $li_class,$href,$img_src,$img_alt,$img_alt); 24 } else { 25 $formatter = '<li class="%s no-link btn"><img src="%s" alt="%s"/></li>'; 26 return sprintf ($formatter, 27 $li_class,$img_src_nolink,$img_alt,$img_alt); 28 } 29 } 30 public function setURL() { 31 parent::setURL(); 32 $url = parse_url($_SERVER['REQUEST_URI']); 33 if (isset($url['query'])) { 34 parse_str($url['query'],$args); 35 } else { 36 $args=array(); 37 } 38 # Removing session information 39 if (session_id()) 40 { 41 if (isset($args[session_name()])) 42 unset($args[session_name()]); 43 } 44 if (isset($args[$this->var_page])) { 45 unset($args[$this->var_page]); 46 } 47 if (isset($args['ok'])) { 48 unset($args['ok']); 49 } 50 $this->form_hidden = ''; 51 foreach ($args as $k=>$v) { 52 if (is_array($v)) { 53 foreach ($v as $k2=>$v2) { 54 $this->form_hidden .= form::hidden(array($k.'[]'),$v2); 55 } 56 } else { 57 $this->form_hidden .= form::hidden(array($k),$v); 58 } 59 } 60 $this->form_action = $url['path']; 61 } 62 63 /** 64 * Pager Links 65 * 66 * Returns pager links 67 * 68 * @return string 69 */ 70 public function getLinks() 71 { 72 $this->setURL(); 73 $htmlFirst = $this->getLink( 74 "first", 75 sprintf($this->page_url,1), 76 "images/pagination/first.png", 77 "images/pagination/no-first.png", 78 __('First page'), 79 ($this->env > 1) 80 ); 81 $htmlPrev = $this->getLink( 82 "prev", 83 sprintf($this->page_url,$this->env-1), 84 "images/pagination/previous.png", 85 "images/pagination/no-previous.png", 86 __('Previous page'), 87 ($this->env > 1) 88 ); 89 $htmlNext = $this->getLink( 90 "next", 91 sprintf($this->page_url,$this->env+1), 92 "images/pagination/next.png", 93 "images/pagination/no-next.png", 94 __('Next page'), 95 ($this->env < $this->nb_pages) 96 ); 97 $htmlLast = $this->getLink( 98 "last", 99 sprintf($this->page_url,$this->nb_pages), 100 "images/pagination/last.png", 101 "images/pagination/no-last.png", 102 __('Last page'), 103 ($this->env < $this->nb_pages) 104 ); 105 $htmlCurrent = 106 '<li class="active"><strong>'. 107 sprintf(__('Page %s / %s'),$this->env,$this->nb_pages). 108 '</strong></li>'; 109 110 $htmlDirect = 111 ($this->nb_pages > 1 ? 112 sprintf('<li class="direct-access">'.__('Direct access page %s'), 113 form::field(array('page'),3,10)). 114 '<input type="submit" value="'.__('ok').'" class="reset" '. 115 'name="ok" />'.$this->form_hidden.'</li>' : ''); 116 117 $res = 118 '<form action="'.$this->form_action.'" method="get">'. 119 '<div class="pager"><ul>'. 120 $htmlFirst. 121 $htmlPrev. 122 $htmlCurrent. 123 $htmlNext. 124 $htmlLast. 125 $htmlDirect. 126 '</ul>'. 127 '</div>'. 128 '</form>' 129 ; 130 131 return $this->nb_elements > 0 ? $res : ''; 132 } 133 } 134 14 135 class adminGenericList 15 136 { … … 38 159 else 39 160 { 40 $pager = new pager($page,$this->rs_count,$nb_per_page,10); 41 $pager->html_prev = $this->html_prev; 42 $pager->html_next = $this->html_next; 43 $pager->var_page = 'page'; 161 $pager = new dcPager($page,$this->rs_count,$nb_per_page,10); 44 162 $entries = array(); 45 163 if (isset($_REQUEST['entries'])) { … … 63 181 } 64 182 65 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';183 echo $pager->getLinks(); 66 184 67 185 $blocks = explode('%s',$html_block); … … 76 194 echo $blocks[1]; 77 195 78 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';196 echo $pager->getLinks(); 79 197 } 80 198 } … … 158 276 else 159 277 { 160 $pager = new pager($page,$this->rs_count,$nb_per_page,10); 161 $pager->html_prev = $this->html_prev; 162 $pager->html_next = $this->html_next; 163 $pager->var_page = 'page'; 278 $pager = new dcPager($page,$this->rs_count,$nb_per_page,10); 164 279 165 280 $html_block = … … 175 290 } 176 291 177 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';292 echo $pager->getLinks(); 178 293 179 294 $blocks = explode('%s',$html_block); … … 188 303 echo $blocks[1]; 189 304 190 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';305 echo $pager->getLinks(); 191 306 } 192 307 } … … 253 368 else 254 369 { 255 $pager = new pager($page,$this->rs_count,$nb_per_page,10); 256 $pager->html_prev = $this->html_prev; 257 $pager->html_next = $this->html_next; 258 $pager->var_page = 'page'; 370 $pager = new dcPager($page,$this->rs_count,$nb_per_page,10); 371 259 372 $comments = array(); 260 373 if (isset($_REQUEST['comments'])) { … … 276 389 } 277 390 278 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';391 echo $pager->getLinks(); 279 392 280 393 $blocks = explode('%s',$html_block); … … 284 397 while ($this->rs->fetch()) 285 398 { 286 echo $this->commentLine( isset($comments[$this->rs->comment_id]));399 echo $this->commentLine(); 287 400 } 288 401 289 402 echo $blocks[1]; 290 403 291 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';404 echo $pager->getLinks(); 292 405 } 293 406 } … … 341 454 $res .= 342 455 '<td class="nowrap">'. 343 form::checkbox(array('comments[]'),$this->rs->comment_id, $checked,'','',0).'</td>'.344 '<td class="nowrap" abbr="'.__('Type and author').'" scope="r aw">'.456 form::checkbox(array('comments[]'),$this->rs->comment_id,'','','',0).'</td>'. 457 '<td class="nowrap" abbr="'.__('Type and author').'" scope="row">'. 345 458 '<a href="'.$comment_url.'" title="'.$comment_title.'">'. 346 459 '<img src="images/edit-mini.png" alt="'.__('Edit').'"/> '. … … 369 482 else 370 483 { 371 $pager = new pager($page,$this->rs_count,$nb_per_page,10); 372 $pager->html_prev = $this->html_prev; 373 $pager->html_next = $this->html_next; 374 $pager->var_page = 'page'; 484 $pager = new dcPager($page,$this->rs_count,$nb_per_page,10); 375 485 376 486 $html_block = … … 387 497 } 388 498 389 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';499 echo $pager->getLinks(); 390 500 391 501 $blocks = explode('%s',$html_block); … … 400 510 echo $blocks[1]; 401 511 402 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';512 echo $pager->getLinks(); 403 513 } 404 514 } -
inc/admin/lib.pager.php
r1998 r1999 370 370 $pager = new dcPager($page,$this->rs_count,$nb_per_page,10); 371 371 372 $comments = array(); 373 if (isset($_REQUEST['comments'])) { 374 foreach ($_REQUEST['comments'] as $v) { 375 $comments[(integer)$v]=true; 376 } 377 } 372 378 $html_block = 373 379 '<table><caption class="hidden">'.__('Comments and trackbacks list').'</caption><tr>'. … … 400 406 } 401 407 402 private function commentLine( )408 private function commentLine($checked) 403 409 { 404 410 global $author, $status, $sortby, $order, $nb_per_page; -
inc/prepend.php
r1905 r1999 59 59 $__autoload['adminCommentList'] = dirname(__FILE__).'/admin/lib.pager.php'; 60 60 $__autoload['adminUserList'] = dirname(__FILE__).'/admin/lib.pager.php'; 61 $__autoload['dcPager'] = dirname(__FILE__).'/admin/lib.pager.php'; 61 62 $__autoload['dcAdminCombos'] = dirname(__FILE__).'/admin/lib.admincombos.php'; 62 63 … … 291 292 { 292 293 if ($l == 'en' || l10n::set(dirname(__FILE__).'/../locales/'.$l.'/main') !== false) { 294 l10n::lang($l); 293 295 break; 294 296 } -
inc/prepend.php
r1949 r1999 65 65 $__autoload['context'] = dirname(__FILE__).'/public/lib.tpl.context.php'; 66 66 $__autoload['dcUrlHandlers'] = dirname(__FILE__).'/public/lib.urlhandlers.php'; 67 $__autoload['dcPostsActionsPage'] = dirname(__FILE__).'/admin/actions/class.dcactionposts.php'; 68 $__autoload['dcCommentsActionsPage'] = dirname(__FILE__).'/admin/actions/class.dcactioncomments.php'; 69 $__autoload['dcActionsPage'] = dirname(__FILE__).'/admin/actions/class.dcaction.php'; 67 70 68 71 # Clearbricks extensions -
locales/fr/help/blowupConfig.html
r1874 r1999 17 17 <p>Si vous manquez d'inspiration vous pouvez consulter :</p> 18 18 <ul> 19 <li><a href="http://fr.wikipedia.org/wiki/Liste_De_Couleurs">La liste des codes</a> (Wikipedia) </li>20 <li><a href="http://kuler.adobe.com/">Adobe Kuler</a> </li>21 <li><a href="http://colorblender.com/">ColorBlender</a> </li>22 <li><a href="http://www.colorcombos.com/">ColorCombos</a> </li>19 <li><a href="http://fr.wikipedia.org/wiki/Liste_De_Couleurs">La liste des codes</a> (Wikipedia),</li> 20 <li><a href="http://kuler.adobe.com/">Adobe Kuler</a>,</li> 21 <li><a href="http://colorblender.com/">ColorBlender</a>,</li> 22 <li><a href="http://www.colorcombos.com/">ColorCombos</a>.</li> 23 23 </ul> 24 24 … … 58 58 <p>Vous pouvez ensuite modifier le style prédéfini comme bon vous semble.</p> 59 59 60 <h 4>Import / export de configuration</h4>60 <h3>Import / export de configuration</h3> 61 61 62 62 <p>À la fin des options de Blowup, vous pouvez afficher une zone appelée "Import -
locales/fr/help/core_blog_pref.html
r1874 r1999 1 1 <html> 2 2 <head> 3 <title>P références du blog</title>3 <title>Paramètres du blog</title> 4 4 </head> 5 5 6 6 <body> 7 8 7 <h4>Informations du blog</h4> 9 8 <dl> … … 11 10 <dd>Identifiant unique du blog. Obligatoire, ne peut être modifié que par un 12 11 super administrateur.</dd> 13 12 14 13 <dt>Nom du blog</dt> 15 14 <dd>Nom du blog, obligatoire. Il peut être modifié à tout moment sans incidence sur 16 15 le fonctionnement du blog.</dd> 17 16 18 17 <dt>URL du blog</dt> 19 18 <dd>URL complète du blog. Obligatoire, ne peut être modifiée que par un super 20 19 administrateur.</dd> 21 20 22 21 <dt>Méthode de lecture de l'URL</dt> 23 22 <dd>Définit le mode de lecture de l'URL. PATH_INFO est conseillé, QUERY_STRING 24 23 doit être utilisé si le premier ne fonctionne pas. En mode PATH_INFO, l'URL du 25 24 blog doit se terminer par un "/" et en mode QUERY_STRING, par un "?".</dd> 26 25 27 26 <dt>État du blog</dt> 28 27 <dd> 29 28 <ul> 30 <li><strong> en ligne</strong> : blog accessible aux visiteurs</li>31 <li><strong> hors ligne</strong> : blog inaccessible aux visiteurs32 mais les rédacteurs peuvent se connecter </li>33 <li><strong> retiré</strong> : blog inaccessible aux visiteurs34 comme aux rédacteurs, seuls les super-administrateurs peuvent y accéder </li>29 <li><strong>En ligne</strong> : blog accessible aux visiteurs.</li> 30 <li><strong>Hors ligne</strong> : blog inaccessible aux visiteurs 31 mais les rédacteurs peuvent se connecter.</li> 32 <li><strong>Retiré</strong> : blog inaccessible aux visiteurs 33 comme aux rédacteurs, seuls les super-administrateurs peuvent y accéder.</li> 35 34 </ul> 36 35 </dd> 37 36 38 37 <dt>Description du blog</dt> 39 38 <dd>Texte libre de description du blog. Il s'agit d'un texte simple, sans … … 43 42 <h4>Configuration du blog</h4> 44 43 <dl> 45 <dt>Nom de l' éditeur du blog</dt>44 <dt>Nom de l'auteur du blog</dt> 46 45 <dd>Nom de la personne responsable du contenu du blog. Peut être le propriétaire 47 46 ou le directeur de publication s'il existe. Cette information sera affichée dans les 48 47 informations du flux de syndication.</dd> 49 50 <dt>Note de copyright</dt> 51 <dd>Note indiquant les droits de reproduction autorisés pour le blog.</dd> 52 48 53 49 <dt>Langue par défaut</dt> 54 50 <dd>Langue de l'interface du blog. Si cette langue existe parmi les 55 51 traductions, l'interface sera traduite dans celle-ci, sinon elle apparaîtra 56 52 en anglais.</dd> 57 53 58 54 <dt>Fuseau horaire du blog</dt> 59 55 <dd>Définit le fuseau horaire qui sera utilisé pour dater les commentaires et 60 56 trackbacks entrant sur le blog.</dd> 61 57 58 <dt>Note de copyright</dt> 59 <dd>Note indiquant les droits de reproduction autorisés pour le blog.</dd> 60 61 <dt>Format d'URL des nouveaux billets</dt> 62 <dd>A rédiger.</dd> 63 64 <dt>Balise HTML pour le titre des notes</dt> 65 <dd>A rédiger.</dd> 66 62 67 <dt>Interface XML/RPC</dt> 63 <dd>Permet à un client externe d'interagir avec votre blog via le protocole XML/RPC. À l'activation, 68 <dd>Permet à un client externe d'interagir avec votre blog via le protocole XML/RPC. À l'activation, 64 69 les paramètres nécessaires au réglage du client externe sont affichés.</dd> 65 66 <dt>Format des dates</dt> 67 <dd>Indique le format de la date d'un billet sur le blog. Voir la section 68 "formatage des dates" pour plus détails.</dd> 69 70 <dt>Format des heures</dt> 71 <dd>Indique le format de l'heure d'un billet sur le blog. Voir la section 72 "formatage des dates" pour plus détails.</dd> 73 70 </dl> 71 72 <h4>Commentaires et rétroliens</h4> 73 <dl> 74 <dt>Accepter les commentaires</dt> 75 <dd>Accepter globalement les commentaires sur le blog. Ce paramètre est 76 supérieur à celui autorisant ou non les commentaires sur un billet.</dd> 77 78 <dt>Modérer les commentaires</dt> 79 <dd>Si cette option est activée, les commentaires ne seront publiés qu'après 80 l'approbation d'un rédacteur.</dd> 81 74 82 <dt>Laisser les commentaires ouverts durant .. jours</dt> 75 83 <dd>Permet d'indiquer le nombre de jours durant lesquels les commentaires 76 84 sont possibles sur un billet après sa publication. Aucune valeur laissera 77 85 les commentaires toujours ouverts.</dd> 78 86 87 <dt>Syntaxe wiki pour les commentaires</dt> 88 <dd>Autoriser quelques éléments de la syntaxe wiki dans les commentaires.</dd> 89 90 <dt>Accepter les rétroliens</dt> 91 <dd>Accepter globalement les rétroliens sur le blog. Ce paramètre est 92 supérieur à celui autorisant ou non les rétroliens sur un billet.</dd> 93 94 <dt>Modérer les rétroliens</dt> 95 <dd>Si cette option est activée, les rétroliens ne seront publiés qu'après 96 l'approbation d'un rédacteur.</dd> 97 79 98 <dt>Laisser les rétroliens ouverts durant .. jours</dt> 80 99 <dd>Permet d'indiquer le nombre de jours durant lesquels les rétroliens 81 100 sont possibles sur un billet après sa publication. Aucune valeur laissera 82 101 les rétroliens toujours ouverts.</dd> 83 84 <dt>Accepter les commentaires</dt> 85 <dd>Accepter globalement les commentaires sur le blog. Ce paramètre est 86 supérieur à celui autorisant ou non les commentaires sur un billet.</dd> 87 88 <dt>Accepter les rétroliens</dt> 89 <dd>Accepter globalement les rétroliens sur le blog. Ce paramètre est 90 supérieur à celui autorisant ou non les rétroliens sur un billet.</dd> 91 92 <dt>Modérer les commentaires</dt> 93 <dd>Si cette option est activée, les commentaires ne seront publiés qu'après 94 l'approbation d'un rédacteur.</dd> 95 96 <dt>Modérer les rétroliens</dt> 97 <dd>Si cette option est activée, les rétroliens ne seront publiés qu'après 98 l'approbation d'un rédacteur.</dd> 99 102 100 103 <dt>Ajouter la relation "nofollow" aux liens des commentaires et rétroliens</dt> 101 104 <dd>Ajoute un attribut sur les liens des commentaires et rétroliens indiquant … … 103 106 est censée permettre de lutter contre le spam mais n'a pas encore vraiment 104 107 prouvé son efficacité.</dd> 105 106 <dt>Syntaxe wiki pour les commentaires</dt> 107 <dd>Autoriser quelques éléments de la syntaxe wiki dans les commentaires.</dd> 108 108 </dl> 109 110 <h4>Présentation du blog</h4> 111 <dl> 112 <dt>Format des dates</dt> 113 <dd>Indique le format de la date d'un billet sur le blog. Voir la section 114 "formatage des dates" pour plus détails.</dd> 115 116 <dt>Format des heures</dt> 117 <dd>Indique le format de l'heure d'un billet sur le blog. Voir la section 118 "formatage des dates" pour plus détails.</dd> 119 120 <dt>Afficher des émoticônes dans les billets et commentaires</dt> 121 <dd>Remplacer certaines suites de caractères comme :-) ou ;-) par des images.</dd> 122 109 123 <dt>Afficher .. billets par page</dt> 110 124 <dd>Le nombre donné sera utilisé comme limite d'affichage des billets sur la 111 125 page d'accueil et la première page de chaque catégorie.</dd> 112 113 <dt>Afficher des émoticônes dans les billets et commentaires</dt> 114 <dd>Remplacer certaines suites de caractères comme :-) ou ;-) par des images.</dd> 115 126 116 127 <dt>Afficher .. billets par flux de syndication</dt> 117 128 <dd>Le nombre donné sera utilisé comme limite d'affichage des billets dans 118 129 les flux de syndication.</dd> 119 130 120 131 <dt>Afficher .. commentaires par flux de syndication</dt> 121 132 <dd>Le nombre donné sera utilisé comme limite d'affichage des commentaires dans 122 133 les flux de syndication.</dd> 123 134 124 135 <dt>Tronquer le flux de syndication</dt> 125 136 <dd>Cette option permet de ne fournir qu'un extrait des billets dans les flux … … 127 138 </dl> 128 139 140 <h4>Médias et images</h4> 141 <dl> 142 <dt>Tailles des images générées (en pixels)</dt> 143 <dd>Lorsque vous ajoutez une image au gestionnaire de médias, d'autres tailles 144 sont automatiquement générées. Vous pouvez ajuster ici la dimension du plus 145 grand côté de chaque type d'image générée. Rien ou 0 (zéro) indique au 146 gestionnaire de médias de ne pas créer la vignette correspondante.</dd> 147 148 <dt>Titres des images insérées</dt> 149 <dd>Ce champ vous permet de définir le format des titres ajoutés automatiquement 150 aux balises des images. Le titre est composé à partir d'éléments des métadonnées 151 de l'image.</dd> 152 153 <dt>Attributs par défaut pour l'insertion d'image</dt> 154 <dd>A rédiger et détailler.</dd> 155 </dl> 156 157 <h4>Paramètres d'indexation par les moteurs de recherche</h4> 158 <p>Indiquez ici si vous souhaitez ou non que les moteurs de recherche indexent 159 et/ou archivent vos pages. Choisissez la dernière option si vous ne voulez pas 160 que l'on trouve votre blog par le biais d'un moteur de recherche.</p> 161 162 <h4>Antispam</h4> 163 <p>Indiquez ici le délai après lequel vous souhaitez que les commentaires 164 indésirables soient automatiquement supprimés. Un 0 (zéro) signifie "suppression 165 immédiate", un nombre négatif désactive le mécanisme de suppression.</p> 166 129 167 <h4>Formatage des dates</h4> 130 168 <p>Certains champs permettent de formater les dates avec des caractères … … 132 170 133 171 <ul> 134 <li><strong>%a</strong> : nom abrégé du jour de la semaine (local) .</li>135 <li><strong>%A</strong> : nom complet du jour de la semaine (local) .</li>136 <li><strong>%b</strong> : nom abrégé du mois (local) .</li>137 <li><strong>%B</strong> : nom complet du mois (local) .</li>172 <li><strong>%a</strong> : nom abrégé du jour de la semaine (local),</li> 173 <li><strong>%A</strong> : nom complet du jour de la semaine (local),</li> 174 <li><strong>%b</strong> : nom abrégé du mois (local),</li> 175 <li><strong>%B</strong> : nom complet du mois (local),</li> 138 176 <li><strong>%c</strong> : représentation préférée pour les dates et 139 heures, en local .</li>177 heures, en local,</li> 140 178 <li><strong>%C</strong> : numéro de siècle (l'année, divisée par 100 et 141 arrondie entre 00 et 99) </li>179 arrondie entre 00 et 99),</li> 142 180 <li><strong>%d</strong> : jour du mois en numérique (intervalle 01 à 143 31) </li>144 <li><strong>%D</strong> : identique à %m/%d/%y </li>181 31),</li> 182 <li><strong>%D</strong> : identique à %m/%d/%y,</li> 145 183 <li><strong>%e</strong> : numéro du jour du mois. Les chiffres sont 146 précédés d'un espace (de ' 1' à '31') </li>147 <li><strong>%g</strong> : identique à %G, sur 2 chiffres .</li>184 précédés d'un espace (de ' 1' à '31'),</li> 185 <li><strong>%g</strong> : identique à %G, sur 2 chiffres,</li> 148 186 <li><strong>%G</strong> : L'année sur 4 chiffres correspondant au numéro 149 187 de semaine (voir %V). Même format et valeur que %Y, excepté que si le numéro 150 188 de la semaine appartient à l'année précédente ou suivante, l'année courante 151 sera utilisé à la place .</li>152 <li><strong>%h</strong> : identique à %b </li>189 sera utilisé à la place,</li> 190 <li><strong>%h</strong> : identique à %b,</li> 153 191 <li><strong>%H</strong> : heure de la journée en numérique, et sur 154 24-heures (intervalle de 00 à 23) </li>192 24-heures (intervalle de 00 à 23),</li> 155 193 <li><strong>%I</strong> : heure de la journée en numérique, et sur 12- 156 heures (intervalle 01 à 12) </li>194 heures (intervalle 01 à 12),</li> 157 195 <li><strong>%j</strong> : jour de l'année, en numérique (intervalle 001 à 158 366) </li>159 <li><strong>%m</strong> : mois en numérique (intervalle 1 à 12) </li>160 <li><strong>%M</strong> : minute en numérique </li>161 <li><strong>%n</strong> : newline character </li>196 366),</li> 197 <li><strong>%m</strong> : mois en numérique (intervalle 1 à 12),</li> 198 <li><strong>%M</strong> : minute en numérique,</li> 199 <li><strong>%n</strong> : newline character,</li> 162 200 <li><strong>%p</strong> : soit `am' ou `pm' en fonction de l'heure 163 absolue, ou en fonction des valeurs enregistrées en local .</li>164 <li><strong>%r</strong> : l'heure au format a.m. et p.m. </li>165 <li><strong>%R</strong> : l'heure au format 24h </li>166 <li><strong>%S</strong> : secondes en numérique </li>167 <li><strong>%t</strong> : tabulation </li>168 <li><strong>%T</strong> : l'heure actuelle (égal à %H:%M:%S) </li>201 absolue, ou en fonction des valeurs enregistrées en local,</li> 202 <li><strong>%r</strong> : l'heure au format a.m. et p.m.,</li> 203 <li><strong>%R</strong> : l'heure au format 24h,</li> 204 <li><strong>%S</strong> : secondes en numérique,</li> 205 <li><strong>%t</strong> : tabulation,</li> 206 <li><strong>%T</strong> : l'heure actuelle (égal à %H:%M:%S),</li> 169 207 <li><strong>%u</strong> : le numéro de jour dans la semaine, de 1 à 7. (1 170 représente Lundi) </li>208 représente Lundi),</li> 171 209 <li><strong>%U</strong> : numéro de semaine dans l'année, en considérant 172 210 le premier dimanche de l'année comme le premier jour de la première 173 semaine .</li>211 semaine,</li> 174 212 <li><strong>%V</strong> : le numéro de semaine comme défini dans l'ISO 175 213 8601:1988, sous forme décimale, de 01 à 53. La semaine 1 est la première 176 214 semaine qui a plus de 4 jours dans l'année courante, et dont Lundi est le 177 premier jour . (Utilisez %G ou %g pour les éléments de l'année qui178 correspondent au numéro de la semaine pour le timestamp donné .)</li>215 premier jour (utilisez %G ou %g pour les éléments de l'année qui 216 correspondent au numéro de la semaine pour le timestamp donné),</li> 179 217 <li><strong>%W</strong> : numéro de semaine dans l'année, en considérant 180 le premier lundi de l'année comme le premier jour de la première semaine </li>218 le premier lundi de l'année comme le premier jour de la première semaine,</li> 181 219 <li><strong>%w</strong> : jour de la semaine, numérique, avec Dimanche = 182 0 </li>220 0,</li> 183 221 <li><strong>%x</strong> : format préféré de représentation de la date 184 sans l'heure </li>222 sans l'heure,</li> 185 223 <li><strong>%X</strong> : format préféré de représentation de l'heure 186 sans la date </li>224 sans la date,</li> 187 225 <li><strong>%y</strong> : l'année, numérique, sur deux chiffres (de 00 à 188 99) </li>189 <li><strong>%Y</strong> : l'année, numérique, sur quatre chiffres </li>226 99),</li> 227 <li><strong>%Y</strong> : l'année, numérique, sur quatre chiffres,</li> 190 228 <li><strong>%Z ou %z</strong> : fuseau horaire, ou nom ou 191 abréviation </li>192 <li><strong>%%</strong> : un caractère `%' littéral </li>229 abréviation,</li> 230 <li><strong>%%</strong> : un caractère `%' littéral.</li> 193 231 </ul> 232 233 <h4>Utilisateurs de ce blog</h4> 234 <p>Liste les utilisateurs de ce blog, ainsi que leurs permissions.</p> 194 235 195 236 </body> -
locales/fr/help/core_categories.html
r1874 r1999 5 5 6 6 <body> 7 <h4>Liste des cat egories</h4>7 <h4>Liste des catégories</h4> 8 8 <dl> 9 <dt>Créer une nouvelle catégorie</dt>10 <dd>Choisissez le nom que vous souhaitez donner à votre nouvelle catégorie11 puis cliquer sur Enregistrer pour valider sa création. Vous pouvez choisir12 sa catégorie parente ou la laisser au premier niveau. Pour modifier la catégorie,13 cliquez sur son nom dans la liste.</dd>14 15 9 <dt>Supprimer une catégorie</dt> 16 <dd>Choisissez la catégorie que vous voulez supprimer et cliquez sur ok. 10 <dd>Choisissez la catégorie que vous voulez supprimer et cliquez sur ok.<br /> 17 11 Une catégorie ne peut être supprimée que si elle ne contient aucun billet.</dd> 18 12 19 13 <dt>Réordonner les catégories</dt> 20 <dd>Utilisez cette option pour placer toutes les catégories au même niveau. 21 Si vous voulez modifier l'ordre des catégories plus précisément, cliquez sur le nom de chacune d'entre elles 22 et choisissez sa catégorie parente ou sa position par rapport à ses voisines.</dd> 23 </dl> 24 25 <h4>Modifier une catégorie</h4> 26 <dl> 27 <dt>Titre</dt> 28 <dd>Choisissez le nom que vous souhaitez donner à votre nouvelle catégorie 29 puis cliquer sur Enregistrer pour valider sa création.</dd> 30 31 <dt>URL</dt> 32 <dd>DotClear crée une url par défaut de la catégorie, qui sera ainsi 33 accessible avec un chemin de la forme 34 <strong>http://monblog.tld/category/Ma-categorie</strong>. En cliquant sur le 35 petit verrou situé à la droite, vous pouvez la modifier comme il vous 36 plaira.</dd> 37 38 <dt>Description</dt> 39 <dd>Le contenu de ce champ de description sera affiché lors de la sélection 40 d'une catégorie dans le blog. Vous pouvez le remplir avec toute forme de 41 contenu (paragraphes, listes, etc.) Le format du texte de la description est 42 HTML.</dd> 43 44 <dt>Déplacer cette catégorie</dt> 45 <dd>Vous pouvez déplacer la catégorie dans n'importe quelle autre, qui deviendra sa parente. 46 Vous pouvez aussi spécifier sa position par rapport à ses voisines en la plaçant avant ou après l'une d'elles.</dd> 14 <dd>Utilisez cette option pour placer toutes les catégories au même niveau.<br /> 15 Si vous voulez modifier l'ordre des catégories plus précisément, cliquez sur 16 le nom de chacune d'entre elles et choisissez sa catégorie parente ou sa 17 position par rapport à ses voisines.</dd> 47 18 </dl> 48 19 -
locales/fr/help/core_comments.html
r1874 r1999 1 1 <html> 2 2 <head> 3 <title>Commentaires </title>3 <title>Commentaires et rétroliens</title> 4 4 </head> 5 5 6 6 <body> 7 <h4>Filtres de la liste des commentaires </h4>7 <h4>Filtres de la liste des commentaires et rétroliens</h4> 8 8 <dl> 9 <dt>Type :</dt>10 <dd>Aucun ou commentaire s ou rétroliens.</dd>9 <dt>Type</dt> 10 <dd>Aucun ou commentaire ou rétrolien.</dd> 11 11 12 <dt>État :</dt>12 <dt>État</dt> 13 13 <dd><ul> 14 <li><strong> indésirable</strong> : reconnu comme spam ;</li>15 <li><strong> en attente</strong> : en attente de modération ;</li>16 <li><strong> non publié</strong> : hors ligne ;</li>17 <li><strong> publié</strong>: en ligne.</li>14 <li><strong>Indésirable</strong> : reconnu comme spam.</li> 15 <li><strong>En attente</strong> : en attente de modération.</li> 16 <li><strong>Non publié</strong> : hors ligne,</li> 17 <li><strong>Publié</strong> : en ligne.</li> 18 18 </ul></dd> 19 20 <dt>Trier par :</dt> 21 <dd>Choisir : date, ou titre du billet, ou auteur ou état, puis indiquez si vous 22 souhaitez que les résultats s'affichent par ordre croissant ou décroissant.</dd> 23 24 <dt>Trier</dt> 25 <dd>Indique l'ordre dans lequel on souhaite effectuer le tri.</dd> 26 27 <dt>Auteur du commentaire.</dt> 19 20 <dt>Auteur du commentaire</dt> 28 21 <dd>Recherche indifféremment avec des minuscules ou majuscules. On peut chercher 29 22 sur une partie du nom en utilisant le caractère joker 30 23 <strong>*</strong>.</dd> 24 25 <dt>Adresse IP</dt> 26 <dd>On peut chercher sur une partie de l'adresse IP en utilisant le caractère joker 27 <strong>*</strong>.</dd> 31 28 32 <dt>Commentaires par page :</dt> 29 <dt>Trier par</dt> 30 <dd>Choisir : date, ou titre du billet, ou auteur, ou état.</dd> 31 32 <dt>Ordre</dt> 33 <dd>Indique l'ordre dans lequel on souhaite effectuer le tri (décroissant ou croissant).</dd> 34 35 <dt>Commentaires par page</dt> 33 36 <dd>Détermine le nombre de commentaires affichés par page de cette liste.</dd> 34 37 </dl> 35 38 36 <h4>Modifier ou ajouter un commentaire</h4> 37 <dl> 38 <dt>Auteur :</dt> 39 <dd>Nom de l'auteur. Ce champ est obligatoire.</dd> 40 41 <dt>Email :</dt> 42 <dd>Adresse mail de l'auteur du commmentaire.</dd> 43 44 <dt>Site web :</dt> 45 <dd>URL du site ou du blog de l'auteur du commentaire.</dd> 46 47 <dt>État :</dt> 48 <dd><ul> 49 <li><strong>indésirable</strong> : reconnu comme spam ;</li> 50 <li><strong>en attente</strong> : en attente de modération ;</li> 51 <li><strong>non publié</strong> : hors ligne</li> 52 <li><strong>publié</strong> : en ligne</li> 53 </ul></dd> 54 55 <dt>Commentaire :</dt> 56 <dd>Contenu du commentaire. Ce champ utilise la syntaxe HTML.</dd> 57 </dl> 39 <h4>Actions par lot sur les commentaires et rétroliens</h4> 40 <p>Il est possible d'effectuer un ensemble d'actions sur plusieurs commentaires 41 et/ou rétroliens, d'un seul coup. Les actions possibles dépendent des permissions 42 de l'utilisateur.</p> 43 44 <ul> 45 <li><strong>Publier</strong> : mettre le commentaire ou rétrolien en ligne.</li> 46 <li><strong>Mettre hors ligne</strong> : mettre le commentaire ou rétrolien hors ligne.</li> 47 <li><strong>Mettre en attente</strong> : mettre le commentaire ou rétrolien en attente de publication.</li> 48 <li><strong>Mettre en indésirable</strong> : classer le commentaire ou rétrolien comme étant un spam.</li> 49 <li><strong>Supprimer</strong> : supprime le commentaire ou rétrolien (cette opération est irréversible).</li> 50 </ul> 51 58 52 </body> 59 53 </html> -
locales/fr/help/core_media.html
r1874 r1999 1 1 <html> 2 2 <head> 3 <title> Médiathèque</title>3 <title>Gestionnaire de media</title> 4 4 </head> 5 5 … … 7 7 8 8 <h4>Liste des médias</h4> 9 <p>La page principale d e la médiathèqueprésente la liste des fichiers9 <p>La page principale du gestionnaire de médias présente la liste des fichiers 10 10 (médias) disponibles pour le blog en cours d'utilisation.</p> 11 11 … … 85 85 <p>Vous pouvez attacher un fichier à un billet très facilement. Commencez par 86 86 créer un nouveau billet et enregistrez-le. Cliquez alors sur "ajouter un fichier 87 au billet" pour ouvrir l a médiathèque.</p>87 au billet" pour ouvrir le gestionnaire de médias.</p> 88 88 89 89 <p>En cliquant sur l'icône [+] (Attacher un fichier au billet) vous pourrez -
locales/fr/help/core_post.html
r1874 r1999 5 5 6 6 <body> 7 8 7 <h4>Rédaction du billet</h4> 9 8 … … 34 33 <dd>Permet de choisir l'état du billet après enregistrement : 35 34 <ul> 36 <li><strong> en attente</strong> : en attente de publication.</li>37 <li><strong> programmé</strong> : le billet sera mis en ligne aux date et heure35 <li><strong>En attente</strong> : en attente de publication.</li> 36 <li><strong>Programmé</strong> : le billet sera mis en ligne aux date et heure 38 37 indiquées dans le champ <em>Publié le</em>.</li> 39 <li><strong> non publié</strong> : billet hors ligne.</li>40 <li><strong> publié</strong> : billet en ligne.</li>38 <li><strong>Non publié</strong> : billet hors ligne.</li> 39 <li><strong>Publié</strong> : billet en ligne.</li> 41 40 </ul> 42 41 </dd> … … 57 56 <dd>Cochez ou décochez la case selon que vous souhaitez permettre ou interdire 58 57 les commentaires sur le billet en particulier. L'option pour permettre ou 59 autoriser de façon générale les commentaires se situe dans le menu P références58 autoriser de façon générale les commentaires se situe dans le menu Paramètres 60 59 du blog.</dd> 61 60 … … 64 63 blog. Cochez ou décochez la case selon que vous souhaitez permettre ou interdire 65 64 les rétroliens sur le billet. L'option pour permettre ou autoriser de façon 66 générale les rétroliens se situe dans le menu P références du blog.</dd>65 générale les rétroliens se situe dans le menu Paramètres du blog.</dd> 67 66 68 67 <dt>Billet sélectionné</dt> … … 87 86 des billets.</dd> 88 87 89 <dt> Pièces jointes</dt>90 <dd>Les pièces jointes sont tous les médias attachés au billet. Le lien91 d'ajout d'une pièce jointe permet de choisir un fichier à ajouter au billet.92 Pensez à sauvegarder votre billet avant de choisir une pièce jointe. Consultez93 l'aide d e la médiathèquepour plus de détails.</dd>88 <dt>Annexes</dt> 89 <dd>Les annexes sont tous les médias attachés au billet. Le lien 90 d'ajout d'une annexee permet de choisir un fichier à ajouter au billet. 91 Pensez à sauvegarder votre billet avant de choisir une annexe. Consultez 92 l'aide du gestionnaire de médias pour plus de détails.</dd> 94 93 </dl> 95 94 96 95 <h4>Commentaires</h4> 97 96 <dl> 98 <dt>Liste les commentaires </dt>99 <dd>Depuis l'onglet s<em>Commentaires</em> vous pouvez lire et changer l'état100 des commentaires de votre billet. Suivant vos permissions, vous pouvez modifier,101 mettre en ligne ou hors ligne, supprimer ou classer comme commentaire 97 <dt>Liste les commentaires et rétroliens</dt> 98 <dd>Depuis l'onglet <em>Commentaires</em> vous pouvez lire et changer l'état 99 des commentaires (et rétroliens) de votre billet. Suivant vos permissions, vous pouvez modifier, 100 mettre en ligne ou hors ligne, supprimer ou classer comme commentaire (ou rétrolien) 102 101 indésirable.</dd> 103 102 104 103 <dt>Ajouter un commentaire</dt> 105 104 <dd>Depuis l'onglet <em>Ajouter un commentaire</em> vous pouvez répondre 106 105 directement à un commentaire sans passer par votre blog. Cette interface vous 107 106 permet également de saisir votre commentaire en xhtml, sans limitation. Vous 108 devrez remplir les champs de la même manière qu'en modifiant un commentaire</dd> 107 devrez remplir les champs de la même manière qu'en modifiant un commentaire.</dd> 108 </dl> 109 110 <h4>Ajouter un commentaire</h4> 111 <dl> 112 <dt>Nom</dt> 113 <dd>Nom de l'auteur. Ce champ est obligatoire.</dd> 114 115 <dt>Email</dt> 116 <dd>Adresse mail de l'auteur du commmentaire.</dd> 117 118 <dt>Site web</dt> 119 <dd>URL du site ou du blog de l'auteur du commentaire.</dd> 120 121 <dt>Commentaire</dt> 122 <dd>Contenu du commentaire. Ce champ utilise la syntaxe xhtml.</dd> 109 123 </dl> 110 124 -
locales/fr/help/core_posts.html
r1874 r1999 17 17 <dt>État</dt> 18 18 <dd><ul> 19 <li><strong> en attente</strong> : en attente de publication.</li>20 <li><strong> programmé</strong> : le billet sera mis en ligne aux date et heure19 <li><strong>En attente</strong> : en attente de publication.</li> 20 <li><strong>Programmé</strong> : le billet sera mis en ligne aux date et heure 21 21 indiquées dans le champ <em>Publié le</em>.</li> 22 <li><strong> non publié</strong> : billet hors ligne.</li>23 <li><strong> publié</strong> : billet en ligne.</li>22 <li><strong>Non publié</strong> : billet hors ligne.</li> 23 <li><strong>Publié</strong> : billet en ligne.</li> 24 24 </ul></dd> 25 25 … … 50 50 51 51 <ul> 52 <li><strong>Publier</strong> : mettre le billet en ligne ,</li>53 <li><strong>Hors ligne</strong> : mettre le billet hors ligne ,</li>52 <li><strong>Publier</strong> : mettre le billet en ligne.</li> 53 <li><strong>Hors ligne</strong> : mettre le billet hors ligne.</li> 54 54 <li><strong>Programmer</strong> : programmer le billet pour mise en ligne à la date de 55 publication ,</li>56 <li><strong>En attente</strong> : en attente de publication ,</li>55 publication.</li> 56 <li><strong>En attente</strong> : en attente de publication.</li> 57 57 <li><strong>Changer de catégorie</strong> : envoie sur la liste des catégories pour 58 changer celle des billets sélectionnés ,</li>58 changer celle des billets sélectionnés.</li> 59 59 <li><strong>Changer l'auteur</strong> : permet de changer l'auteur du billet en indiquant 60 l'identifiant de l'utilisateur qui deviendra le nouvel auteur ,</li>60 l'identifiant de l'utilisateur qui deviendra le nouvel auteur.</li> 61 61 <li><strong>Supprimer</strong> : supprime le billet (cette opération est irréversible).</li> 62 62 </ul> -
locales/fr/help/core_trackbacks.html
r1874 r1999 7 7 8 8 <h4>Rétroliens</h4> 9 <p>Pour envoyerun rétrolien cliquez sur le lien <em>Faire des rétroliens</em>.9 <p>Pour faire un rétrolien cliquez sur le lien <em>Faire des rétroliens</em>. 10 10 Si vous ne voyez pas ce lien, vérifiez que votre billet est bien dans l'état 11 11 <em>publié</em>.</p> … … 16 16 vous souhaitez envoyer un rétrolien.</dd> 17 17 18 19 18 <dt>Envoyer l'extrait</dt> 20 19 <dd>Par défaut, ce champ comporte le début de votre billet. C'est ce qui sera … … 22 21 Vous pouvez modifier le contenu de cette "accroche" en saisissant directement le 23 22 texte de votre choix dans ce champ.</dd> 24 25 23 26 24 <dt>Découverte automatique des URLs à rétrolier</dt> -
locales/fr/help/core_user.html
r1874 r1999 8 8 <h4>Informations utilisateur</h4> 9 9 <dl> 10 <dt>Identifiant (login)</dt> 11 <dd>Il doit être composé d'au moins 2 caractères (lettres non accentuées, chiffres ou symboles, pas d'espace). Ce champ est obligatoire.</dd> 10 <dt>Nom d'utilisateur</dt> 11 <dd>Il doit être composé d'au moins 2 caractères (lettres non accentuées, 12 chiffres ou symboles, pas d'espace). Ce champ est obligatoire.</dd> 12 13 13 14 <dt>Mot de passe</dt> 14 <dd>Indiquez deux fois le mot de passe dans les champs <em>Mot de passe</em> et <em>Confirmer le mot de15 passe</em>. Le mot de passe doit être long d'au moins 6 caractères.16 Ces deux champs sont obligatoires.</dd>15 <dd>Indiquez deux fois le mot de passe dans les champs <em>Mot de passe</em> 16 et <em>Confirmer le mot de passe</em>. Le mot de passe doit être long d'au 17 moins 6 caractères. Ces deux champs sont obligatoires.</dd> 17 18 18 19 <dt>Nom, Prénom</dt> 19 20 <dd>Si le pseudonyme n'est pas renseigné, le nom de l'auteur qui sera affiché 20 sera composé des nom et prénomrenseignés dans ces champs.</dd>21 sera composé des noms et prénoms renseignés dans ces champs.</dd> 21 22 22 23 <dt>Pseudonyme</dt> 23 <dd>Vous pouvez choisir ici le pseudonyme sous lequel vos billets seront signés. S'il est renseigné, le pseudonyme se substitue au nom et au prénom.</dd> 24 <dd>Vous pouvez choisir ici le pseudonyme sous lequel vos billets seront signés. 25 S'il est renseigné, le pseudonyme se substitue au nom et au prénom.</dd> 24 26 25 27 <dt>Email</dt> 26 <dd>Cette adresse sera utilisée lors de la régénération du mot de passe depuis la fenêtre d'authentification de dotclear.</dd> 28 <dd>Cette adresse sera utilisée lors de la régénération du mot de passe depuis 29 la fenêtre d'authentification de dotclear.</dd> 27 30 28 31 <dt>URL</dt> … … 38 41 <dd>Le statut par défaut des billets peut être déterminé à : 39 42 <ul> 40 <li><strong> en attente:</strong> le statut de publication n'a pas encore43 <li><strong>En attente :</strong> le statut de publication n'a pas encore 41 44 été décidé.</li> 42 <li><strong> programmé:</strong> le billet sera mis en ligne aux date et45 <li><strong>Programmé :</strong> le billet sera mis en ligne aux date et 43 46 heure indiquées dans le champ <em>Publié le</em>.</li> 44 <li><strong> non publié:</strong> billet hors ligne.</li>45 <li><strong> publié:</strong> billet en ligne.</li>47 <li><strong>Non publié :</strong> billet hors ligne.</li> 48 <li><strong>Publié :</strong> billet en ligne.</li> 46 49 </ul> 47 50 </dd> … … 58 61 <dd>Ce choix déterminera l'affichage de l'heure de publication des billets.</dd> 59 62 60 <dt>Changement de mot de passe requis à la prochaine connexion</dt> 61 <dd>Cocher cette case permettra au nouvel utilisateur de choisir par lui-même son mot de passe à sa première connexion.</dd> 63 <dt>Changement de mot de passe requis pour la connexion</dt> 64 <dd>Cocher cette case permettra au nouvel utilisateur de choisir par lui-même 65 son mot de passe de connexion.</dd> 62 66 63 67 <dt>Super administrateur</dt> 64 <dd>Ce choix attribuera toutes les permissions au profil utilisateur sur l'ensemble des blogs de l'installation.</dd> 68 <dd>Ce choix attribuera toutes les permissions au profil utilisateur sur 69 l'ensemble des blogs de l'installation.</dd> 65 70 </dl> 66 71 … … 68 73 <dl> 69 74 <dt>Format de la liste des mots-clés</dt> 70 <dd>Ce choix permet, dans la page d'édition d'un billet, d'afficher tous les mots-clés71 disponibles ou seulement les plus utilisés.</dd>75 <dd>Ce choix permet, dans la page d'édition d'un billet, d'afficher tous les 76 mots-clés disponibles ou seulement les plus utilisés.</dd> 72 77 </dl> 73 78 </body> -
locales/fr/help/core_user_pref.html
r1874 r1999 10 10 <dt>Nom, Prénom</dt> 11 11 <dd>Si le pseudonyme n'est pas renseigné, le nom de l'auteur qui sera affiché 12 sera composé des nom s et prénomsrenseignés dans ces champs.</dd>12 sera composé des nom et prénom renseignés dans ces champs.</dd> 13 13 14 14 <dt>Pseudonyme</dt> 15 <dd>Vous pouvez choisir ici le nom sous lequel vos billets seront signés. S'il est renseigné, le pseudonyme se substitue au nom et au prénom.</dd> 15 <dd>Vous pouvez choisir ici le pseudonyme sous lequel vos billets seront signés. 16 S'il est renseigné, le pseudonyme se substitue au nom et au prénom.</dd> 16 17 17 18 <dt>Email</dt> … … 47 48 <dd>Le statut par défaut des billets peut être déterminé à : 48 49 <ul> 49 <li><strong> en attente:</strong> le statut de publication n'a pas encore50 <li><strong>En attente :</strong> le statut de publication n'a pas encore 50 51 été décidé.</li> 51 <li><strong> programmé:</strong> le billet sera mis en ligne aux date et52 <li><strong>Programmé :</strong> le billet sera mis en ligne aux date et 52 53 heure indiquées dans le champ <em>Publié le</em>.</li> 53 <li><strong> non publié:</strong> billet hors ligne.</li>54 <li><strong> publié:</strong> billet en ligne.</li>54 <li><strong>Non publié :</strong> billet hors ligne.</li> 55 <li><strong>Publié :</strong> billet en ligne.</li> 55 56 </ul> 56 57 </dd> … … 63 64 <dd>Permet d'activer ou non l'éditeur visuel des billets et des catégories.</dd> 64 65 65 <dt>Activer l'interface avancée de la médiathèque</dt> 66 <dd>Cette option permet d'envoyer plusieurs fichiers à la fois sur le serveur. 67 Nécessite la présence du plugin Flash dans votre navigateur.</dd> 66 <dt>Activer l'interface avancée du gestionnaire de médias</dt> 67 <dd>Cette option permet d'envoyer plusieurs fichiers à la fois sur le serveur.</dd> 68 68 69 69 <dt>Modules du tableau de bord</dt> … … 71 71 ces blocs sur le tableau de bord.</dd> 72 72 73 <dt>Format de la liste de tags</dt>74 <dd>Ce choix permet, dans la page d'édition d'un billet, d'afficher tous les tags73 <dt>Format de la liste de mots-clés</dt> 74 <dd>Ce choix permet, dans la page d'édition d'un billet, d'afficher tous les mots-clés 75 75 disponibles ou seulement les plus utilisés.</dd> 76 76 </dl> 77 77 78 <h4>Mes favoris</h4> 78 79 <dl> 79 80 <dt>Mes favoris</dt> 80 <dd>Cette zone affiche les favoris actuellement utilisés. Ils peuvent être réordonnés81 au moyen de la souris si javascript est activé dans votre navigateur. Sinon, une case82 permet d'attribuer à chaque favori un numéro d'ordre. Lorsque vous avez terminé, n'oubliez83 pas d'enregistrer vos modifications. Vous pouvez aussi sélectionner les favoris à supprimer84 du tableau de bord.</dd>81 <dd>Cette zone affiche les favoris actuellement utilisés. Ils peuvent être 82 réordonnés au moyen de la souris si javascript est activé dans votre navigateur. 83 Sinon, une case permet d'attribuer à chaque favori un numéro d'ordre. Lorsque 84 vous avez terminé, n'oubliez pas d'enregistrer vos modifications. Vous pouvez 85 aussi sélectionner les favoris à supprimer du tableau de bord.</dd> 85 86 86 87 <dt>Favoris disponibles</dt> 87 88 <dd>Tous les plugins permettant d'être mis en favoris sont listés ici. 88 Cochez les cases correspondantes aux favoris que vous souhaitez utiliser, puis ajoutez-les.</dd> 89 Cochez les cases correspondantes aux favoris que vous souhaitez utiliser, puis 90 ajoutez-les.</dd> 89 91 </dl> 90 92 </body> -
locales/fr/help/themeEditor.html
r1874 r1999 6 6 7 7 <body> 8 <h4>Éditeur de thème</h4> 8 9 <p>L'éditeur de thème vous permet de modifier les fichiers template, les feuilles 9 10 de style et les fichiers JavaScript de votre thème en cours d'utilisation.</p> … … 11 12 <p>La liste des fichiers est divisée en trois parties :</p> 12 13 <ul> 13 <li> Fichiers template : les templates</li>14 <li> Fichiers CSS : les feuilles de style</li>15 <li> Fichiers JavaScript</li>14 <li>fichiers template : les templates,</li> 15 <li>fichiers CSS : les feuilles de style,</li> 16 <li>fichiers JavaScript.</li> 16 17 </ul> 17 18 … … 34 35 de template</a>.</p> 35 36 36 <p>Notez que vous pouvez activer la coloration syntaxique dans vos préférences (onglet « Mes options »).</p> 37 <p>Notez que vous pouvez activer la coloration syntaxique dans vos préférences 38 (onglet « Mes options »).</p> 37 39 38 40 </body> -
plugins/pages/list.php
r1903 r1999 25 25 else 26 26 { 27 $pager = new pager($page,$this->rs_count,$nb_per_page,10); 28 $pager->html_prev = $this->html_prev; 29 $pager->html_next = $this->html_next; 30 $pager->var_page = 'page'; 27 $pager = new dcPager($page,$this->rs_count,$nb_per_page,10); 31 28 32 29 $html_block = … … 44 41 } 45 42 46 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';43 echo $pager->getLinks(); 47 44 48 45 $blocks = explode('%s',$html_block); … … 59 56 echo $blocks[1]; 60 57 61 echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>';58 echo $pager->getLinks(); 62 59 } 63 60 } … … 125 122 ); 126 123 127 $page = !empty($_GET['page']) ? (integer) $_GET['page']: 1;124 $page = !empty($_GET['page']) ? max(1,(integer) $_GET['page']) : 1; 128 125 $nb_per_page = 30; 129 126 -
plugins/pages/list.php
r1926 r1999 28 28 29 29 $html_block = 30 '<table class=" clear"><tr>'.31 '<th colspan=" 2">'.__('Title').'</th>'.30 '<table class="maximal dragable"><thead><tr>'. 31 '<th colspan="3">'.__('Title').'</th>'. 32 32 '<th>'.__('Date').'</th>'. 33 33 '<th>'.__('Author').'</th>'. … … 35 35 '<th>'.__('Trackbacks').'</th>'. 36 36 '<th>'.__('Status').'</th>'. 37 '</tr> %s</table>';37 '</tr></thead><tbody id="pageslist">%s</tbody></table>'; 38 38 39 39 if ($enclose_block) { … … 47 47 echo $blocks[0]; 48 48 49 $count = 0; 49 50 while ($this->rs->fetch()) 50 51 { 51 echo $this->postLine(); 52 echo $this->postLine($count); 53 $count ++; 52 54 } 53 55 … … 58 60 } 59 61 60 private function postLine( )62 private function postLine($count) 61 63 { 62 64 $img = '<img alt="%1$s" title="%1$s" src="images/%2$s" />'; … … 97 99 98 100 $res .= 101 '<td class="nowrap handle minimal">'.form::field(array('order['.$this->rs->post_id.']'),2,3,$count+1,'position','',false,'title="'.sprintf(__('position of %s'),html::escapeHTML($this->rs->post_title)).'"').'</td>'. 99 102 '<td class="nowrap">'. 100 103 form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable(),'title="'.__('Select this page').'"').'</td>'. … … 138 141 } 139 142 143 class dcPagesActionsPage extends dcPostsActionsPage { 144 145 public function __construct($core,$uri,$redirect_args=array()) { 146 parent::__construct($core,$uri,$redirect_args); 147 $this->redirect_fields = array(); 148 149 } 150 151 public function beginPage($breadcrumb='',$header='') { 152 echo '<html><head><title>'.__('Pages').'</title>'. 153 dcPage::jsLoad('index.php?pf=pages/list.js'). 154 # --BEHAVIOR-- adminBeforePostDelete 155 $core->callBehavior('adminPagesActionsHeaders'). 156 '<script type="text/javascript">'. 157 '//<![CDATA['. 158 dcPage::jsVar('dotclear.msg.confirm_delete_posts',__("Are you sure you want to delete selected pages?")). 159 '//]]>'. 160 '</script></head><body>'; 161 } 162 163 public function endPage() { 164 echo '</body></html>'; 165 } 166 public function loadDefaults() { 167 parent::loadDefaults(); 168 unset ($this->combos[__('Mark')]); 169 unset ($this->actions['selected']); 170 unset ($this->actions['unselected']); 171 $this->actions['reorder']=array('dcPagesActionsPage','doReorderPages'); 172 } 173 public function process() { 174 // fake action for pages reordering 175 if (!empty($this->from['reorder'])) { 176 $this->from['action']='reorder'; 177 } 178 parent::process(); 179 } 180 181 public static function doReorderPages($core, dcPostsActionsPage $ap, $post) { 182 foreach($post['order'] as $post_id => $value) { 183 if (!$core->auth->check('publish,contentadmin',$core->blog->id)) 184 throw new Exception(__('You are not allowed to change this entry status')); 185 186 $strReq = "WHERE blog_id = '".$core->con->escape($core->blog->id)."' ". 187 "AND post_id ".$core->con->in($post_id); 188 189 #If user can only publish, we need to check the post's owner 190 if (!$core->auth->check('contentadmin',$core->blog->id)) 191 $strReq .= "AND user_id = '".$core->con->escape($core->auth->userID())."' "; 192 193 $cur = $core->con->openCursor($core->prefix.'post'); 194 195 $cur->post_position = (integer) $value-1; 196 $cur->post_upddt = date('Y-m-d H:i:s'); 197 198 $cur->update($strReq); 199 $core->blog->triggerBlog(); 200 201 } 202 $ap->redirect(array('reo'=>1),false); 203 } 204 } 205 140 206 # Actions combo box 141 $combo_action = array(); 142 if ($core->auth->check('publish,contentadmin',$core->blog->id)) 143 { 144 $combo_action[__('Publish')] = 'publish'; 145 $combo_action[__('Unpublish')] = 'unpublish'; 146 $combo_action[__('Schedule')] = 'schedule'; 147 $combo_action[__('Mark as pending')] = 'pending'; 148 } 149 if ($core->auth->check('admin',$core->blog->id)) { 150 $combo_action[__('Change author')] = 'author'; 151 } 152 if ($core->auth->check('delete,contentadmin',$core->blog->id)) 153 { 154 $combo_action[__('Delete')] = 'delete'; 155 } 207 208 $pages_actions_page = new dcPagesActionsPage($core,'plugin.php',array('p'=>'pages')); 209 210 $pages_actions_page->process(); 211 156 212 157 213 # --BEHAVIOR-- adminPagesActionsCombo … … 164 220 <head> 165 221 <title><?php echo __('Pages'); ?></title> 166 <script type="text/javascript" src="js/_posts_list.js"></script> 222 <?php 223 echo dcPage::jsLoad('js/jquery/jquery-ui.custom.js'). 224 dcPage::jsLoad('index.php?pf=pages/list.js'); 225 ?> 167 226 <script type="text/javascript"> 168 227 //<![CDATA[ … … 180 239 )); 181 240 241 if (!empty($_GET['upd'])) { 242 dcPage::success(__('Selected pages have been successfully updated.')); 243 } elseif (!empty($_GET['del'])) { 244 dcPage::success(__('Selected pages have been successfully deleted.')); 245 } elseif (!empty($_GET['reo'])) { 246 dcPage::success(__('Selected pages have been successfully reordered.')); 247 } 182 248 echo 183 249 '<p class="top-add"><a class="button add" href="'.$p_url.'&act=page">'.__('New page').'</a></p>'; … … 187 253 # Show pages 188 254 $post_list->display($page,$nb_per_page, 189 '<form action="p osts_actions.php" method="post" id="form-entries">'.255 '<form action="plugin.php" method="post" id="form-entries">'. 190 256 191 257 '%s'. … … 195 261 196 262 '<p class="col right"><label for="action" class="classic">'.__('Selected pages action:').'</label> '. 197 form::combo('action',$ combo_action).263 form::combo('action',$pages_actions_page->getCombo()). 198 264 '<input type="submit" value="'.__('ok').'" /></p>'. 199 265 form::hidden(array('post_type'),'page'). 200 form::hidden(array('redir'),html::escapeHTML($_SERVER['REQUEST_URI'])). 266 form::hidden(array('p'),'pages'). 267 '</div>'. 201 268 $core->formNonce(). 202 '</div>'. 269 '<br class="clear"/>'. 270 '<input type="submit" value="'.__('Save categories order').'" name="reorder" class="clear"/>'. 203 271 '</form>'); 204 272 }
Note: See TracChangeset
for help on using the changeset viewer.