Fork me on GitHub




(1) 2 »


Bloquer l'édition des commentaires dans xoops 2.5
Régulier
Inscrit: 06/06/2004 21:24
De Paris
Messages: 245
Bonjour,

J'ai installer xoops 2.5, et ai remarqué que les utilisateurs peuvent éditer leurs commentaires sans limite de temps.

Ce qui me pose problème car du coup un utilisateur peut effacer son propos 2 jours après, et nier a voir dit certaine chose... plus de trace de la conversation originelle...

J'aimerais soit bloquer complètement cette possibilité d'éditer, soit qu'elle se bloque après un certain temps comme dans certain forum (10min)

Peut-etre y'a t il une option qui le permet que je n'ai pas vu ? sinon je recherche une piste pour effectuer cette modif...

merci d'avance

PS: Dsl pour le doublon, je pense qu'il est convient mieux de le placer ici.

Posté le : 23/11/2010 18:21
Partager Twitter Partagez cette article sur GG+
Re: Bloquer l'édition des commentaires dans xoops 2.5
Semi pro
Inscrit: 01/08/2005 19:06
Messages: 1851
attention au double post
https://www.frxoops.org/modules/newbb/ ... hp?topic_id=33680&forum=5

a tu regarder directement dans les preference du module news?

Posté le : 23/11/2010 19:59
Partager Twitter Partagez cette article sur GG+
Re: Bloquer l'édition des commentaires dans xoops 2.5
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
En ce qui concerne le délai d'édition, je pense que tu aurais souhaité le réglage comme celui existant dans le module forum newbb/cbb. Mais il n'en est rien, il n'existe rien du même style dans le système de commentaire (à moins qu'une évolution ait eu lieu en 2.5 mais je ne crois pas).

En revanche, j'avoue volontiers qu'une telle fonctionnalité serait appréciée dans une future mouture de Xoops.

Dans le forum de mon site d'aquariums, j'ai laissé la possibilité de modifier les messages pendant 2 jours... je trouve que c'est déjà pas mal, car comme tu le dis, beaucoup de site bloquent cette solution après quelques minutes seulement parfois. Le problème vient de la modération : rien n'avertit les admins/modos d'une modification d'un message et c'est un réel souci dans des sites communautaires actifs.

Posté le : 25/11/2010 17:42

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+
Re: Bloquer l'édition des commentaires dans xoops 2.5
Semi pro
Inscrit: 08/03/2006 21:08
Messages: 1172
Je vous confirme qu'on ne peut pas le faire sur xoops 2.5.

Peut être dans xoops 3.0

Posté le : 25/11/2010 18:24
Partager Twitter Partagez cette article sur GG+
Re: Bloquer l'édition des commentaires dans xoops 2.5
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
Je t'indique un hack compliqué pour obtenir une fonction de blocage de l'édition des commentaires des membres dans tout Xoops!

Attention : (très) bon niveau de programmation recommandé pour effectuer les modifications. De plus, attendre la validation par un développeur de l'équipe Xoops actuelle avant de faire cela sur un site en production. Je tourne sur une plateforme Xoops 2.0.1x, donc je n'ai pas vérifié si cela fonctionne sous une Xoops 2.4 ou 2.5.

Il faut modifier manuellement 2 fichiers : root/class/commentrenderer.php et root/modules/system/templates/system_comment.html

Le plus difficile est d'appliquer le hack dans commentrenderer.php, la modification dans le fichier template est simplissime ensuite.

L'objectif est de créer une variable booléenne, nommée 'canedit', qui va déterminer, ou non, l'affichage du bouton 'edit'. Le délai, dans la variable $the_delay est exprimé en minutes; dans mon exemple, le délai est fixé à 1 jour (24x60=1440 minutes).

Dans le fichier commentrenderer.php, il faut ajouter ce code (3 fois, dont 1 différent...) :

1- Dans la function renderFlatView (environ ligne 100 dans mon fichier), juste vers la fin de la fonction (vers ligne 120), il faut remplacer :
$this->_tpl->append('comments', array('id' => $this->_comments[$i]->getVar('com_id'), 'title' => $title'text' => $text'date_posted' => formatTimestamp($this->_comments[$i]->getVar('com_created'), 'm'), 'date_modified' => formatTimestamp($this->_comments[$i]->getVar('com_modified'), 'm'), 'poster' => $poster));


par

