Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2007-12-27 14:59:24

osku
Membre
Lieu : 28
Inscription : 2005-06-15

[Astuce jQuery] - Remarquez vos commentateurs :)

Coucou,

Sans plugin (encore) mais en attendant avec du jQuery, vous pouvez facilement mettre en valeur certains des commentaires de votre blog (en fonction de l'adresse web laissé par le commentateur)

J'en parle : http://www.sakeco.net/blog/post/2007/12 … vec-jQuery

Une illustration :
http://www.sakeco.net/blog/post/2007/08 … %3A-Wsuper

Voici le code jQuery (API standard) :

$(document).ready(function(){
$("div#comments dt a[@href*='dotclear.net']").parents("dt").next("dd").addClass("dotclearComment");
$("div#comments dt a[@href*='dotclear.net']").parents("dt").addClass("dotclearComment");
});

On se retrouve avec une classe 'dotclearComment' pour commentaires (blocs dd et dt) dont l'adresse web renseignée contient (le * dans @href* permet cette notion de 'contient') le dotclear.net

Après vous faites ce vous voulez en CSS.. ;-)

PS : Qui c'est qui plugounéise sans utilisez jQuery ? :-)

Hors ligne

#2 2008-01-03 15:18:40

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Codeurs, codeuses :
J'ai ouvert un ticket : http://code.google.com/p/dcplugins/issues/detail?id=6

Merci :)

Hors ligne

#3 2008-01-03 17:26:46

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

une espèce de système de 'rangs' comme dans un forum :

Ça existe déjà : c'est le plugin Rang.

Hors ligne

#4 2008-01-03 19:31:22

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Merci, il m'avait échappé.
Bon avec ça, si on a pas tout déjà pour pondre un joli ploug :)

Hors ligne

#5 2008-01-08 14:33:55

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Bon, je me lance tout doucement dans l'écriture du plugin (mon premier) et je sollicite vos avis et conseils.

Faisons une petite mise au point :
Objectif :
Ecrire un plugin qui personnalise l'affichage des commentaires en fonction des commentateurs, l'adresse mail (donnée obligatoire) serait utilisée par le core pour "planter" une classe CSS définie dans la partie admin de dc2 sur le blog via un {{tpl:CommentClass}} dans le template post.html du thème ou sans aucun tpl ... (à voir)
Ce dont j'ai besoin :
- Un fichier _admin.php pour définir le comportement du plugin sur la partie administration : là, clairement j'ai besoin d'une extension (au même endroit que blogroll,antispam) où je peux renter mes correspondances sous forme de liste éditable (ajout,modif, suppression) de

[Pseudo du commentateur | Email | Classe CSS]

# Pseudo du commentateur : info libre, utile juste à l'administrateur pour s'y retrouver..
# Email : info prise en compte pour déterminer la classe CSS
# Classe CSS : A personnaliser via la feuille de style pour reconnaitre ses commentateurs..

- Un fichier _public.php pour l'ajout automatique (?) ou via 'tpl' de ma classe sur chaque commentaire de ma zone de commentaires.
- Une icône (*.png) et un nom ;)

Avantages du plugin par rapport à la méthode jQuery :
- plus besoin d'avoir une adresse http de renseignée pour avoir une Classe CSS dans les commentaires, la détermination de la classe se fait seulement via l'adresse mèl.
- "rendu" est visible sur des blogs ayant le javascript de désactivé ...

Sur la théorie, je me débrouille un peu près mais sur la mise sur fichiers php, c'est déjà beaucoup plus dur...
En particulier sur la notion d'affichage de liste éditable dans la partie admin..
Ce plugin est sensiblement plus complexe avec le plugin "rang" qui fait que compter via une requête SQL les commentaires de l'auteur directement dans la BDD et est donc sensible à la casse..

Je suis disposé à en discuter ici, ou , par mail, par jabber (mon pseudo @ jabber.fr)

A vous les studios.

Hors ligne

#6 2008-01-09 11:06:36

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Je continue mon monologue (je sais pas si ma démarche est appréciée mais bon)
Je consulte toutes les pages de http://doc.dotclear.net/2.0/resources/plugins

J'ai oublié qu'il me faut :
- index.php : pour la page d'administration du plugin : j'affiche ma liste de commentateurs "classés", j'affiche un bouton pour l'ajout d'un nouveau; sur une ligne existante, je peux supprimer/editer (avec des petits icones ? ou un menu déroulant après sélection des lignes) ; j'affiche également un blabla pour dire quoiquicommentpourquoi.
- penser à gérer la traduction du plugin : des pistes merci !
- définir les fonctions d'édition dans _admin.php propre au plugin. Créer un nouveau tpl..

