DotClear : faciliter la sélection des billets
Par Benjamin le samedi 11 décembre 2004, 01h46 - DotClear - Lien permanent - URL miniature
Par défaut, on peut choisir de sélectionner ou non un billet dans la page d'édition dudit billet (dans le cadre "Plus d'options"), mais lorsqu'on veut sélectionner ou désélectionner plusieurs billets, la manipulation devient vite longue et peu pratique (à mon goût).
Pour permettre la sélection des billets directement dans la page d'affichage des billets (page par défaut de la zone d'administration), j'ai donc modifié quatre fichiers (parmi ceux-ci encore une classe en plus, c'est vraiment pas bien du tout ça) pour avoir au final un lien "sélectionner" à côté de "mettre hors ligne".

Voici donc les différentes modifications que j'ai faites pour arriver à mes fins.
dans /inc/classes/class.blog.php
//après # Inversion de status d'un billet function statusPost($id) { $updReq = 'UPDATE '.$this->t_post.' SET '. 'post_pub = 1-post_pub '. //',post_upddt = SYSDATE() '. 'WHERE post_id = '.$id.' '; if (!$this->con->execute($updReq)) { $this->setError('MySQL : '.$this->con->error(),2000); return false; } else { $this->triggerMassUpd(); $this->tiggerLog('post',$id,'Change status'); } } //j'ai ajouté # Inversion de la selection d'un billet function selectedPost($id) { $updReq = 'UPDATE '.$this->t_post.' SET '. 'post_selected = 1-post_selected '. 'WHERE post_id = '.$id.' '; if (!$this->con->execute($updReq)) { $this->setError('MySQL : '.$this->con->error(),2000); return false; } else { $this->triggerMassUpd(); $this->tiggerLog('post',$id,'Change selected status'); } }
dans /l10n/fr/main.lang.php (choisi selon la langue utilisée bien sûr)
//après $GLOBALS['__l10n']['set online'] = 'mettre en ligne'; $GLOBALS['__l10n']['set offline'] = 'mettre hors ligne'; //j'ai ajouté $GLOBALS['__l10n']['set selected'] = 'sélectionner'; $GLOBALS['__l10n']['set unselected'] = 'déselectionner';
dans /ecrire/poster.php
//après # Changement du status d'un billet if (!empty($_GET['cancel']) && $is_editable) { if ($blog->statusPost($post_id) !== false) { header('Location: '.$return_link); exit; } else { $err = $blog->error(1); } } //j'ai ajouté # Changement de la selection d'un billet if (!empty($_GET['select']) && $is_editable) { if ($blog->selectedPost($post_id) !== false) { header('Location: '.$return_link); exit; } else { $err = $blog->error(1); } }
et dans /ecrire/index.php
//j'ai remplacé if ($posts->f('post_selected') == 1) { $post_selected = '<img src="images/selected.png" '. 'alt="'.__('This entry is selected').'" class="status" />'; } else { $post_selected = ''; } //par if ($posts->f('post_selected') == 1) { $post_select = __('set unselected'); $post_selected = '<img src="images/selected.png" '. 'alt="'.__('This entry is selected').'" class="status" />'; } else { $post_select = __('set selected'); $post_selected = ''; } //et j'ai aussi remplacé if ($_SESSION['sess_user_level'] == 9 || $posts->f('user_id') == $_SESSION['sess_user_id']) { $edit_links = '[ <strong><a href="poster.php?post_id='.$posts->f('post_id').'">'. __('edit').'</a></strong> | '. '<a href="poster.php?post_id='.$posts->f('post_id').'&cancel=1">'. $post_cancel.'</a> ]'; } //par if ($_SESSION['sess_user_level'] == 9 || $posts->f('user_id') == $_SESSION['sess_user_id']) { $edit_links = '[ <strong><a href="poster.php?post_id='.$posts->f('post_id').'">'. __('edit').'</a></strong> | '. '<a href="poster.php?post_id='.$posts->f('post_id').'&cancel=1">'. $post_cancel.'</a> | '. '<a href="poster.php?post_id='.$posts->f('post_id').'&select=1">'. $post_select.'</a> ] '; }
Je vous invite à ne pas faire toutes ces modifications inutiles mais si vous insistez, sauvegardez bien les fichiers originaux parce qu'on est jamais trop prudent 
Commentaires
en effet
je dirais la même chose que mitch
Je dirais même plus que c'est joli toutes ces couleurs
Ca fonctionne nikel chez moi !