//hack date edit - JF Fortier - www.aquaportail.com - 25 nov, 2010
$created_date $this->_comments[$i]->getVar('com_created');
$the_delay 1440// 24 hours = 1440 minutes -set this value to your own
$canEdit = (time()-$created_date) < ($the_delay*60);
$this->_tpl->append('comments', array('id' => $this->_comments[$i]->getVar('com_id'), 'title' => $title'text' => $text'date_posted' => formatTimestamp($this->_comments[$i]->getVar('com_created'), 'm'), 'date_modified' => formatTimestamp($this->_comments[$i]->getVar('com_modified'), 'm'), 'poster' => $poster'canedit' => $canEdit));


2- Dans la function renderThreadView (environ ligne 140 dans mon fichier), juste vers la fin de la fonction (vers ligne 180), il faut remplacer :
$this->_tpl->append('comments', array('pid' => $tree[$comment_id]['obj']->getVar('com_pid'), 'id' => $tree[$comment_id]['obj']->getVar('com_id'), 'itemid' => $tree[$comment_id]['obj']->getVar('com_itemid'), 'rootid' => $tree[$comment_id]['obj']->getVar('com_rootid'), 'title' => $title'text' => $text'date_posted' => formatTimestamp($tree[$comment_id]['obj']->getVar('com_created'), 'm'), 'date_modified' => formatTimestamp($tree[$comment_id]['obj']->getVar('com_modified'), 'm'), 'poster' => $this->_getPosterArray($tree[$comment_id]['obj']->getVar('com_uid')), 'replies' => $replies'show_replies' => $show_replies));


par

//hack date edit - JF Fortier - www.aquaportail.com - 25 nov, 2010
$created_date $tree[$comment_id]['obj']->getVar('com_created');
$the_delay 1440// 24 hours = 1440 minutes -set this value to your own
$canEdit = (time()-$created_date) < ($the_delay*60);
$this->_tpl->append('comments', array('pid' => $tree[$comment_id]['obj']->getVar('com_pid'), 'id' => $tree[$comment_id]['obj']->getVar('com_id'), 'itemid' => $tree[$comment_id]['obj']->getVar('com_itemid'), 'rootid' => $tree[$comment_id]['obj']->getVar('com_rootid'), 'title' => $title'text' => $text'date_posted' => formatTimestamp($tree[$comment_id]['obj']->getVar('com_created'), 'm'), 'date_modified' => formatTimestamp($tree[$comment_id]['obj']->getVar('com_modified'), 'm'), 'poster' => $this->_getPosterArray($tree[$comment_id]['obj']->getVar('com_uid')), 'replies' => $replies'show_replies' => $show_replies'canedit' => $canEdit));


3- Dans la function renderNestView (environ ligne 235 dans mon fichier), juste vers la fin de la fonction (vers ligne 265), il faut remplacer :
$this->_tpl->append('comments', array('pid' => $tree[$comment_id]['obj']->getVar('com_pid'), 'id' => $tree[$comment_id]['obj']->getVar('com_id'), 'itemid' => $tree[$comment_id]['obj']->getVar('com_itemid'), 'rootid' => $tree[$comment_id]['obj']->getVar('com_rootid'), 'title' => $title'text' => $text'date_posted' => formatTimestamp($tree[$comment_id]['obj']->getVar('com_created'), 'm'), 'date_modified' => formatTimestamp($tree[$comment_id]['obj']->getVar('com_modified'), 'm'), 'poster' => $this->_getPosterArray($tree[$comment_id]['obj']->getVar('com_uid')), 'replies' => $replies));


par

//hack date edit - JF Fortier - www.aquaportail.com - 25 nov, 2010
$created_date $tree[$comment_id]['obj']->getVar('com_created');
$the_delay 1440// 24 hours = 1440 minutes -set this value to your own
$canEdit = (time()-$created_date) < ($the_delay*60);
$this->_tpl->append('comments', array('pid' => $tree[$comment_id]['obj']->getVar('com_pid'), 'id' => $tree[$comment_id]['obj']->getVar('com_id'), 'itemid' => $tree[$comment_id]['obj']->getVar('com_itemid'), 'rootid' => $tree[$comment_id]['obj']->getVar('com_rootid'), 'title' => $title'text' => $text'date_posted' => formatTimestamp($tree[$comment_id]['obj']->getVar('com_created'), 'm'), 'date_modified' => formatTimestamp($tree[$comment_id]['obj']->getVar('com_modified'), 'm'), 'poster' => $this->_getPosterArray($tree[$comment_id]['obj']->getVar('com_uid')), 'replies' => $replies'canedit' => $canEdit));


Ca, c'est fait, c'était le plus gros morceau.

Maintenant, il faut modifier le template modules/system/templates/system_comment.html en insérant un test de validité du booléen créé précédemment comme ceci :

<{if $comment.canedit}>le lien pour editer un commentaire<{/if}>