ça avance très doucement... :)

Hors ligne

#7 2008-01-09 11:59:35

zeiram
Membre
Inscription : 2004-06-27
Site Web

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Une piste pour la traduction : http://mudry.org/blog/post/2006/12/31/3 … -dotclear2. Il s'agit d'une documentation (succincte) que j'avais écrite à l'époque de la création de mes premiers greffons.

Attention, la méthode proposée présuppose un environnement de type Unix (ou Cygwin sous Windows). Mais on trouve en fin du billet un lien vers un greffon (que je n'ai pas testé) qui devrait permettre de tout faire via une interface web.


« Y a des jours où faut pas m'chercher !! Et y a des jours tous les jours ! »

Hors ligne

#8 2008-01-09 12:18:34

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

zeiram a écrit :

Une piste pour la traduction : http://mudry.org/blog/post/2006/12/31/3 … -dotclear2. Il s'agit d'une documentation (succincte) que j'avais écrite à l'époque de la création de mes premiers greffons.

Attention, la méthode proposée présuppose un environnement de type Unix (ou Cygwin sous Windows). Mais on trouve en fin du billet un lien vers un greffon (que je n'ai pas testé) qui devrait permettre de tout faire via une interface web.

C'est déjà une bonne piste :), merci Julien.
J'ai l'environnement de type Unix, je vais donc prendre ta méthode.

Hors ligne

#9 2008-01-09 12:29:21

Lomalarch
Responsable du photocopieur
Lieu : Colombes (92)
Inscription : 2006-05-02
Site Web

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

osku a écrit :

Je continue mon monologue (je sais pas si ma démarche est appréciée mais bon)

Un pas à pas c’est toujours intéressant ;-)


RTFM attitude : https://fr.dotclear.org/documentation/2.0
Le chantier tips, tutos et astuces : http://tips.dotaddict.org/
Rien nulle part??? une petite recherche sul’ forum, alors?: https://forum.dotclear.org/search.php ?

Hors ligne

#10 2008-01-28 14:25:49

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Je fais du surplace..

Comment je peux vous aider à m'aider ?

Hors ligne

#11 2008-01-28 14:39:01

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

En parcourant les très bons billets de Moe sur Clearbricks, je me demande si je ne peux pas faire de la manière suivante:
- Ajouter un champ à la table "commentaires" au moment de l'installation du plugin.
- Ma page admin (index.php) serait simplement une requête SQL pour afficher quelques éléments de la table "commentaires" : Pseudo / E-Mail / nouveau champ créé : classe CSS (unicité de l'email) pour le pseudo, il prend le premier qu'il trouve.
- Pour les fonctions d'édition, je fonctionnerai simplement avec des requêtes SQL de suppression modification..

Corrolaire : si je désinstalle l'extension : mon champ ajouté via mon fichier d'installation serait automatiquement supprimé ?

Comment affecter la classe CSS sans passer par un tpl appellé dans mon fichier post.html ?

bon finalement, j'avance ;) mais vous pouvez m'aider à aller plus vite...

Hors ligne

#12 2008-01-28 15:16:39

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Comment modifier le schéma de ma base de données?
- J'ajoute un champ à ma table commentaire ou finalement je créé une nouvelle table avec des éléments extraits de ma table commentaires ?
Et surtout comment extraire des éléments d'une table existante ? où puis je trouver le nom de ma table commentaire (le nom générique à renseigner dans mon fichier _install.php) ?

Hors ligne

#13 2008-01-28 16:42:21

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

osku a écrit :

où puis je trouver le nom de ma table commentaire (le nom générique à renseigner dans mon fichier _install.php) ?

$core->prefix.'comment'

Hors ligne

#14 2008-01-28 18:14:41

Sasha
Membre
Lieu : Toulouse
Inscription : 2007-09-09
Site Web

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

#10

- en posant des questions très précises

#11

- Il faut plutôt utiliser une table à part , car ça prendra moins de place que de créer des champs pour tous les commentaires existants.

- Clearbricks (sa bibliothèque "UDBMS" si je ne trompe pas de nom) ne permet pas de supprimer des champs ou tables, en raison des problèmes de compatibilité si j'ai bien compris. Donc après désinstallation du plugin, à priori, les champs créés restent, et c'est bien puisqu'on retrouve notre configuration si, plus tard, on décide d'installer le plugin à nouveau.

- Pour modifier la classe sans forcer l'utilisateur à modifier le fichier post.html, tu peux surcharger la fonction template CommentIfMe (voir 1593-1601 de inc/public/class.dc.template.php). Pour cela il suffit à priori de placer dans le fichier _public.php le code suivant :

$core->tpl->addValue('CommentIfMe',array('tplDcCommentClass','CommentIfMe'));

class tplDcCommentClass
{
	public static function CommentIfMe($attr)
	{
		$ret = isset($attr['return']) ? $attr['return'] : 'me';
		$ret = html::escapeHTML($ret);
		
		return
		'<?php if ($_ctx->comments->isMe()) { '.
		"echo '".addslashes($ret)."'; } ".
		 "echo tplDcCommentClass::getClass(); ?>";
	}
	
	public static function getClass()
	{
		$classe_perso = 'classe-speciale'; // Reste à programmer cette étape
		$classe_perso = html::escapeHTML($classe_perso);
		return html::escapeHTML($classe_perso);
	}
}

- C'est bien d'avancer, n'oublies pas de "commiter" pour que nous puissions voir où tu en es

#12

- C'est une question de conception, mais pourquoi extraire des éléments de la table s'il faut simplement définir certaines règles qui permettront d'assigner des classes différentes aux commentaires ?

Sinon, la manière de s'y prendre, elle est pratiquement toujours la même :

// Sélectionne les champs comment_id et comment_author des commentaires #1, #42 et #256
$strReq =
'SELECT comment_id, comment_author '.
'FROM '.$core->prefix.'comment '.
'WHERE comment_id  IN (1, 42, 256)';

// Exécute la requête SQL
$rs = $c_rs->core->con->select($strReq);

// Parcourt les lignes d'enregistrement
while ($rs->fetch())
{
	$rs->comment_id; // valeur d'un champ particulier d'une ligne d'enregistrement
}

Hors ligne

#15 2008-01-29 10:50:36

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Merci Moe et Sacha, j'apprends beaucoup avec vous. Et ça me plait bien :)

Donc je souhaite créer une nouvelle table à mon blog via mon plugin.
Je met dans mon fichier _install.php :
1)la brique indispensable à la procédure d'installation
2)la brique qui me créé ma nouvelle table
Donc, disons que mon plugin s'appelle carnaval (si vous avez d'autres noms, je suis preneur :) )

