Dotclear

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

Annonce

#1 2016-08-14 11:34:06

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

[plugin mrvbToC] support et discussion

Bonjour,

Le plugin mrvbToC dans cette première version 0.1.0 propose un widget permettant de lister toutes les catégories (hiérarchisation par listes <ul><li> imbriquées) et les billets qu'elles contiennent triés par titres ou par ordre chronologique (direct ou inversé) des dates de publication. Les billets sans catégorie sont listés en dernier.

- prise en compte (ou pas) des billets ayant un mot de passe
- tri possible des billets :
    - date-asc : par ordre chronologique des dates de publication (par défaut)
    - date-desc : par ordre chronologique inverse des dates de publication
    - title : par ordre alphabétique croissant des titres des billets
- ajout de la classe CSS "mrvbToC" et d'une classe personnalisable facultative
- chaque catégorie listée se voit affectée de la classe <li class="catXXX"> où XXX est l'id de la catégorie
- chaque billet listé se voit affecté de la classe <li class="item">
- chaque billet listé et ayant un mot de passe se voit affecté de la classe <li class="item password">

Ce widget sera utilisable dans la sidebar (mouais, bof) ou, de préférence, dans une page statique via le plugin "related" contenant juste le marqueur de template <tpl:Widget> ad-hoc et les settings kivonbien.

Le plugin est en action dans cette page mon blog de test.

Plus d’infos et lien pour télécharger chez moi et sur DotAddict.

Dernière modification par Mirovinben (2016-08-14 13:05:45)

Hors ligne

#2 2016-08-14 19:34:25

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : [plugin mrvbToC] support et discussion

Bonjour

C'est un plugin qui trouvera toute son utilité sur un blog un peu fourni. Il marche très bien ;)

Juste un détail qui me chiffonne : la liste affiche tous les éléments, y compris ceux qui ne sont pas de type post. Du coup si on utilise un plugin qui ajoute un nouveau post_type mais ne prévoit pas pour ces billets d'URL publique (oui je sais c'est un peu tordu mais c'est le cas de mygmaps), on se retrouve avec des liens vers la page d'erreur 404.

Il faudrait que ton plugin n'affiche que les billets de type post, ou mieux permette de choisir les post_type concernés. Mais c'est peut-être du boulot pour un cas vraiment particulier...

Hors ligne

#3 2016-08-14 19:39:54

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Faut que je regarde ça (probablement pas avant le 16/08).
En effet, a minima ne traiter dans un premier temps que les billets de type post.

Hors ligne

#4 2016-08-14 19:47:45

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Philippe, peux-tu remplacer la ligne #66 de mrvbTOC\_public.php (version de mrvbToC : 0.1.0)

$query .= ' WHERE (P.cat_id = '.$rs->cat_id.') AND (P.post_status = 1)';

par

$query .= ' WHERE (P.cat_id = '.$rs->cat_id.') AND (P.post_status = 1) AND (P.post_type = \'post\')';

et me dire si ça va mieux... ??

Hors ligne

#5 2016-08-14 20:10:15

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : [plugin mrvbToC] support et discussion

Ça devrait le faire, mais je n'ai pas eu le temps de tester ;)

Hors ligne

#6 2016-08-16 05:04:41

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Nouvelle version, la v0.2.1 qui propose...

- un javascript facultatif (désactivé par défaut) permettant de déplier/replier la liste des billets d'une catégorie.
- seuls les billets dont le post_type est 'post' sont pris en compte

Comme d'hab, plus d’infos et lien pour télécharger chez moi et sur DotAddict.

Hors ligne

#7 2016-08-19 05:06:02

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Nouvelle version, la v0.3.2 qui propose...

- l'affichage (ou pas) des billets, pages et pages statiques du blog
- la possibilité de prendre en compte une modification du préfixe d'URL ("post") des billets
- la possibilité de prendre en compte une modification du préfixe d'URL ("pages") des pages créées avec le plugin "Pages" (fourni avec Dotclear)
- la possibilité de prendre en compte une modification du préfixe d'URL ("static") des pages statiques créées avec le plugin "Related Pages"
- la possibilité  d'afficher le nombre de billets de chaque liste (billets, pages et pages statiques)
- les billets avec ou sans catégories sont regroupés dans un même bloc "Liste des billets"
- les billets sans catégories sont affichés avant la liste des catégories

Comme d'hab, plus d’infos et lien pour télécharger chez moi et sur DotAddict.

Dernière modification par Mirovinben (2016-08-19 14:53:17)

Hors ligne

#8 2016-08-21 12:46:13

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Nouvelle version, la v0.3.3

L'option permettant d'activer le script est supprimée. Elle est remplacée par 3 options permettant de mieux cibler le champ d'action du script : liste des billets avec catégories, liste des pages et liste des pages statiques.