Evidemment, il faut laisser à l'admin/modo la possibilité d'éditer tous les messages et cela va ressembler à ceci pour la modification du template (il faut repérer où est afficher la variable $lang_edit).
Attention : ne pas recopier ce bout de html stricto-sensu! Il tient compte de votre template... c'est le test smarty qui entoure le lien d'édition qui est important.
<{elseif $xoops_isuser == true && $xoops_userid == $comment.poster.id}>
 <
td class="even right">
  <{if 
$comment.canedit}><class=btSearch href="<{$editcomment_link}>&amp;com_id=<{$comment.id}>"><{$lang_edit}></a> <{/if}>


SVP : attendez la validation d'un développeur confirmé de l'équipe Xoops... Ce genre de modif peut facilement planter un site...

Note : évidemment, dans les options admins de Xoops, il faudra forcer la mise à jour des templates pour que les modifications soient visibles.

Ce hack est à réserver aux experts : il est aussi dangereux qu'une pieuvre en colère!

Posté le : 25/11/2010 19:49

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+
Re: Bloquer l'édition des commentaires dans xoops 2.5
Semi pro
Inscrit: 08/03/2006 21:08
Messages: 1172
Salut!

L'idée est très bonne et je ne pense pas que le site risquerait de planter... Par contre c'est pas hyper sur comme méthode.

Le code permet uniquement de cacher le bouton "editer" mais si la personne connais le lien (facile a déduire), elle peut avoir accès au formulaire de modification.

Pour éviter ça il faut mettre une condition lors de l'affichage du formulaire d'édition et aussi lors de l'enregistrement du formulaire.

Du coup la modification peut prendre beaucoup de temps...

Posté le : 25/11/2010 20:51
Partager Twitter Partagez cette article sur GG+
Re: Bloquer l'édition des commentaires dans xoops 2.5
Semi pro
Inscrit: 10/11/2004 13:40
Messages: 1659
Super ce hack , testé sur une 2.5 en changeant la valeur 1440 par 2 (pour 2 minutes)

Merci pour le partage

Posté le : 25/11/2010 21:05

PS : Toujours faire une sauvegarde des fichiers avant de les modifier !
-------------------------------------------
http://www.aideordi.com
Partager Twitter Partagez cette article sur GG+
Re: Bloquer l'édition des commentaires dans xoops 2.5
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
Citation :
mage a écrit :
Le code permet uniquement de cacher le bouton "editer" mais si la personne connais le lien (facile a déduire), elle peut avoir accès au formulaire de modification.

Pour éviter ça il faut mettre une condition lors de l'affichage du formulaire d'édition et aussi lors de l'enregistrement du formulaire.

Entièrement d'accord, mais les sécurités sont déjà présentes en vérification de l'utilisateur.

Par expérience (et je gère plusieurs forums dont un avec près de 1500 msg/jour), si le lien n'est pas là, il ne se passera rien. Et si le membre indélicat veut vraiment enquiquiner l'admin du site, il y a d'autres solutions que d'éditer ses propres messages de commentaires (déjà, il faut les retrouver ). Même si ça laisse une faille, cela stoppera les velléités de 99% des gens.

Mais, je le répète, c'est un hack : il n'a pas de valeur d' "intégration" (il faudrait d'ailleurs une fonction externe pour simplifier, etc...).

Mais cela semble une idée pertinente (pas le hack, mais la possibilité de bloquer l'édition de commentaires) dans les développements et fonctionnalités futures de Xoops.

J'avais même pensé à tester la variable smarty (de l'heure du post) directement dans le template (c'est faisable, en théorie).

Le problème du système de commentaire est qu'il est surclassé un peu par tous les modules (ne serait-ce que pour gérer des url-rewriting maison, on est obligé de réécrire pas mal de code pour le système de coms), il est donc difficile d'appliquer des règles strictes sans casser quelque chose à un moment donné.

Posté le : 25/11/2010 23:35

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+
Re: Bloquer l'édition des commentaires dans xoops 2.5
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
Je réinterviens, la nuit ayant porté conseil : il suffit de modifier le fichier root/include/comment_edit.php pour réaliser un test similaire. je viens de vérifier que tous les surclassements font quand même appel à ce fichier. Il faut donc aller "chercher" la date de création et réaliser à nouveau un test de différence de dates pour protéger totalement le système.

Posté le : 26/11/2010 08:48

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+
Re: Bloquer l'édition des commentaires dans xoops 2.5
Xoops accro
Inscrit: 20/02/2008 20:27
De Belgium
Messages: 2708
Comme déjà répondue au XOOPS.org.

Posté le : 26/11/2010 10:52

Salutations, Gerard.
PS: Excusez mon mauvais français.
De la bonne manière de poser les questions
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

41 Personne(s) en ligne (20 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 41 | Plus ...