Sarka-SPIP 1.2.x - nouveautés

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Le lignée Sarka-SPIP 1.1, s’est éteinte avec la sortie de la version 1.1.3, au profit de la lignée 1.2. L’avènement de la lignée 1.2 avait donc deux buts :
-  assurer la compatibilité avec SPIP 1.9, mais sans pour autant tirer avantage des optimisations possibles avec ce nouveau SPIP.
-  apporter un lots de nouveautés, essentiellement inspirées des contributions qui avaient fleuries depuis plusieurs mois. Nous espérions qu’ainsi, les problèmes de mise en oeuvre de ces contributions seraient fortement atténués.

Aujourd’hui, après avoir remplis ces objectifs pendant quelques mois, le temps de la transition complète du squelette Sarka-SPIP vers SPIP 1.9, cette lignée, avec la sortie de la version 1.2.2, termine son service.
Aujourd’hui tous nos efforts sont uniquement portés sur la lignée 1.9 que nous vous conseillons fortement d’utiliser.

Cet article a pour but de donner le détail des correctifs appliqués à la lignée Sarka-SPIP 1.2.

Correctifs implémentés non détaillés dans cet article

-  Correctif c-19 : Codes couleur en majuscule et en hexa

-  Correctif c-18 : Evolution de l’agenda

-  Correctif c-17 : Style du message « aucun message » dans le forum

-  Correctif c-16 : Classement des brèves en ordre anti-chrono

-  Correctif c-15 : Balise #VERSION_SQUELETTE avec révision svn

-  Correctif c-14 : Groupe de mots-clés répétés qu’une fois dans le bloc article.html

-  Correctif c-13 : Favicon incorrect lors de l’impression

-  Correctif c-12 : Items langue erronnés

Correctif c-11 : Remplacement du filtre obsolète reduire_all_images

-  Description

JEF, un utilisateur qui a pas mal souffert avec le fichier htaccess, a repéré une erreur de filtre non défini, reduire_all_images, dans la page mot.hmtl. En effet, depuis le correctif c05 de la version 1.1.2 en l’an de grâce 2005, ce filtre a été remplacé par reduire_image, partout... sauf dans cette page !

-  Mise en oeuvre

La correction consiste, en deux endroits (lignes 109 et 160), à remplacer l’appel du filtre obsolète :