<?php
# bla
#  bla
#   bla licence machin.. ;)


# On lit la version du plugin
$m_version = $core->plugins->moduleInfo('carnaval','version');
 
# On lit la version du plugin dans la table des versions
$i_version = $core->getVersion('carnaval');
 
# La version dans la table est supérieure ou égale à
# celle du module, on ne fait rien puisque celui-ci
# est installé

if (version_compare($i_version,$m_version,'>=')) {
	return;
}
 
# La procédure d'installation commence vraiment là
$core->setVersion('carnaval',$m_version);
$s = new dbStruct($core->con,$core->prefix);
 
$s->carnavalcomments
	->comment_author('varchar',255,false)
	->comment_author_mail('varchar',255,false)
	->comment_class('varchar',255,true)
	;
?>

J'ai donc créé une table qui s'appelle 'carnavalcomments' qui est composé de trois champs :
* Un champ 'comment_author' : de type chaine de caractères variables de longueur max 255 qui ne peut être nulle..
* Un champ 'comment_author_mail' : tout pareil que 'comment_author'
* Un champ 'comment_class' : qui peut être vide (true)

Jusque là déjà, est ce que j'ai bon ? Pensez vous qu'un index dans ma table me soit indispensable ? (grosso merdo je vois pas plus de 30 enregistrements)
Même question pour une clé primaire ? une référence à une autre table ?


(...to be continued ...)

Dans le prochain épisode
Je vais pouvoir afficher le contenu de cette table dans ma page admin et pouvoir le modifier..(ajout / modif / suppression)

Hors ligne

#16 2008-01-29 22:44:48

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Il y a un couac à l'épisode #15, ma nouvelle table n'est pas créée (test local)
Pourrais je avoir l'avis de spécialistes ?
Voici à quoi ressemble mon fichier _install.php : http://dcplugins.googlecode.com/svn/dcC … nstall.php

Votre avis s'il vous plait ?

Hors ligne

#17 2008-01-29 22:46:42

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Il manque la synchronisation à la fin comme dans l'exemple.

Hors ligne

#18 2008-01-30 15:01:48

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Aaah oui :) merci Moe.
Donc ce serait plutôt ça :

<?php /* -*- tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
/***************************************************************\
 *  This is 'dcCommentClass', a plugin for Dotclear 2          *
 *                                                             *
 *  Copyright (c) 2007-2008                                    *
 *  Osku and contributors.                                     *
 *                                                             *
 *  This is an open source software, distributed under the GNU *
 *  General Public License (version 2) terms and  conditions.  *
 *                                                             *
 *  You should have received a copy of the GNU General Public  *
 *  License along with 'dcCommentClass' (see COPYING.txt);     *
 *  if not, write to the Free Software Foundation, Inc.,       *
 *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    *
\***************************************************************/


# On lit la version du plugin
$m_version = $core->plugins->moduleInfo('dcCommentClass','version');
 
# On lit la version du plugin dans la table des versions
$i_version = $core->getVersion('dcCommentClass');
 
# La version dans la table est supérieure ou égale à
# celle du module, on ne fait rien puisque celui-ci
# est installé

if (version_compare($i_version,$m_version,'>=')) {
	return;
}
 
# La procédure d'installation commence vraiment là
$core->setVersion('dcCommentClass',$m_version);
$s = new dbStruct($core->con,$core->prefix);
 
$s->carnaval
     ->comment_class_id('integer',0,false)
	->comment_author('varchar',255,false)
	->comment_author_mail('varchar',255,false)
	->comment_author_site('varchar',255,false)	
	->comment_class('varchar',255,true)
	->primary('pk_carnaval','comment_class_id')
	;

$si = new dbStruct($core->con,$core->prefix);
$changes = $si->synchronize($s);
?>

Sans synchro, ça ne peut pas créer ma table ?
Dans mon cas, les fichiers du plugin étaient déjà présents dans mon répertoire /plugins.
Je n'ai fait qu'ajouter mon fichier _install.php aux autres. Et je ne voyais aucune nouvelle table dc2_carnaval dans ma base...
Sans la synchro, si je n'avais pas déjà installé mon plugin par le passé, ça aurait pu créer ma nouvelle table ?

J'essaie juste de comprendre la logique ;-)

Hors ligne

#19 2008-01-30 19:31:07

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Pour que le fichier _install.php soit lu il faut aller sur le tableau de bord après l'installation du plugin et que les versions soient différentes (cf. la fonction version_compare()). Perso j'utilise clean:config pour effacer les paramètres et la version du plugin pour tester comment mes plugins s'installent. Je comprends pas trop ta question, si ton fichier _install.php ne contenait pas la fonction de synchronisation, je vois pas comment ta table aurait pu être créée.

Hors ligne

#20 2008-01-31 10:00:55

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Ok Moe, merci.
Je m'attaque désormais au fichier index.php dans lequel je vais mettre mon formulaire d'ajout de classe CSS sur un commentateur, affichage de celles existantes, les modifications, les suppressions..

Hors ligne

#21 2008-02-03 14:39:19

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Hors ligne

#22 2008-02-03 15:05:04

Fyter
Membre
Lieu : Vincennes désormais :-/
Inscription : 2004-08-21
Site Web

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

J'ai souhaité essayé ton plugin mais j'ai une erreur lorsque j'accède à celui-çi dans le panel d'administration.

Fatal error: Call to a member function fetch() on a non-object in /home/www/a48bad073b6502a41f96dc9af42b4ca4/web/plugins/carnaval/index.php on line 114
Nom 	Adresse Email 	Site 	Classe CSS

Pour t'aider, mon hébergeur est Infomaniak et je suis sous MySQL.

Hors ligne

#23 2008-02-03 15:09:31

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Essaies de repasser par le "tableaux de bord" pour l'installation propre du plugin.

je suis aussi chez Infomaniak, ça doit marcher :-)

Hors ligne

#24 2008-02-03 16:03:06

Fyter
Membre
Lieu : Vincennes désormais :-/
Inscription : 2004-08-21
Site Web

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Yep, ça fonctionne.

Dis moi, tu devrais mettre un exemple de classe CSS dans ton plugin, ce serait plus facile pour la compréhension :)

Hors ligne

#25 2008-02-03 16:15:20

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : [Astuce jQuery] - Remarquez vos commentateurs :)

Fyter a écrit :

Dis moi, tu devrais mettre un exemple de classe CSS dans ton plugin, ce serait plus facile pour la compréhension :)

Précises, les copies d'écran ne suffisent pas ?
Il suffit de regarder les commentaires sur le blog du capitaine pour avoir une idée.

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map