Cette version propose donc...

- l'ajout d'une option permettant d'inclure ou pas les billets sans catégorie
- l'ajout d'options permettant l'activation du script "cacher/montrer" pour les billets avec catégories et/ou pour les pages et/ou pour les pages statiques
- la possibilité de forcer l'affichage des pages selon leur position (ordre croissant)
- une réorganisation des paramètres dans l'administration du widget
- la correction d'une régression dans la requête enlevant de la liste les billets avec mots de passe</li>

Comme d'hab, plus d’infos et lien pour télécharger chez moi et sur DotAddict.

Hors ligne

#9 2016-08-22 08:02:51

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Nouvelle version, la v0.3.4 avec l'ajout d'une option permettant de n'afficher que les pages et pages statiques marquées comme visibles pour leur widget associé (widget "Pages" / widget "Pages connexes")

On trouve/modifie ce marquage via
- la case à cocher "Ne pas lister dans le widget Pages" de l'écran d'édition d'une page faite avec le plugin "Pages"
- la case à cocher kivabien proposée dans la liste "Ordonner la liste publique", colonne "Page visible dans le widget" du plugin "Pages connexes"

Comme d'hab, plus d’infos et lien pour télécharger chez moi et sur DotAddict.

Hors ligne

#10 2016-08-27 05:06:10

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Nouvelle version, la v0.3.5

- amélioration du tri alphabétique : les caractères diacritiques sont à présent correctement pris en charge (merci à Franck pour son aide) par les drivers de bases de données MySQL/PostgreSQL (DC_DBDRIVER = 'mysql', 'mysqli' ou 'pgsql')

- les préfixes d'URL des différents types d'entrées (post, pages, static) étant à présent déterminés automatiquement, les zones de saisie permettant de les indiquer sont remplacées par des cases à cocher qui activent ou pas l'affichage des entrées correspondantes.

- ré-organisation graphique de l'administration du widget

Comme d'hab, plus d’infos et lien pour télécharger chez moi et sur DotAddict.

Hors ligne

#11 2016-08-29 17:12:56

Gvx
Membre
Inscription : 2006-01-14
Site Web

Re : [plugin mrvbToC] support et discussion

Je viens d'ajouter les lignes suivantes pour tester le tri avec SQLite: (a la  ligne 72 de _public.php)

} elseif (DC_DBDRIVER == 'sqlite' && class_exists('Collator') && method_exists($core->con->link(),'sqliteCreateCollation') && !empty((string)$core->blog->settings->system->lang)) {
	$collate_locale = new Collator($core->blog->settings->system->lang);
	if ($core->con->link()->sqliteCreateCollation('collate_locale',array($collate_locale,'compare'))) {
		$collate = ' ORDER BY P.post_title COLLATE collate_locale ';
	}

Les performances restes plus que correctes, puisque sur un blog de 2198 billets et 8 pages, le temps moyen de génération passe de 0.31s a 0.37s

Par contre pour utiliser cela il faut minimum PHP 5.3.11 et l’extension intl (d’où les tests de class / methode)


A+ Gilles

Hors ligne

#12 2016-08-30 06:15:51

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Merci Gvx pour ce patch. A la lecture de ton test, nous sommes dans les mêmes durées de traitement qu'avec les autres drivers. Super !

Une 0.3.6 se profile à l'horizon...
Y a-t-il des choses à rajouter avant diffusion ?

Hors ligne

#13 2016-08-30 18:35:11

Gvx
Membre
Inscription : 2006-01-14
Site Web

Re : [plugin mrvbToC] support et discussion

Mirovinben a écrit :

Une 0.3.6 se profile à l'horizon...
Y a-t-il des choses à rajouter avant diffusion ?

peut-être rendre variable les titres "Liste des billets", "Liste des pages", ...

sinon je vois pas.


A+ Gilles

Hors ligne

#14 2016-08-31 04:46:44

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Ah voui, c'est une bonne idée, ça. Je prends.

Hors ligne

#15 2016-08-31 06:31:14

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Nouvelle version, la v0.3.6

- les caractères diacritiques sont à présent correctement pris en charge avec une base de données 'sqlite' (si et seulement si PHP >= 5.3.11 + extension 'intl'). Merci à Gvx pour son patch,
- possibilité de personnaliser le titre de la liste des billets/pages/pages statiques.

Comme d'hab, plus d’infos et lien pour télécharger chez moi et sur DotAddict.

Dernière modification par Mirovinben (2016-09-01 07:07:44)

Hors ligne

#16 2016-09-07 19:05:06

Gvx
Membre
Inscription : 2006-01-14
Site Web

Re : [plugin mrvbToC] support et discussion

J'ai testé le plugin sur une base postgreSQL (Chez Free) et... le tri alphabétique ne fonctionne pas.

En la requête ne retourne aucun enregistrement.

Après quelques recherches postgreSQL ne propose nativement que les collates "C" et "POSIX".

par contre, il est possible par une requête SQL d'avoir la liste des collates disponibles.

En combinant cela avec la langue du blog défini dans dotclear il est possible de trouver le meilleur collate disponible a utilisé (ou par defaut utiliser le tri en "lowercase".

un code étant bien plus parlant qu'un long discours voici le patch que je propose

} elseif (DC_DBDRIVER == 'pgsql') {
	$_locale = '';
	if(!empty((string)$core->blog->settings->system->lang)) {
		$_locale = " OR (collname LIKE '".trim(substr(str_replace('-', '_', $core->blog->settings->system->lang).'\___', 0, 6), '\\')."')";	// format xx_YY (ex fr_FR)
	}
	$_rs = $core->con->select("SELECT * FROM pg_collation WHERE (collname LIKE 'C.UTF-8')".$_locale);
	if(!$_rs->isEmpty()) {
		while ($_rs->fetch()) {
			if(substr($_rs->f('collname'), 0, 2) == $core->blog->settings->system->lang) {	// 1ere ligne avec fr_XX
				$collate = ' ORDER BY P.post_title COLLATE "'.$_rs->f('collname').'" ';
				break;
			} elseif($_rs->f('collname') == 'C.UTF-8') {
				$collate = ' ORDER BY P.post_title COLLATE "'.$_rs->f('collname').'" ';	// C.UTF-8
			}
		}
	}
} elseif (DC_DBDRIVER == 'sqlite' && class_exists('Collator') && method_exists($core->con->link(),'sqliteCreateCollation') && !empty((string)$core->blog->settings->system->lang)) {

Et miracle cela fonctionne.

En fait:
1/ on recherche si un collate correspond a la locale du blog.
2/ si pas de collate approprié on utilise, si disponible C.UTF-8.
3/ si aucun collate adapté on utilise tri en "lowercase".

Dernière modification par Gvx (2016-09-07 19:05:39)


A+ Gilles

Hors ligne

#17 2016-09-08 03:25:54

Gvx
Membre
Inscription : 2006-01-14
Site Web

Re : [plugin mrvbToC] support et discussion

la réflexion de la nuit apporte quelques corrections au patch:

} elseif (DC_DBDRIVER == 'pgsql') {
	$_locale = '';
	if(!empty((string)$core->blog->settings->system->lang)) {
		$_lang = $core->blog->settings->system->lang;
		$_locale = " OR (collcollate ILIKE '".trim(substr(str_replace('-', '_', $_lang).'\___', 0, 6), '\\').".utf8')";	// format xx_YY (ex fr_FR)
	}
	$_rs = $core->con->select("SELECT * FROM pg_collation WHERE (collname LIKE 'C.UTF-8')".$_locale);
	if(!$_rs->isEmpty()) {
		$_lang = substr($_lang, 0 ,2);
		while ($_rs->fetch()) {
			if(strtolower(substr($_rs->f('collname'), 0, 2)) == $_lang) {	// 1ere ligne avec fr_XX
				$collate = ' ORDER BY P.post_title COLLATE "'.$_rs->f('collname').'" ';
				break;
			} elseif($_rs->f('collname') == 'C.UTF-8') {
				$collate = ' ORDER BY P.post_title COLLATE "'.$_rs->f('collname').'" ';	// C.UTF-8
			}
		}
	}
} elseif (DC_DBDRIVER == 'sqlite' && class_exists('Collator') && method_exists($core->con->link(),'sqliteCreateCollation') && !empty((string)$core->blog->settings->system->lang)) {

* Utilisation de ILIKE a la place de LIKE
* Force UTF8
* Compatible code langue dotclear "fr" et "fr-fr"


A+ Gilles

Hors ligne

#18 2016-09-08 06:05:11

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : [plugin mrvbToC] support et discussion

Gvx a écrit :

la réflexion de la nuit apporte quelques corrections au patch:

* Compatible code langue dotclear "fr" et "fr-fr"

Ça voudrait dire que la nouvelle entrée dans le tableau (l10n de Clearbricks) n'est plus utile ? Sauf peut-être encore pour SQLite …


Dotclear addicted since 2004

Hors ligne

#19 2016-09-08 06:37:30

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Merci Gvx pour ton implication dans ce plugin. Ne pouvant tester sur autre chose qu'une base "mysqli/mysql" et largement dépassé par tout ça, je me repose (j'aime bien ce mot) sur tes compétences et tes tests.

Dois-je attendre encore un peu avant de proposer le patch (en #17) ou tu valides dès à présent ?

Franck, t'en penses quoi de tout ça ?

Hors ligne

#20 2016-09-08 08:54:05

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : [plugin mrvbToC] support et discussion

Mirovinben a écrit :

Merci Gvx pour ton implication dans ce plugin. Ne pouvant tester sur autre chose qu'une base "mysqli/mysql" et largement dépassé par tout ça, je me repose (j'aime bien ce mot) sur tes compétences et tes tests.

Dois-je attendre encore un peu avant de proposer le patch (en #17) ou tu valides dès à présent ?

Franck, t'en penses quoi de tout ça ?

Ce que j'en pense ? Que c'est une excellente chose d'avoir ça à tester dans ton plugin, ça permet de consolider les différentes possibilités et à terme d'intégrer tout ça proprement dans Dotclear.


Dotclear addicted since 2004

Hors ligne

#21 2016-09-08 18:11:10

Gvx
Membre
Inscription : 2006-01-14
Site Web

Re : [plugin mrvbToC] support et discussion

Franck a écrit :
Gvx a écrit :

la réflexion de la nuit apporte quelques corrections au patch:

* Compatible code langue dotclear "fr" et "fr-fr"

Ça voudrait dire que la nouvelle entrée dans le tableau (l10n de Clearbricks) n'est plus utile ? Sauf peut-être encore pour SQLite …

Pas tout a fait.

ce que je voulais dire par là c'est que le l'index 0 du tableau l10n de Clearbricks utilise une double notation:
* sur 2 caractères dans 98% des cas
* pour les autres cas 5 caractères type fr-fr.

Par contre moyennant des tests, et vérification de non régression, il est peut-être possible d’étendre le format de la colonne 0 en type fr-fr.

cela suppose d'avoir éventuellement des multiplications de langues.
par exemple fr pourrai devenir
* fr-fr
* fr-be
* fr-ca
* fr-ch


A+ Gilles

Hors ligne

#22 2016-09-09 04:16:50

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : [plugin mrvbToC] support et discussion

Gvx a écrit :
Franck a écrit :
Gvx a écrit :

la réflexion de la nuit apporte quelques corrections au patch:

* Compatible code langue dotclear "fr" et "fr-fr"

Ça voudrait dire que la nouvelle entrée dans le tableau (l10n de Clearbricks) n'est plus utile ? Sauf peut-être encore pour SQLite …

Pas tout a fait.

ce que je voulais dire par là c'est que le l'index 0 du tableau l10n de Clearbricks utilise une double notation:
* sur 2 caractères dans 98% des cas
* pour les autres cas 5 caractères type fr-fr.

Par contre moyennant des tests, et vérification de non régression, il est peut-être possible d’étendre le format de la colonne 0 en type fr-fr.

cela suppose d'avoir éventuellement des multiplications de langues.
par exemple fr pourrai devenir
* fr-fr
* fr-be
* fr-ca
* fr-ch

Sachant que toutes les locales (dossiers, …) de Dotclear s'appuient sur cette notation, ça va faire pas mal, voire trop, de choses à revoir.

Va falloir y réfléchir à tête reposée…


Dotclear addicted since 2004

Hors ligne

#23 2016-09-09 04:23:34

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : [plugin mrvbToC] support et discussion

Je préfèrerais autant ajouter une colonne supplémentaire contenant un tableau des codes nn-NN correspondants, ce qui donnerait par exemple :

array( 'fr-FR', 'fr-BE', 'fr-CA', 'fr-CH' ) pour la ligne 'fr'

et 

array( 'es-ar' ) pour la ligne 'es-ar'

Maintenant est-ce qu'il serait utile d'avoir tous ces codes pour le tri lexical, est-ce qu'un seul ne suffirait pas (fr-FR par exemple pour le français) ? Probablement que si, donc une simple colonne supplémentaire 'collate' → nn-NN devrait suffire, non ?

Sachant que la 1re colonne sert de clé (entre autres pour les locales) ça m'ennuie de la modifier.


Dotclear addicted since 2004

Hors ligne

#24 2016-09-09 04:24:52

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : [plugin mrvbToC] support et discussion

Autre question : dans le code proposé, on s'appuie sur la langue du blog, ce qui va forcer un ordre de tri particulier, y compris sur des blogs multilingues, ça peut être gênant, c'est la raison pour laquelle je privilégiais entre autre pour pgsql le C.UTF8 plus générique.


Dotclear addicted since 2004

Hors ligne

#25 2016-09-09 05:56:55

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : [plugin mrvbToC] support et discussion

Hum... J'attends encore un peu ou je publie aujourd'hui une nouvelle version de mrvbToC avec le patch proposé en #17 ?

Hors ligne

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

Pied de page des forums

Sites map