[(#TEXTE|reduire_all_images{200,x})]

par :

[(#TEXTE|reduire_image{200,0})]

Correctif c-10 : Correction des css de la page 404

-  Description

Archimed a remarqué que lors de l’affichage, rarissime ;-), de la page 404, le menu déroulant perdait tous les styles qui font d’habitude son charme. La raison ? Une erreur ou plutôt un oubli.

-  Mise en oeuvre

En effet, toutes les pages à l’exception de la 404 inclus une noisette, header.html, contenant les styles, icones et meta-informations standard du squelette. Il a donc suffit d’inclure cette noisette dans la page 404.html en remplaçant les lignes :

<title>[404] <:page_non_trouvee:></title>
<link rel="stylesheet" href="#DOSSIER_SQUELETTE/../styles/style.css" type="text/css">
<link rel="shortcut icon" href="#DOSSIER_SQUELETTE/../rblack.ico">

par :

<title>[404] <:page_non_trouvee:></title>
<INCLURE(inclusions/header.php3)>

Correctif c-09 : intégration des évolutions htaccess de SPIP 1.9.1

-  Description

La nouvelle version de SPIP, à savoir, 1.9.1, a apporté des corrections au fameux fichier htaccess.txt. Il nous fallait donc suivre le mouvement.

-  Mise en oeuvre

Le fichier htaccess.txt propre au squelette Sarka-SPIP à donc été modifié : nous avons tout simplement réintroduit nos personnalisations dans le nouveau fichier htaccess livré avec SPIP 1.9.1.

Correctif c-08 : lifting des fichiers de langue

-  Description

Pti Gars a remarqué un léger défaut dans le fichier local_fr.php3 à la ligne 83, à savoir, l’absence de codage HTML pour un caractère accentué. Erreur classique s’il en est !!!

-  Mise en oeuvre

J’en ai donc profité pour faire une vérification complète des fichiers de langue et corriger plusieurs erreurs résiduelles. Pas de révolution donc, mais un petit pas de plus vers un squelette toujours plus respectueux... des standards ;-).

Correctif c-07 : erreur lors de l’impression d’un article sous SPIP 1.9

-  Description

Une petite erreur de plus sous SPIP 1.9. L’impression d’un article renvoyait une erreur du type « fichier imprimer.php introuvable ». Ceci est du a une configuration incomplète du fameux fichier .htaccess.

De manière générale, quand vous avez une erreur constatant qu’un fichier .php est introuvable, il faut immédiatement penser à la configuration du fichier .htaccess étant donné que cette version de Sarka-SPIP et les précédentes utilisent toujours l’extension .php3.

-  Mise en oeuvre

Dans le fichier .htaccess , on rajoute imprimer.php3 dans la liste des fichiers spécifiques du squelette, comme suit :

################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires
RewriteRule ^(forum-news|contact|imprimer)\.php3?$	spip.php?page=$1 [QSA,L]

Attention, dans la distribution Sarka-SPIP, le fichier .htaccess est nommé htaccess.txt.

Correctif c-06 : nom de l’article imprimé dans le titre de la page

-  Description

Cette modification est toute simple : plutôt que d’afficher un titre de page générique [nom du site]imprimer l’article, le squelette affiche maintenant le titre de l’article, [nom du site]titre de l’article. L’intérêt ? Uniquement si vous voulez créer un pdf, le titre du fichier sera déjà formaté avec le titre de l’article.

-  Mise en oeuvre

On remplace, dans le fichier imprimer.php3, l’item de langue <:imprimer_article :> par la balise #TITRE puisque l’on est dans une boucle ARTICLES (celui à imprimer, évidemment...).

<title>[#NOM_SITE_SPIP] #TITRE</title>

Correctif c-05 : items de langue manquants pour le moteur Voila

-  Description

Une petite erreur de précipitation lors de la mise en place de la fonctionnalité des moteurs de recherche externes. Les boutons radio du formulaire Voila n’était pas traduits.

-  Mise en oeuvre

Ajout des lignes suivantes dans les fichiers local_xx.php3 :

Exemple du fichier local_fr.php3:

//bloc-gauche-recherche-voila.html
'web_france' => 'Web francophone',
'web_monde' => 'Web Mondial',

Correctif c-04 : balise #VISITES_SITE pour SPIP 1.9

-  Description

Après un retour positif d’André, l’initiateur de cette évolution sur les statistiques, Frédéric, webmestre du site du Judo Club de Baudimont a relevé, que la balise #VISITES_SITE (pour le jour courant) ne fonctionnait pas correctement... sous SPIP 1.9 !

Après quelques interrogations légitimes, force a été de constater que certains accès à la base de données sous SPIP 1.8 ne pouvaient en aucun cas fonctionner... la structure des tables de comptage des visites ayant changée :

  • la table spip_visites contient maintenant sous SPIP 1.9 l’enregistrement du nombre de visites pour le jour courant.
  • et par conséquent, la table spip_visites_temp a disparu, étant devenue inutile, ce qui simplifie les requêtes mais pas notre balise.

-  Mise en oeuvre

Le premier enjeu était de conserver une balise générique pour SPIP et non une balise SPIP 1.8 et une balise SPIP 1.9. Le code de la fonction balise_VISITES_SITE a donc été remanié comme suit :

function balise_VISITES_SITE($p) {

	if ($a = $p->param) {
		$sinon = array_shift($a);
		if  (!array_shift($sinon)) {
			$p->fonctions = $a;
			array_shift( $p->param );
			$jour = array_shift($sinon);
			$jour = ($jour[0]->type=='texte') ? $jour[0]->texte : '';
		}
	}
	else {
		$jour = 'depuis_debut';
	}

	if (substr($GLOBALS['spip_version_affichee'],0,3) == '1.9') {
		$p->code = 'calcul_visites_site19('.$jour.')';
	}
	else {
		$p->code = 'calcul_visites_site('.$jour.')';
	}
	$p->statut = 'php';
	return $p;
}

Ensuite, pour SPIP 1.8, il a suffit de conserver les requêtes existantes ; seule une optimisation du nombre d’accès a été mis en place. La sémantique des requêtes sous SPIP 1.8 est la suivante :

  • Pour le jour courant « aujourd’hui » : on fait le compte des enregistrements de la table spip_visites_temp, un enregistrement correspondant à une visite.
  • Pour la veille « hier », on récupère dans la table spip_visites la valeur correspondant à l’enregistrement du jour précédent (dernier enregistrement de cette table).
  • Enfin, pour le décompte total « depuis_debut », on somme tous les enregistrements de la table spip_visites (jusqu’à la veille donc) et on y ajoute le décompte du jour courant.

Cela donne la fonction suivante, calcul_visites_site :

function calcul_visites_site($j) {

	if ( $j == 'hier' ) {
		$hier = date('Y-m-d',strtotime(date('Y-m-d')) - 3600*24);
		$query = "SELECT visites AS visites FROM spip_visites WHERE date='$hier'";
		$result = spip_query($query);
		$visites_hier = 0;
		if ($row = @spip_fetch_array($result)) {
			$visites_hier = $row['visites'];
		}
		$r = $visites_hier;
	}
	else {
		$query = "SELECT COUNT(DISTINCT ip) AS visites FROM spip_visites_temp";
		$result = spip_query($query);
		$visites_auj = 0;
		if ($row = @spip_fetch_array($result)) {
			$visites_auj = $row['visites'];
		}

		if ( $j == 'aujourdhui' ) {
			$r = $visites_auj;
		}
		else {
			$query = "SELECT SUM(visites) AS total_absolu FROM spip_visites";
			$result = spip_query($query);
			$total_jusqua_hier = 0;
			if ($row = @spip_fetch_array($result)) {
				$total_jusqua_hier = $row['total_absolu'];
			}
			$r = $total_jusqua_hier + $visites_auj;
		}
	}
	return $r;
}

Enfin, pour SPIP 1.9, il a fallu définir de nouvelles requêtes dont la sémantique est la suivante :

  • Pour le jour courant « aujourd’hui » : on récupère la valeur correspondant à l’enregistrement du jour courant dans la table spip_visites (c’est la modification majeure de SPIP 1.9).
  • Pour la veille « hier », on agit de même pour le jour précédent.
  • Enfin, pour le décompte total « depuis_debut », on somme tous les enregistrements de la table spip_visites.

Cela donne la fonction suivante, calcul_visites_site19 :

function calcul_visites_site19($j) {

	if ( $j == 'aujourdhui' ) {
		$auj = date('Y-m-d',strtotime(date('Y-m-d')));
		$query = "SELECT visites AS visites FROM spip_visites WHERE date='$auj'";
		$result = spip_query($query);
		$visites_auj = 0;
		if ($row = @spip_fetch_array($result)) {
			$visites_auj = $row['visites'];
		}
		$r = $visites_auj;
	}
	else if ( $j == 'hier' ) {
		$hier = date('Y-m-d',strtotime(date('Y-m-d')) - 3600*24);
		$query = "SELECT visites AS visites FROM spip_visites WHERE date='$hier'";
		$result = spip_query($query);
		$visites_hier = 0;
		if ($row = @spip_fetch_array($result)) {
			$visites_hier = $row['visites'];
		}
		$r = $visites_hier;
	}
	else {
		$query = "SELECT SUM(visites) AS total_absolu FROM spip_visites";
		$result = spip_query($query);
		$visites_debut = 0;
		if ($row = @spip_fetch_array($result)) {
			$visites_debut = $row['total_absolu'];
		}
		$r = $visites_debut;
	}
	return $r;
}

Correctif c-03 : Création d’une balise #VERSION_SQUELETTE et modification du pied-de-page en conséquence

-  Description

Après la création de la balise #VERSION_SPIP dans la version 1.2.0 de Sarka-SPIP, il ne manquait plus qu’une balise identique pour la version de notre squelette. Cette balise, comme la précédente, est utilisable n’importe où dans le squelette.

Cette balise est maintenant utilisée dans le pied de page du squelette.

-  Mise en oeuvre

L’implémentation de cette évolution est très simple. Tout d’abord le pied de page est modifié comme suit :

<a href="http://sarka-spip.com" title="<:squelette:>" target="_blank">Sarka-SPIP&nbsp;#VERSION_SQUELETTE</a>&nbsp;::&nbsp;

En outre, la balise est définie dans le fichier mes_fonctions.php3 par l’intermédiaire de la fonction balise_VERSION_SQUELETTE dont le code simplissime est le suivant :

// ===================================================
// Balise : #VERSION_SQUELETTE
// ===================================================
// Auteur: Smellup
// Fonction : affiche la version utilisée du squelette Sarka 
//                   variable globale $version_squelette
// ===================================================
//
$GLOBALS['version_squelette'] = '1.2.1';
function balise_VERSION_SQUELETTE($p) {
    $p->code = "\$GLOBALS['version_squelette']";
	$p->statut = 'html';
	return $p;
}

Il est intéressant de noter la définition préalable de la variable globale spécifique au squelette, $version_squelette.

Correctif c-02 : Ajout des moteurs de recherche externes Exalead, Google, MSN, Voila et Yahoo

-  Description

Le principe est d’intégrer le formulaire de recherche supplémentaire dans le bloc de recherche déjà affiché dans la colonne gauche du squelette. Seul un moteur supplémentaire est proposé en complément du formulaire classique, mais il est possible de choisir parmi les 5 moteurs suivants :

-  Exalead (par défaut),
-  Google,
-  Voila,
-  Yahoo.

-  Mise en oeuvre

La mise en oeuvre est strictement identique à celle décrite dans la contribution de Smellup Lier plusieurs articles.

Correctif c-01 : ajout des statistiques des visites du site par l’intermédiaire d’une balise #VISITES_SITE

-  Description

Un utilisateur assidu, André, dans un message de forum, s’est interrogé sur la possibilité d’afficher dans l’espace public des statistiques consultables uniquement dans la partie privée de SPIP. Son but, afficher le nombre de visites du jour et de la veille.

Une balise semble exister sous SPIP, mais n’étant pas documentée, une balise spécifique a été développée pour l’occasion, #VISITES_SITE, permettant de visualiser les statistiques demandées.

-  Mise en oeuvre

Tout d’abord, le plus simple, l’affichage des statistiques dans la colonne gauche du squelette (fichier bloc-gauche.html) qui nécessite de modifier le bloc de statistiques (contenant déjà la date de mise à jour) comme suit :

<!-- affichage des statistiques -->
<B_maj>
	<!-- affichage de la date de mise à jour -->
	<div id="maj" class="maj">
	<strong><:maj:></strong>&nbsp;:<br>
<BOUCLE_maj(RUBRIQUES){age>=0}{par date}{inverse}{0,1}>
	[(#DATE|nom_jour)] [(#DATE|affdate)]
</BOUCLE_maj>
</B_maj>
	<div id="maj" class="maj">
		<strong><:maj:></strong>&nbsp;:<br>
		<:date_aujourdhui:>
<//B_maj>
	<hr>
	<!-- affichage des statistiques editoriales -->
	<strong><:statistiques_edition:></strong>&nbsp;:<br>
	<B_tous_articles> <BOUCLE_tous_articles(ARTICLES){tout}> </BOUCLE_tous_articles>
		[#TOTAL_BOUCLE (#TOTAL_BOUCLE|=={1}|?{<:1_article:>,<:articles:>})]</B_tous_articles><:0_article:><//B_tous_articles><br>
	<B_tous_breves> <BOUCLE_tous_breves(BREVES){tout}> </BOUCLE_tous_breves>
		[#TOTAL_BOUCLE (#TOTAL_BOUCLE|=={1}|?{<:1_breve:>,<:breves:>})]</B_tous_breves><:0_breve:><//B_tous_breves><br>
	<B_tous_sites> <BOUCLE_tous_sites(SITES){tout}> </BOUCLE_tous_sites>
		[#TOTAL_BOUCLE (#TOTAL_BOUCLE|=={1}|?{<:1_site_web:>,<:sites_web:>})]</B_tous_sites><:0_site:><//B_tous_sites><br>
	<B_tous_auteurs> <BOUCLE_tous_auteurs(AUTEURS){tout}> </BOUCLE_tous_auteurs>
		[#TOTAL_BOUCLE (#TOTAL_BOUCLE|=={1}|?{<:1_auteur:>,<:auteurs:>})]</B_tous_auteurs><:0_auteur:><//B_tous_auteurs><br>
	<hr>
	<!-- affichage des visites du site -->
	<strong><:statistiques_visites:></strong>&nbsp;:<br>
	[(#VISITES_SITE{aujourdhui})]&nbsp;<:aujourdhui:><br>
	[(#VISITES_SITE{hier})]&nbsp;<:hier:><br>
	[(#VISITES_SITE)]&nbsp;<:depuis_debut:>
</div> <!-- maj -->

On notera, d’une part, l’utilisation de la balise #VISITES_SITE avec et sans paramètre (équivalent à « depuis la création ») et d’autre part, une mise à jour mineure des statistiques éditoriales. Pour obtenir des informations plus précises sur l’utilisation de la balise #VISITES_SITE, consulter l’article xxx

Pour la gestion des langues, il est nécessaire de rajouter les items suivants dans les fichiers local_xx.php3 :

Exemple: local_fr.php3

'statistiques_visites' => 'Statistiques des visites',
'aujourdhui' => 'aujourd\'hui',
'hier' => 'hier',
'depuis_debut' => 'depuis le d&eacute;but',

Enfin la balise... Comme toute balise spécifique elle est définie dans le fichier mes_fonctions.php3. Le code développé défini deux fonctions balise_VISITES_SITE qui paramètre la balise, et calcul_visites_site qui représente le code déroulé par SPIP lors de l’interprétation de la balise [1]. La fonction calcul_visites_site fait les accès base de données adéquats pour récupérer les statistiques demandées selon le paramètre de la balise.

Notes

[1Le code des fonctions n’est pas fourni car il a été totalement modifié dans le correction c-04

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom