Le Couteau Suisse

... ou plus de fonctionnalités pour SPIP !

Ce plugin propose d’introduire facilement de simples fonctionnalités supplémentaires à SPIP et qui s’avèrent rapidement indispensables ! Par exemple : le contrôle de nombreuses variables «cachées» de SPIP, des améliorations ou facilités typographiques, des filtres supplémentaires, des balises pratiques, etc.

Introduction

Le plugin «Le Couteau Suisse» propose d’introduire facilement de simples fonctionnalités supplémentaire à SPIP (que l’on pourra appeler «des outils» ou même «des lames») sans pour autant alourdir le core. Par exemple : le contrôle de nombreuses variables SPIP «cachées» ou non documentées, des améliorations ou facilités typographiques, des filtres supplémentaires, des balises pratiques, etc. Ma constatation est de voir que les utilisateurs (dont moi-même !) font souvent les mêmes installations de plugins dont certains ne font qu’une ligne ou deux. Il devient également plus facile de gérer les différentes variables de SPIP cachées à l’utilisateur lambda. L’idée est partie d’un message sur la liste spip.zone de Pierre Andrews (mes hommages, Pierre !) posté le dimanche 17 décembre 2006 19:16, suite à une plainte d’Olivier G. qui déplorait la création d’un plugin entier autour de l’utilisation d’une simple variable.

Le but est donc de réunir toutes ces fonctionnalités, petites mais pratiques, en un seul plugin et d’ajouter dans l’espace d’administration une page de configuration où il suffira de cocher les outils voulus. Le gain en performances et en clarté est non négligeable : le plugin précompile les fonctionnalités lors de l’installation et permet ensuite une navigation plus fluide. Les débutants qui ne connaissent rien au PHP, HTML ou à SPIP, seront les premiers servis dans ce projet. Rien de plus facile pour moi ou pour la plupart d’entre vous d’ajouter une ligne de code qui va bien ... Mais ce n’est pas le cas de tout le monde !!

Un plugin en évolution...

Le plugin, bien qu’il soit stable et compatible avec SPIP v1.9.x/v2.x.x/v3.0.x/v3.1.x/v3.2 [1], reste encore en mouvance. Après s’être appelé [archive] Tweak SPIP, il continue à évoluer et à s’améliorer au fil des bugs découverts. Il convient donc pour l’instant de procéder à des mises à jour régulières. De nouveaux outils peuvent arriver à tout moment ! Vos petits coups de main et retours d’expériences sont essentiels pour la bonne évolution de ce plugin.

La version du Couteau Suisse pour SPIP v1.91 a été conservée ici : https://files.spip.net/grenier/cout.... Sachez que cette version du plugin n’est désormais plus maintenue, il est préférable que vous mettiez à jour SPIP, vous y gagnerez sous tous les angles. Il en sera très bientôt de même avec SPIP v1.92...

Dépendances

La Couteau Suisse a vocation d’être un plugin totalement indépendant et compatible le plus largement possible avec les différentes versions de SPIP. Dès SPIP v1.9.2 et afin de faciliter grandement la mise en œuvre de ses fonctionnalités, le Couteau Suisse ne nécessite donc l’installation d’aucun autre plugin.

Notez tout de même que :

-  Certains plugins tiers sont reconnus, sans être indispensables. Par exemple, Chargeur Activateur pour SPIP 1.92 ou Porte plume pour SPIP >= 2.x.
-  Certaines lames sont basées sur des fichiers externes dont il convient de bien vérifier le téléchargement lors de l’activation. Exemple d’outils concernés : «Prévisualisation des articles» - «Masquer du contenu» - «Jolis Coins», ...
-  L’interface de configuration ainsi que quelques outils du plugin requièrent la librairie jQuery. Le site officiel (en anglais) est : http://jquery.com/. D’autres informations sont disponibles en français ici : http://www.jquery.info/. Cette librairie de fonctions Javascript a été complètement intégrée dans SPIP à partir de la version 1.92. Pour les versions antérieures, il vous faudra installer un plugin spécifique que vous pouvez télécharger ici : https://files.spip.org/spip-zone/jq....
Sommaire

Fonctionnalités, outils disponibles

Voici un peu en vrac les outils réunis pour l’instant. N’hésitez pas à nous signaler les oublis ou incohérences qui nous auraient échappés dans les tableaux qui suivent :

Administration
Format des URLs 
SPIP offre un choix sur plusieurs jeux d’URLs pour fabriquer les liens d’accès aux pages de votre site. Plus d’infos : https://www.spip.net/fr_article765.html. L’outil « Boîtes privées » vous permet de voir sur la page de chaque objet SPIP l’URL propre associée.

Format proposés : page, html, propres, propres2, libres, arborescentes, standard, propres_qs.

Rappel : pour utiliser les formats html, propres, propres2, libres ou arborescentes, recopiez le fichier “htaccess.txt” du répertoire de base du site SPIP sous le sous le nom “.htaccess” (attention à ne pas écraser d’autres réglages que vous pourriez avoir mis dans ce fichier) ; si votre site est en “sous-répertoire”, vous devrez aussi éditer la ligne “RewriteBase” ce fichier. Les URLs définies seront alors redirigées vers les fichiers de SPIP.

Nombreux paramètres de configuration : terminaison des URLs, début des URLs, caractère de séparation, longueur maximale, marqueurs dissociant les objets, script d’appel, lettres minuscules, id systématique en suffixe, id systématique en préfixe, minimum de 3 chiffres (pour Google notamment, SPIP 2.0 mini), etc.

Actions rapides sur les URLs :

- Réinitialisation des URLs stockées dans la base

- Édition en base de l’URL d’un objet spécifique.

SPIP et le cache…
- Désactiver le cache : Par défaut, SPIP calcule toutes les pages publiques et les place dans le cache afin d’en accélérer la consultation. Désactiver temporairement le cache peut aider au développement du site. Sous SPIP 2.x, quatre valeurs possibles : Usage normal, Cache permanent,
Pas de cache, Contrôle du cache.

- Valeur du quota : Le cache occupe un certain espace disque et SPIP peut en limiter l’importance. Une valeur vide ou égale à 0 signifie qu’aucun quota ne s’applique.

- Recalculer juste après une modification : Lorsqu’une modification du contenu du site est faite, SPIP invalide immédiatement le cache sans attendre le calcul périodique suivant. Si votre site a des problèmes de performance face à une charge très élevée, vous pouvez cocher « non » à cette option.

- Durée du cache local : Si la balise #CACHE n’est pas trouvée dans vos squelettes locaux, SPIP considère par défaut que le cache d’une page a une durée de vie de 24 heures avant de la recalculer. Afin de mieux gérer la charge de votre serveur, vous pouvez ici modifier cette valeur.

- Durée du cache en mutualisation : Si vous avez plusieurs sites en mutualisation, vous pouvez spécifier ici la valeur par défaut prise en compte par tous les sites locaux (SPIP 2.0 mini).

- L’extension « Compresseur » présente dans SPIP permet de compacter les différents éléments CSS et Javascript de vos pages et de les placer dans un cache statique. Cela accélère l’affichage du site, et limite le nombre d’appels sur le serveur et la taille des fichiers à obtenir. Quatre option pour régler compression du HEAD : Compacter les CSS / Compacter le Javacript / Ne rien compacter en partie privée / Ne rien compacter du tout (rend caduques les options précédentes).

Action rapide sur le cache : le vider.

Dossier du squelette
Modifie le dossier du squelette utilisé. Par exemple : «squelettes/monsquelette». En laissant la case vide, c’est le squelette original «dist» fourni par SPIP qui sera utilisé.
Paragrapher
Applique (ou non) la fonction SPIP paragrapher() aux textes qui sont dépourvus de paragraphes en insérant des balises <p></p>.
Suivi des forums (SPIP 1.9.2 uniquement)
Un auteur d’article est toujours informé lorsqu’un message est publié dans le forum associé. Mais il est aussi possible d’avertir en plus : tous les participants au forum ou seulement les auteurs de messages en amont.
Pas de verrouillage de fichiers
Désactive le système de verrouillage de fichiers en neutralisant la fonction PHP flock(). Certains hébergements posent en effet des problèmes graves suite à un système de fichiers inadapté ou à un manque de synchronisation. N’activez pas cet outil si votre site fonctionne normalement.
Liste des webmestres
Un webmestre au sens SPIP est un administrateur ayant accès à l’espace FTP. Par défaut, il est l’administrateur id_auteur=1 du site. Les webmestres ont le privilège de ne plus être obligés de passer par FTP pour valider les opérations sensibles du site, comme la mise à jour de la base de données ou la restauration d’un dump. En tant que webmestre vous-même, vous aurez les droits de modifier cette liste.
La corbeille (SPIP 2.0 mini)
SPIP supprime automatiquement les objets mis au rebuts au bout de 24 heures, en général vers 4 heures du matin, grâce à une tâche « CRON » (lancement périodique et/ou automatique de processus pré-programmés). Vous pouvez grâce à cet outil empêcher ce processus afin de mieux gérer votre corbeille.

Action rapide : purger à votre convenance les objets déclassés.

Modération modérée
Permet de modérer la modération des forums publics configurés à priori pour les utilisateurs inscrits. Exemple : Je suis le webmestre de mon site, et je réponds à un message d’un utilisateur, pourquoi devoir valider mon propre message ? Modération modérée le fait pour moi !
Tâches CRON
Permet de visualiser les tâches « CRON » en cours (lancement périodique et/ou automatique de processus pré-programmés) et d’en piloter le fonctionnement
Sécurité
(Les outils suivants concernent essentiellement la sécurité de votre site)
Lutte contre le SPAM 
Tente de lutter contre les envois de messages automatiques et malveillants en partie publique. Certains mots, tout comme les balises en clair <a></a>, sont interdits : veuillez inciter vos rédacteurs à utiliser les raccourcis de liens SPIP. La configuration de cet outil antiSPAM vous permet facilement de Lister les séquences interdites et éventuellement de bloquer des adresses IPs.

Action rapide : test interactif de ce filtre (messages et/ou adresses IP) et parcours éventuel de la base de données.

Ecran de sécurité (toutes versions de SPIP)
L’écran de sécurité est un fichier PHP directement téléchargé sur le site officiel de SPIP, qui protège vos sites en bloquant certaines attaques liées à des trous de sécurité.

Outre la sécurité, cet écran a la capacité réglable de moduler les accès des robots d’indexation aux scripts php, de manière à leur dire de « revenir plus tard » lorsque le serveur est saturé.

En cas de mise à jour officielle, actualisez le fichier distant associé afin de bénéficier de la protection la plus récente.

Fichier distant : facilité de mise à jour et gestion des versions.

Gestion du javascript
Pour gérer le javascript dans les articles, trois modes sont disponibles :

- jamais : le javascript est refusé partout

- défaut : le javascript est signalé en rouge dans l’espace privé

- toujours : le javascript est accepté partout.

Attention : dans les forums, pétitions, flux syndiqués, etc., la gestion du javascript est toujours sécurisée.

Mises à jour automatiques - Plus d’informations
Garde un œil sur tous vos plugins. Cet outil vous permet de gérer facilement leurs mises à jour, récupérant notamment le numéro de révision contenu dans le fichier svn.revision et le comparant avec celui trouvé sur zone.spip.org. La liste proposée offre la possibilité de lancer le processus de mise à jour automatique de SPIP sur chacun des plugins préalablement installés dans le dossier plugins/auto/.

Cet outil vous informe également des différentes versions officielles disponibles pour SPIP lui-même.

MailCrypt - Plus d’Informations
Masque tous les liens de courriels présents dans vos textes en les remplaçant par un lien Javascript permettant quand même d’activer la messagerie du lecteur. Cet outil antispam tente d’empêcher les robots de collecter les adresses électroniques laissées en clair dans les forums ou dans les balises de vos squelettes.
Citations bien balisées
Afin de respecter les usages en HTML dans les contenus SPIP de votre site (articles, rubriques, etc.), cet outil remplace automatiquement les balises <quote> par des balises <q> quand il n’y a pas de retour à la ligne.
Taille des forums
Par défaut les messages de forum ne sont pas limités en taille. Si cet outil est activé, un message d’erreur s’affichera lorsque quelqu’un voudra poster un message d’une taille supérieure à la valeur spécifiée, et le message sera refusé.
Pas de stockage IP
Désactive le mécanisme d’enregistrement automatique des adresses IP des visiteurs de votre site par soucis de confidentialité : SPIP ne conservera alors plus aucun numéro IP, ni temporairement lors des visites (pour gérer les statistiques ou alimenter spip.log), ni dans les forums (responsabilité).
Pas de forums anonymes
Incite tous les auteurs de messages publics à remplir (d’au moins d’une lettre !) le champ «Votre nom (ou pseudonyme) :» afin d’éviter les contributions totalement anonymes.

Cette fonctionnalité utilise la librairie jQuery.

Limites mémoire
- Taille maximale des images, des logos et des documents. Afin d’alléger la mémoire de votre serveur, SPIP vous permet de limiter les dimensions (hauteur et largeur) et la taille du fichier des images, logos ou documents joints aux divers contenus de votre site. Si un fichier dépasse la taille indiquée, le formulaire enverra bien les données mais elles seront détruites et SPIP n’en tiendra pas compte, ni dans le répertoire IMG/, ni en base de données. Un message d’avertissement sera alors envoyé à l’utilisateur.
Une valeur nulle ou non renseignée correspond à une valeur illimitée.

- Espace maximal réservé aux copies locales (SPIP 2.0 mini). Il s’agit ici l’espace maximal réservé aux fichiers distants que SPIP pourrait télécharger (de serveur à serveur) et stocker sur votre site. La valeur par défaut est de 16 Mo.

- Calculs d’images avec GD. Afin d’éviter un dépassement de mémoire PHP dans le traitement des grandes images par la librairie GD2, SPIP teste les capacités du serveur et peut donc refuser de traiter les trop grandes images. Il est possible de désactiver ce test en définissant manuellement le nombre maximal de pixels supportés pour les calculs. La valeur de 1 000 000 pixels semble correcte pour une configuration avec peu de mémoire. Une valeur nulle ou non renseignée entraînera le test du serveur.

- Qualité de compression (SPIP 2.0 mini). La librairie GD2 permet d’ajuster la qualité de compression des images JPG. Un pourcentage élevé correspond à une qualité élevée.

Sessions anonymes (SPIP 2.1 maxi)
Chaque semaine, cet outil vérifie les sessions anonymes et supprime les fichiers qui sont trop anciens (plus de 2 jours) afin de ne pas surcharger le serveur, notamment en cas de SPAM sur le forum.
Interface privée
(Les outils suivants concernent uniquement la partie privée de SPIP)
Type d’interface privée (SPIP 1.9.2 maxi)
Sélectionne d’office le type d’interface privée (simplifiée ou avancée) pour tous les rédacteurs déjà existants ou à venir et supprime le bouton correspondant du bandeau des petites icônes.
Allègement de l’interface privée (SPIP 2.0 mini)
Désactive le menu de changement rapide de statut d’un article au survol de sa puce colorée. Cela est utile si vous cherchez à obtenir une interface privée la plus dépouillée possible afin d’optimiser les performances client.
Largeur d’écran
Détermine la largeur d’écran imposée à tous en partie privée. Un écran étroit présentera deux colonnes et un écran large en présentera trois. Le réglage par défaut laisse l’utilisateur choisir, son choix étant stocké dans un cookie. Il est possible aussi de modifier la largeur totale de la page.
Bouton « Visiter »
Remplace l’image du bouton standard « Visiter » (en haut à droite) par le logo du site, s’il existe. Pour définir ce logo, rendez-vous sur la page « Configuration du site » en cliquant sur le bouton « Configuration ».
Page des auteurs
Configure l’apparence de la page des auteurs, en partie privée. Vous pouvez définir :

- le nombre maximal d’auteurs à afficher sur le cadre central de la page des auteurs. Au-delà, une pagination est mise en place.

- Les statuts d’auteurs qui peuvent être listés sur cette page (administrateurs, rédacteurs, visiteurs, etc.)

Réglage des sélecteurs
- Sélecteur de rubrique (brouteur). Permet d’utiliser le sélecteur de rubrique en AJAX à partir d’un nombre configurable de rubriques.
-  Sélection de mots-clefs (SPIP 2.0 mini). Permet d’utiliser un champ de recherche au lieu d’une liste de sélection à partir d’un nombre configurable de mot(s)-clef(s).
-  Sélection d’auteurs (SPIP 2.0 mini). L’ajout d’un auteur se fait par mini-navigateur dans la fourchette suivante :

- Une liste de sélection pour moins de XX auteurs(s).

- Un champ de recherche à partir de YY auteurs(s).

Dans la même rubrique
Définit le nombre d’objets listés dans le cadre nommé « Dans la même rubrique » et présent sur certaines pages de l’espace privé.
Les tris de SPIP
Pour personnaliser la navigation en partie privée et lorsque SPIP le permet, choisissez ici le tri à utiliser pour afficher certains types objets :

- Ordre des articles à l’intérieur des rubriques

- Ordre des groupes dans le formulaire d’ajout de mots-clés

Les propositions de configuration sont basées sur la fonctionnalité SQL ’ORDER BY’. N’utilisez le tri personnalisé que si vous savez ce que vous faites (champs disponibles par exemple pour les articles : id_article, id_rubrique, titre, soustitre, surtitre, statut, date_redac, date_modif, lang, etc.).

Exemples : tri sur la date de modification (ORDER BY date_modif DESC), sur le titre (ORDER BY 0+titre,titre), sur la date de publication (ORDER BY date DESC), etc.

Boîtes privées - Plus d’informations
Toutes les boîtes décrites ci-dessous apparaissent dans la partie privée.

- Les révisions du Couteau Suisse : un cadre sur la présente page de configuration, indiquant les dernières modifications apportées au code du plugin (Source).

- Les articles au format SPIP : un cadre repliable supplémentaire pour vos articles afin de connaître le code source utilisé par leurs auteurs.

- Les auteurs en stat : un cadre supplémentaires sur la page des auteurs indiquant les 10 derniers connectés et les inscriptions non confirmées. Seuls les administrateurs voient ces informations.

Vous pouvez également définir le nombre maximal d’auteurs à afficher sur le cadre central de cette page.

- Les webmestres SPIP : un cadre dépliable sur la page des auteurs indiquant les administrateurs élevés au rang de webmestre SPIP. Seuls les administrateurs voient ces informations. Si vous êtes webmestre vous-même, voyez aussi l’outil « Liste des webmestres ».

- Les URLs propres : un cadre dépliable pour chaque objet de contenu (article, rubrique, auteur, …) indiquant l’URL propre associée ainsi que leurs alias éventuels. L’outil « Format des URLs » vous permet une configuration fine des URLs de votre site.

- Les tris d’auteurs : un cadre dépliable pour les articles contenant plus d’un auteur et permettant simplement d’en ajuster l’ordre d’affichage. Ceci est utile pour placer par exemple l’auteur original ou principal d’un article en toute première position.

Seules les boucles AUTEURS non triées prennent en compte ces réglages.

Prévisualisation des articles (SPIP 2.0 mini, SPIP 2.1 maxi)
Par défaut, SPIP permet de prévisualiser un article dans sa version publique et stylée, mais uniquement lorsque celui-ci a été « proposé à l’évaluation ». Hors cet outil permet aux auteurs de prévisualiser également les articles pendant leur rédaction. Chacun peut alors prévisualiser et modifier son texte à sa guise.

Attention : cette fonctionnalité ne modifie pas les droits de prévisualisation. Pour que vos rédacteurs aient effectivement le droit de prévisualiser leurs articles « en cours de rédaction », vous devez l’autoriser (dans le menu Configuration>Fonctions avancées de l’espace privé).

Améliorations typographiques
(Les outils suivants modifient juste l’apparence de vos textes, sans en modifier la source)
Belles puces 
Remplace les puces « - » (tiret simple) des articles par des listes notées « -* » (traduites en HTML par : <ul><li>…</li></ul>) et dont le style peut être personnalisé par css. Un nouveau raccourci est éventuellement proposé (« * ») pour conserver l’accès à cette puce image de SPIP.
Les exposants - Plus d’Informations
Textes français : améliore le rendu typographique des abréviations courantes, en mettant en exposant les éléments nécessaires. Ainsi, Mme devient Mme et en corrigeant les erreurs courantes 2ème ou 2me, par exemple, deviennent 2e, seule abréviation correcte.
Guillemets typographiques - Plus d’Informations
Remplace automatiquement les guillemets droits (") par les guillemets typographiques de la langue de composition. Le remplacement, transparent pour l’utilisateur, ne modifie pas le texte mais seulement l’affichage final.
Belles URLs - Plus d’Informations
- Liens corrects : SPIP a pour habitude d’insérer un espace avant les points d’interrogation ou d’exclamation, typo française oblige. Voici un outil qui protège le point d’interrogation dans les URLs de vos textes.

- Liens orphelins : Remplace systématiquement toutes les URLs laissées en texte par les utilisateurs (notamment dans les forums) et qui ne sont donc pas cliquables, par des liens hypertextes au format SPIP. Voici un test : www.spip.net est remplacé par www.spip.net.

Vous pouvez choisir le type de remplacement :

- basique : sont remplacés les liens du type http://spip.net (tout protocole) ou www.spip.net.

- étendu : sont remplacés en plus les liens du type moi@spip.net, mailto:monmail ou news:mesnews.

Sommaire pour les articles - Plus d’informations
Construit automatiquement un sommaire en début d’article afin d’accéder rapidement aux gros titres (balises <h3>Un titre</h3> ou raccourcis SPIP {{{Un autre titre}}}. Une balise #CS_SOMMAIRE est disponible pour déporter le sommaire dans la page.

Paramètres de configuration : profondeur retenue sur les intertitres, largeur du sommaire (en caractères), création systématique du sommaire (oui/non), jolies ancres.

Glossaire interne - Plus d’informations
Gestion d’un glossaire interne lié à un groupe de mots-clés nommé «Glossaire» : très utile pour les termes difficiles ou les acronymes. Pour chaque mot, vous avez la possibilité de choisir les groupes utilisés, le nombre maximal de liens créés dans vos textes et la technique utilisée (JS ou CSS).

Action rapide : Vérification de la base de données

Smileys - Plus d’Informations
Remplace tous les smileys écrits «en texte» par l’image souriante correspondante. Outil très utile pour les forums.

Une balise est disponible pour afficher un tableau de smileys dans vos squelettes : #SMILEYS.

Intertitres en image
Transforme tous les intertitres « {{{Mon intertitre}}} » ou « {{{*Mon intertitre}}} » en image typographique paramétrable : taille de la police, couleur de la police, nom du fichier de la police (dossiers polices/), largeur maximale de la ligne de texte, hauteur de la ligne de texte (éq. à line-height), espacement autour du texte (éq. à padding), alignement du texte.
Sauts de ligne automatiques
Applique sur tous vos contenus SPIP (texte d’articles, rubriques, etc.) le filtre |post_autobr qui remplace tous les sauts de ligne simples par un saut de ligne HTML <br />.
Titres typographiés
Active l’application automatique des raccourcis typographiques de SPIP sur toutes les balises #TITRE et apparentées (#NOM pour un auteur, etc.).
Raccourcis typographiques
(Les outils suivants introduisent de nouveaux raccourcis pour la rédaction de vos textes)
Découpe en pages et onglets - Plus d’Informations
Découpe l’affichage public d’un article en plusieurs pages grâce à une pagination automatique. placez simplement dans votre article quatre signes plus consécutifs (++++) à l’endroit qui doit recevoir la coupure.

Si vous utilisez ce séparateur à l’intérieur des balises <onglets> et </onglets> alors vous obtiendrez un jeu d’onglets.

Dans les squelettes : vous avez à votre disposition les nouvelles balises #ONGLETS_DEBUT, #ONGLETS_TITRE et #ONGLETS_FIN.

Blocs multilingues
À l’instar de ce vous pouvez déjà faire dans vos squelettes, cet outil vous permet d’utiliser librement les chaînes de langues (de SPIP ou de vos squelettes) dans tous les contenus de votre site (articles, titres, messages, etc.) à l’aide du raccourci <:chaine:>. La fonction SPIP utilisée est : _T('un_texte', $flux). Les arguments sont également supportés.

N’oubliez pas de vérifier que ’un_texte’ est bien défini dans les fichiers de langue.

Décoration - Plus d’Informations
De nouveaux styles (classes ou langues) paramétrables pour vos textes et accessibles grâce à des balises à chevrons personnalisées. Exemple : <mabalise>texte</mabalise> ou : <mabalise/>.

Exemples fournis : <sc>capitales</sc>, <souligne>souligné</souligne>, <barre>barré</barre>, <dessus>dessus</dessus>, <clignote>clignote</clignote>, <surgris>gris</surgris> et <surfluo>fluo</surfluo>

Tout en couleurs - Plus d’Informations
Permet d’appliquer facilement des couleurs (toutes éventuellement paramétrables) à tous les textes du site (articles, brèves, titres, forum, ...) en utilisant des balises à crochets (anglais ou français).

Deux exemples identiques : Lorem ipsum [rouge]dolor[/rouge] sit amet et
Lorem ipsum [red]dolor[/red] sit amet.

Chatons
Insère des images (ou chatons pour les tchats) dans tous les textes où apparaît une chaîne du genre :nom. Comme pour les smileys, cet outil remplace les raccourcis en texte par les images du même nom qu’il trouve dans le répertoire plugins/couteau_suisse/img/chatons/ ou squelettes/mon_squelette/img/chatons/.
Filets de Séparation - Plus d’Informations
Permet d’insérer très facilement des filets de séparation personnalisés dans les textes, comme des styles purs ou des images à placer dans le répertoire plugins/couteau_suisse/img/filets.
Blocs Dépliables - Plus d’informations
Vous permet de créer des blocs dont le titre cliquable peut les rendre visibles ou invisibles.

Dans les textes SPIP : les rédacteurs ont à disposition les nouvelles balises <bloc> (ou <invisible>) et <visible> à utiliser dans leurs textes.

Dans les squelettes : vous avez à votre disposition les nouvelles balises #BLOC_TITRE, #BLOC_DEBUT et #BLOC_FIN.

Affichage public
(Les outils suivants modifient juste l’apparence des pages publiques)
Supprime le numéro (obsolète dès SPIP 3.0) 
Applique la fonction SPIP supprimer_numero() à l’ensemble des titres, des noms et des types (de mots-clés) du site public, sans que le filtre supprimer_numero soit présent dans les squelettes.
Voici la syntaxe à utiliser dans le cadre d’un site multilingue : 1. <multi>My Title[fr]Mon Titre[de]Mein Titel</multi>.
Force la langue
Force le contexte de langue pour les jeux de squelettes multilingues disposant d’un formulaire ou d’un menu de langues sachant gérer le cookie de langues. Techniquement, cet outil a pour effet :

- de désactiver la recherche du squelette en fonction de la langue de l’objet,

- de désactiver le critère {lang_select} automatique sur les objets classiques (articles, brèves, rubriques etc ... ).

Les blocs multi s’affichent alors toujours dans la langue demandée par le visiteur.

Style des paragraphes
Jusqu’à la version 1.92 de SPIP, les paragraphes html (marqués par la balise <p>) étaient systématiquement affublés du style class="spip". Cet outil vous permet de définir le style de vos paragraphes en fonction de vos feuilles de style.
Désactive les objets flash

Supprime les objets flash des pages de votre site et les remplace par le contenu alternatif associé. Nécessite le plugin jQuery ou une version de SPIP supérieure à 1.9.2.

SPIP et les liens… externes - Plus d’informations
- Liens externes : permet aux liens externes au site de s’ouvrir dans une nouvelle fenêtre extérieure. Activer cet outil revient à ajouter automatiquement target="_blank" à toutes les balises <a> dotées par SPIP des classes spip_out, spip_url et/ou spip_glossaire. Il est parfois nécessaire d’ajouter l’une de ces classes aux liens du squelette du site (fichiers html) afin d’étendre au maximum cette fonctionnalité.

- Glossaire externe : SPIP permet de relier des mots à leur définition grâce au raccourci typographique [?mot]. Par défaut, le glossaire externe renvoie vers l’encyclopédie libre wikipedia.org. À vous de choisir l’adresse à utiliser. Exemple : SPIP.

Désactive jQuery
Empêche l’installation des fonctions de jQuery dans la partie publique : utile pour alléger les pages ou installer d’autres librairies. jQuery (http://jquery.com/) apporte de nombreuses commodités dans la programmation de Javascript et peut être utilisée par certains plugins. SPIP l’utilise dans sa partie privée.
Ancres douces
Offre à votre site public un défilement adouci de la page lorsque le visiteur clique sur un lien pointant vers une ancre : très utile pour éviter de se perdre dans une page complexe ou un texte très long...
Jolis Coins - Plus d’Informations
Permet de modifier facilement l’aspect des coins de vos cadres colorés en partie publique de votre site. Tout est possible, ou presque ! Voyez le résultat sur cette page : http://www.malsup.com/jquery/corner/.
Visiteurs connectés
Offre une noisette pour votre squelette qui affiche le nombre de visiteurs connectés sur le site public : ajoutez simplement <INCLURE{fond=fonds/visiteurs_connectes}> dans vos pages. Pour éviter l’insertion d’un paragraphe, ajouter le paramètre {p=0} : <INCLURE{fond=fonds/visiteurs_connectes}{p=0}>
Message d’alerte
Affiche en tête de toutes les pages publiques un bandeau d’alerte pour diffuser le message d’urgence défini par l’utilisateur.

Les balises <multi/> sont recommandées en cas de site multilingue.

Balises, filtres, critères
Orientation des images 
Ajoute les critères {portrait}, {carre} et {paysage} dans vos squelettes pour le classement des photos.

Idée d’origine

Version texte
2 filtres pour vos squelettes.

version_texte : extrait le contenu texte d’une page html à l’exclusion de quelques balises élémentaires.

version_plein_texte : extrait le contenu texte d’une page html pour rendre du texte plein.

Balise #INSERT_HEAD
Active #INSERT_HEAD sur tous les squelettes, qu’ils aient ou non cette balise entre <head> et </head>. Grâce à cette option, les plugins pourront insérer du javascript (.js) ou des feuilles de style (.css).
Balise #INTRODUCTION - Plus d’Informations
- Longueur du résumé : vous pouvez préciser (en pourcentage par rapport à la valeur utilisée par défaut) la longueur du texte renvoyé par balise #INTRODUCTION. Une valeur nulle ou égale à 100 ne modifie pas l’aspect de l’introduction et utilise donc les valeurs par défaut suivantes : 500 caractères pour les articles, 300 pour les brèves et 600 pour les forums ou les rubriques.

- Points de suite : par défaut, les points de suite ajoutés au résultat de la balise #INTRODUCTION sont : '&nbsp;(...)'. Cette balise à placer dans les squelettes sert en général à la une ou dans les rubriques afin d’introduire les articles, les brèves, etc.. Vous pouvez donc préciser votre propre chaîne de caractère indiquant à l’utilisateur que le texte tronqué a bien une suite.

- Points de suite cliquables : si la balise #INTRODUCTION est utilisée pour résumer un article, alors le Couteau Suisse peut fabriquer un lien hypertexte sur les points de suite définis ci-dessus afin de mener le lecteur vers le texte original. Par exemple : « Lire la suite de l’article… »

Liens en clair - Plus d’Informations
Met à votre disposition le filtre : ’liens_en_clair’. Votre texte contient probablement des liens hypertexte qui ne sont pas visibles lors d’une impression. Ce filtre ajoute entre crochets la destination de chaque lien cliquable (liens externes ou mails).

Attention : En mode impression (paramètre ’cs=print’ dans l’url de la page par exemple), cette fonctionnalité est appliquée automatiquement.

Balises #TITRE_PARENT/OBJET - Plus d’Informations
Au sein d’une boucle, il est courant de vouloir afficher le titre du parent de l’objet en cours. Traditionnellement, il suffirait d’utiliser une seconde boucle, mais cette nouvelle balise #TITRE_PARENT allégera l’écriture de vos squelettes. Le résultat renvoyé est : le titre du groupe d’un mot-clé ou celui de la rubrique parente (si elle existe) de tout autre objet (article, rubrique, brève, etc.).

Notez : Pour les mots-clés, un alias de #TITRE_PARENT est #TITRE_GROUPE. Le traitement SPIP de ces nouvelles balises est similaire à celui de #TITRE.

- Si vous êtes sous SPIP 2.0, alors vous avez ici à votre disposition tout un ensemble de balises #TITRE_XXX qui pourront vous donner le titre de l’objet ’xxx’, à condition que le champ ’id_xxx’ soit présent dans la table en cours (#ID_XXX utilisable dans la boucle en cours).

Par exemple, dans une boucle sur (ARTICLES), #TITRE_SECTEUR donnera le titre du secteur dans lequel est placé l’article en cours, puisque l’identifiant #ID_SECTEUR (ou le champ ’id_secteur’) est disponible dans ce cas.

La syntaxe #TITRE_XXX{yy} est également supportée. Exemple : #TITRE_ARTICLE{10} renverra le titre de l’article #10.

Balises #SWITCH #CASE (SPIP 3.1 mini) - Plus d’Informations
Les balises #SWITCH, #CASE et #CASE_DEFAULT, ainsi que le filtre |switchcase, implémentent les contrôles switch/case/default du PHP ou du C.

Ces écritures simplifient grandement la lisibilté de vos squelettes. Exemples :

#SWITCH{#ENV{code_erreur}}
[(#CASE{0}) Tout va bien]
[(#CASE{1}) Attention ?]
[(#CASE{2}) Oups !]
[(#FRUIT|switchcase{
  banane,jaune,
  orange,orange,
  fraise,rouge,
  inconnue
}]

- Après un appel à #SWICH{valeur comparée}, #CASE{valeur calculée} vaut '' (vide) si la valeur calculée est différente de la valeur comparée, et vaut ' ' (espace) en cas d’égalité.

- La valeur testée par le #SWITCH reste disponible grâce à : #GET{_switch_}.

- On ne peut pas emboiter plusieurs #SWITCH dans un même squelette.

Balise #SET étendue - Plus d’Informations
Afin d’alléger les écritures du type #SET{x,#GET{x}|un_filtre}, cet outil vous offre le raccourci suivant : #SET_UN_FILTRE{x}. Le filtre appliqué à une variable passe donc dans le nom de la balise. Exemples : #SET{x,1}#SET_PLUS{x,2} ou #SET{x,avions}#SET_REPLACE{x,ons,ez}.
Trousse à balises - Plus d’Informations
Quelques balises pour faciliter la rédaction de vos squelettes :

- La balise #BOLO/Le modèle <boloxxx> : produit un faux texte d’un maximum de 3000 caractères (“bolo” ou “lorem ipsum”) afin d’aider à la mise au point des pages. L’argument peut préciser le nombre de caractères voulu.

- La balise #CHR : retourne le caractère dont le code ASCII est donné par le paramètre ascii en argument.

- La balise #MAINTENANT/#NOW : renvoie la date et l’heure actuelle (attention cependant au cache de SPIP). L’argument peut en spécifier le format.

- La balise #AUTORISER_SINON_LOGIN : renvoie une page de login si l’autorisation n’est pas donnée au squelette en cours.

Masquer du contenu (SPIP 2.0 mini)
Permet de masquer sur le site public et sans modification particulière de vos squelettes, les contenus (rubriques ou articles) qui ont le mot-clé défini par l’utilisateur. Si une rubrique est masquée, toute sa branche l’est aussi. Pour forcer l’affichage des contenus masqués, il suffit d’ajouter le critère {tout_voir} aux boucles de votre squelette.
Obfusquer des liens
Met à votre disposition le filtre : |obfusquer_liens. L’obfuscation de liens permet d’empêcher les robots des moteurs de recherche de suivre les liens de type <a href=\"page.html\">par ici</a>, sans modifier la navigation. Cela pourra éviter la transmission de pagerank non désiré vers des pages à moindre intérêt, et guider les robots vers des pages plus pertinentes et riches.

En plaçant #FILTRE{obfusquer_liens} dans un squelette, tous les liens seront obfusqués.

Développement
(Les outils suivants sont en général utilisés pendant la phase de développement de site)
Site en travaux 
Permet d’afficher un message personnalisable pendant une phase de maintenance sur tout le site public et de choisir le type d’utilisateur autorisés à parcourir le site (public ou privé).

Modèle surchargeable utilisé : fonds/en_travaux.html

Activer le validateur xml
Active le validateur xml pour l’espace public tel qu’il est décrit dans la documentation.
Débogueur de développement
Permet de voir les erreurs PHP à l’écran. Vous pouvez même choisir le niveau d’erreurs d’exécution PHP qui sera affiché si le débogueur est actif, ainsi que l’espace SPIP sur lequel ces réglages s’appliqueront. Utile notamment pour valider la syntaxe de vos pages finales, et résoudre les problèmes d’accessibilité du Web aux déficients visuels.
SPIP et les logs - Plus d’Informations
Configure les différents paramètres pris en compte par SPIP pour la journalisation des événements particuliers du site : rotation des fichiers (nombre et taille), dossier, nom, extension, nombre d’accès par hit, informations supplémentaires, format brut et gravité maximale acceptée.

Cet outil permet également de consulter et/ou supprimer tous les logs du site.

Traductions manquantes
Toutes les chaînes de langue qui ne sont pas internationalisées (donc présentes dans les fichiers lang/*_XX.php) vont apparaître en rouge. Utile pour n’en oublier aucune !
Décalage horaire (PHP 5.1 mini)
Configure le décalage horaire utilisé par les fonctions date/heure et permet notamment d’éviter les avertissements de PHP 5 lorsque ce décalage horaire est indéfini ou invalide.
Profiling - Plus d’Informations
Aide à optimiser les requêtes SQL de vos squelettes ou de vos scripts en traçant les informations correspondant aux requêtes « trop lentes » (MySQL uniquement) ou aux boucles SPIP dépassant un nombre défini de secondes.
Divers
Comportements du Couteau Suisse 
- Logs : obtenez de nombreux renseignements à propos du fonctionnement du Couteau Suisse dans les fichiers spip.log que l’on peut trouver dans le répertoire temporaire (/tmp à partir de SPIP v1.9.2)

- Options SPIP en amont : SPIP ordonne les plugins dans un ordre spécifique. Afin d’être sûr que le Couteau Suisse soit en tête et gère en amont certaines options de SPIP, alors cochez cette option. Si les droits de votre serveur le permettent, le fichier config/mes_options.php sera automatiquement modifié pour inclure le fichier tmp/couteau-suisse/mes_spip_options.php.

- Requêtes externes : d’une part, le Couteau Suisse vérifie régulièrement l’existence d’une version plus récente de son code et informe sur sa page de configuration d’une mise à jour éventuellement disponible. D’autre part, ce plugin comporte certains outils qui peuvent nécessiter d’importer des librairies distantes.

Si les requêtes externes de votre serveur posent des problèmes ou par souci d’une meilleure sécurité, cochez ces options:

- Les vérifications de versions distantes

- Les outils du Couteau Suisse ayant des fichiers distants

J’espère que la liste pourra s’allonger et gagner en qualité. Cette contrib faite pour vous. N’hésitez pas à l’alimenter : les idées lumineuses et les documentations détaillées sont toujours les bienvenues. Il est par exemple possible de réunir ici la gestion de toutes les variables ou définitions prévues pour mes_options.php ou mes_fonctions.php.

Je me suis permis de rassembler toutes ces petites contributions en un seul plugin parce qu’elles ont très peu de lignes de code, qu’elles ne manipulent par exemple que le fichier mes_options.php, ou alors n’utilisent qu’un seul pipeline. Bien sûr le Couteau Suisse accepte les fonctionnalités «multi-pipeline» et «multi-traitement», mais son but reste de réunir toutes les «petites» améliorations de SPIP qui ne sont pas strictement nécessaires mais bien utiles au plus grand nombre.

Merci à la communauté SPIP ainsi qu’aux différents auteurs et contributeurs (sans ordre) : Vincent Ramos, Maïeul Rouquette, Fil, Arnaud Ventre, Joseph Larmarange, Cédric Morin, Pierre Andrews (Mortimer), IZO, Phil, Jérôme Combaz, Bertrand Marne, Romy Têtue, Aurélien Pierard, FredoMkb, Sylvain, BoOz, Alexis Roussel, Paolo, Pat, Yohann(potter64), Nicolas Hoizey, Piero Wbmstr, etc.

Sommaire

Particularité du «mode impression»

Le Couteau Suisse offre un mode utile pour l’impression en plaçant le paramètre “cs=print” dans le lien d’appel de la page. Ce mode est automatiquement activé si les squelettes “print.html”, “imprimer.html”, “imprimir_articulo.html”, “imprimir_breve.html” ou “article_pdf.html” sont utilisés (donc ici : “page=print”, “page=imprimer”, etc.).

Exemples d’appel :
-  Dans un navigateur : www.monsite.ici/spip?article999&cs=print.
-  Dans un squelette : [(#SELF|parametre_url{cs,print})]
-  En PHP : parametre_url(self(), 'cs', 'print')

En mode impression, quatre outils réagissent actuellement :
-  Découpe en page : l’article est imprimé en intégralité sans découpage (juste un filet discret entre les pages), tout comme les onglets, représentés dans un léger cadre pointillé.
-  Sommaire automatique : les ancres ne sont pas placées sur les intertitres.
-  Liens en clair : les liens invisibles (liens externes ou mails) sont affichés entre crochets.
-  Glossaire interne : les mots trouvés sont mis en valeur, mais les fenêtres apparaissant au survol ne sont pas insérées dans le code.

Comme vous pouvez le voir trois paragraphes plus haut, un système de compatibilité a été instauré avec les plugins Imprimir Documento et Article PDF.

Attention : Si votre fichier article.html utilise une balise INCLURE pour traiter le corps de l’article, pensez bien à transmettre les paramètres du Couteau Suisse au fond inclus, sous peine de voir le cache dysfonctionner. En effet, SPIP ne transmettant pas automatiquement les parametres d’url aux fonds inclus, le cache sera le même quelque soit la valeur du paramètre ’cs’.

Voici un exemple d’inclusion que l’on peut faire dans le fichier article.html. Il transmet deux paramètres du Couteau Suisse : ’artpage’ pour la découpe en page des articles et ’cs’ pour avoir accès au mode impression du plugin.

[(#REM) Contenu principal : contenu de l'article ]
<INCLURE{fond=inc-corps-article}{id_article=#ID_ARTICLE}{artpage=#ENV{artpage,1}}{cs=#ENV{cs}}>

Sommaire

Installation du Couteau Suisse

-  Téléchargement : sur la zone [2]
-  Installation : comme tous les autres plugins. Voir : https://www.spip.net/fr_article3396.html
-  Configuration : rendez vous sur la page d’administration du plugin en cliquant sur l’icône «Configuration», puis sur l’onglet «Le Couteau Suisse». Vous arrivez donc ici : ecrire/?exec=admin_couteau_suisse

Mise à jour

Le fichier accessible en téléchargement ci-dessus est régulièrement mis à jour : les petits bugs sont corrigés, des améliorations y sont apportées, de nouveaux outils y sont ajoutés, etc. Il est recommandé de mettre le régulièrement à jour afin de bénéficier des dernières avancées du plugin. Notez bien qu’il faut toujours revalider la page des plugins lorsqu’on met à jour un dossier de plugin. Techniquement, cela permet entre autre de réinitialiser les pipelines et donc les procédures et fonctions utilisées. Ensuite, n’hésitez pas à consulter la page d’administration du plugin lui-même afin de vérifiez vos précédentes options et considérer l’utilité des nouveaux outils éventuellement disponibles.

Un fichier retraçant l’historique n’existe pas actuellement. Je fais appel aux courageuses bonnes volontés qui me lisent à cet instant précis pour cette tâche qui pourrait les intéresser ! Cependant, il vous est possible de consulter les logs de développement (http://trac.rezo.net/trac/spip-zone... ou site 174), ou directement sur la page de configuration du plugin, après avoir activé l’outil : «Les révisions du Couteau Suisse». Le plugin est en effet développé grâce au système de suivi des version «SVN» [3]. Je cite à ce sujet Alexandra [4] :

La fonction principale d’un système de suivi de versions est de permettre l’édition collaborative et le partage de données. C’est grâce à cet outil que bien des œuvres, des plugins et choses diverses se développent sur spip-zone, où tout le monde peut déposer son bout de code, récuper celui d’un autre, améliorer tel projet commencé, sans que cela ne crée de conflits liés à des modifications simultanées.

Toutes les modifications sont enregistrées sur un serveur unique. Celles-ci sont alors gérées localement sur chaque poste utilisateur par un programme spécifique, qui s’assure que les modifications faites localement ne sont pas incompatibles avec la dernière version en ligne. Il permet aussi à chacun d’effectuer des mises à jour rapides en ne récupérant que les éléments modifiés.

Pour mettre à jour le plugin, la procédure par FTP s’exécute en quatre points :

  1. Supprimez tous les fichiers du dossier plugins/couteau_suisse/
  2. Transférez-y les nouveaux fichiers téléchargés sur la zone
  3. Rendez-vous sur la page de gestion des plugins (ou procédez à son réaffichage) : ecrire/?exec=admin_plugin
  4. Rendez-vous sur la page de gestion du Couteau Suisse (ou procédez à son réaffichage) : ecrire/?exec=admin_couteau_suisse

Mise à jour automatique en un clic : voir le paragraphe “Compatibilité avec les squelettes ou d’autres plugins” ci-dessous.

Outil «Mises à jour automatiques» : Voir l’article «Mise à jour automatique des plugins».

Procédure d’urgence

Si un outil semble incompatible avec son environnement (PHP, SQL, un autre plugin, le squelette, etc.), ou si une mise à jour du Couteau Suisse provoque une erreur ou une page blanche, votre premier réflexe est de supprimer totalement le répertoire de travail (caches divers et données temporaires) du plugin : «tmp/couteau-suisse» (ou «ecrire/data/couteau-suisse» pour la version 1.91 de SPIP ). Les fichiers se reconstruiront automatiquement et souvent les problèmes se régleront d’eux mêmes. Nous nous excusons par avance de ce désagrément parfois nécessaire pour améliorer, optimiser ou consolider le fonctionnement du plugin.

Pour le pire des cas, il existe un lien permettant de réinitialiser complètement le plugin, en désactivant l’ensemble des outils et en supprimant toutes les variables stockées dans la base de données. Voici ce lien : ecrire/?exec=admin_couteau_suisse&cmd=resetall

Vous utiliserez ce lien si une page blanche surgit ou si une erreur empêche le bon fonctionnement de votre site, et cela juste après l’activation d’un outil. A l’installation du plugin, il est donc fortement conseillé d’activer les outils un par un, histoire de repérer les éventuels conflits qui pourraient survenir. le monde PHP évolue, SPIP évolue, .... On n’est jamais trop prudent !

En principe, vous n’avez pas besoin de modifier l’état (actif ou inactif) d’une lame à la main. Mais si le cas se présentait, alors il vous faut l’identifiant de l’outil (certains sont listés ici : [dev] Les autorisations du Couteau Suisse) présent dans sa description. Le lien dont vous avez besoin est celui qui est lancé lorsque vous cliquez sur «Activer» (pour un outil inactif) ou «Désactiver» (pour un outil actif).
Voici comment par exemple basculer l’état de la lame «En Travaux» :
ecrire/?exec=admin_couteau_suisse&cmd=switch&outil=en_travaux

Conseil : si le réglage du plugin vous satisfait pleinement, nous vous recommandons de sauvegarder systématiquement vos configurations en cliquant d’abord sur le lien «Configuration Actuelle» présent sur la page d’administration du Couteau Suisse, en haut à gauche. Cliquez ensuite sur le bouton «Sauver la configuration actuelle». Un pack de configuration sera alors déposé dans votre fichier «/config/mes_options.php» et pourra être réactivé plus tard. Plus d’information ici : [dev] Le Couteau Suisse à piloter.

Enfin, après avoir effectué la procédure décrite dans le paragraphe “Dysfonctionnements” ci-dessous sans avoir pu l’appliquer jusqu’au bout, et si vraiment rien n’y fait, alors il suffit de renommer le répertoire plugins/couteau_suisse (ou plugins/auto/couteau_suisse) afin de désactiver le plugin dans son ensemble. Les données de configuration sont préservées dans ce cas. Puis, relancez le site avant de refaire une installation propre et complète du plugin. Il est possible que le transfert des fichiers du plugin ait été incomplet, ou que l’erreur ne venait pas du Couteau Suisse...

Quelques tests

Pour les plus curieux et avertis d’entre vous, le Couteau Suisse offre aussi une page de test privée (très basique et aujourd’hui un peu obsolète) accessible grâce à ce lien : ecrire/?exec=test_couteau_suisse

Et dans tous les cas, le forum ci-dessous est fait pour vous pour les soucis que vous pourriez rencontrer.
Sommaire

Informations techniques

-  Quelques informations techniques pour les curieux développeurs d’outils :
[dev] Le Couteau Suisse : développer un outil

-  Comment piloter la configuration du Couteau Suisse, gérer des packs de configuration et lui ajouter des lames à la volée :
[dev] Le Couteau Suisse à piloter

-  Comment ne pas mettre un Couteau Suisse entre toutes les mains :
[dev] Les autorisations du Couteau Suisse

SommaireCompatibilité avec les squelettes ou d’autres plugins

En tout premier lieu, il est déconseillé aux squelettes d’utiliser des balises étoilées (comme #TEXTE*) car elles renvoient le texte brut stocké en base de donnée sans aucun traitement possible. Hors, SPIP laisse la possibilité à un plugin ou un squelette d’appliquer un traitement sur une balise particulière afin de mieux cibler une action donnée sur un objet donné.

Un code de ce genre (balise #TEXTE*) a été détectée dans l’ancien squelette Alternatives sur la page article.html. Les outils suivants, bien qu’activés, ne seront donc pas reconnus :
-  Les découpes et onglets, Le sommaire automatique, Le Glossaire interne, Les corrections automatiques.
Afin de remédier au problème, vous devez remplacer TOUT le code suivant :

        [<div id="sommaire">
                <h4><:icone_brouteur:></h4>
                (#TEXTE*|sommaire_article|propre)
        </div>]
        [<div class="#EDIT{texte} texte">(#TEXTE*|decouper_en_page{#ID_ARTICLE}|propre|reduire_image{440,0})</div>]

par celui-ci :

        [<div class="#EDIT{texte} texte">(#TEXTE|reduire_image{440,0})</div>]

Pour comprendre les traitements, le meilleur exemple est la suppression du numéro dans les titres. Si vous stockez un titre sous la forme “1. mon titre”, vous allez pouvoir ensuite trier vos articles en fonction du titre. Mais si vous ne voulez pas que ce numéro apparaisse sur vos pages publiques, alors deux solutions s’offrent à vous :
-  soit vous appliquez un filtre partout : [(#TITRE|supprimer_numero)]
-  soit vous ajoutez un traitement : $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s))';

Il faut savoir qu’à ce jour, SPIP permet difficilement (à ce jour) d’agir à plusieurs sur les traitements de balises. Le code ci-dessus écrase obligatoirement le code qu’un plugin aurait pu précédemment tenter d’appliquer.
Certains outils du Couteau Suisse risque donc d’être incompatible avec (entre autres) les plugins suivants :
-  Table des matières, Pagination articles, Découpe en pages.
L’outil “suppression du numéro des titres” est inutile dans les squelettes suivants (entre autres) :
-  Alternatives, forum spipBB, multisaisons, techno_blog.

Les barres de rédaction : le Couteau Suisse est compatible avec le Plugin Barre Typographique V2 (SPIP<2.0)> 3117] (SPIP>=2.0). Il insère les raccourcis de certains outils afin de faciliter le travail de vos rédacteurs. Ceci est encore en expérimentation, n’hésitez pas à nous remonter vos remarques. Pour le calcul graphique de certaines icônes, vérifiez que les fonctions GD de votre site sont bien activées (Configuration > Fonctions avancées).

Mises à jour en un clic

-  Le Couteau Suisse nécessite des mises à jour régulières. Si vous êtes sous SPIP 1.92x, n’hésitez donc pas à installer le plugin “Chargeur Activateur” que le Couteau Suisse utilise pour offrir un lien de téléchargement automatique sur sa page de config.

-  Sous SPIP >= 2.x, ce plugin n’est plus nécessaire. Il vaut mieux utiliser la procédure d’installation automatique offerte par SPIP (page d’administration des plugins) en créant un dossier /plugins/auto/ dans votre site, et en utilisant :
soit l’adresse directe du zip :
- https://files.spip.net/spip-zone/couteau_suisse.zip
soit une liste de plugins, comme par exemple :
- http://files.spip.org/spip-zone/paquets.rss.xml.gz
- http://plugins.spip.net/rss-+-selection-2-+
Une fois installé pour la première fois, un lien de mise à jour est disponible sur la page de configuration pour répéter cette opération en un seul clic quand vous le désirerez.
Sommaire

Dysfonctionnements

N’hésitez pas à remonter tout type de dysfonctionnement du plugin, nous essaierons d’y répondre, dans la mesure du possible. Dans un premier temps, tentez quand même de chercher les causes de vos soucis et soyez méthodiques. Le code est gratuit et améliorable ; chacun peut apporter une pierre à l’édifice.

Dans vos messages, soyez précis. Indiquez bien les différentes versions des éléments que vous utilisez : plugin, squelette, SPIP, PHP, etc. Pour débusquer un bug et trouver la source, il faut d’abord isoler le Couteau Suisse en désactivant les autres plugins, puis isoler l’outil défaillant. Désactiver temporairement son squelette et réutiliser le squelette source de SPIP (“dist”) peut également donner des informations utiles.

3 moyens de contact :
-  Les listes de diffusion comme spip.zone, sur gmane.org;
-  Le forum ci-après, histoire que tout le monde en profite;
-  Mail direct si par hasard vous savez à qui vous adresser, mais seulement pour des données privées.

Avant toute chose, assurez-vous d’avoir :
-  installé/réinstallé la toute dernière version de vos plugins
-  supprimé le dossier tmp/couteau-suisse
-  supprimé les fichiers tmp/charger_*.php
-  validé/rechargé la page des plugins (admin_plugin)
-  validé/rechargé la page du couteau suisse (admin_couteau_suisse)
-  et enfin, vidé le cache de SPIP

Pour mettre les mains dans le cambouis ou glaner quelques infos, n’hésitez pas à consulter et appliquer l’excellent article de Matthieu Marcillaud : http://marcimat.magraine.net/Outils....

Lors d’une migration vers SPIP 3.0, il est possible que la page d’administration du Couteau Suisse soit désorganisée ou présente des erreurs. Essayez dans un premier temps d’ajoutez le paramètre « &var_mode=recalcul » à votre URL afin de recalculer les règles de typographie.

Si cette erreur particulère survient (ou simplement une page blanche sous SPIP 1.92) : Fatal error: Cannot redeclare execute_pipeline_bt_gadgets() (previously declared in /[...]/tmp/charger_pipelines.php:xxx) in /[...]/tmp/charger_pipelines.php on line xxx : prenez soin de désactiver ou mettre à jour tous les plugins concernant la barre typographique (BT V2), puis supprimez le fichier tmp/charger_pipelines.php.
Sommaire

Si cette erreur particulère survient (ou simplement une prévisualisation impossible des messages de forum sous SPIP 2.0.9) quand les visiteurs tentent de ’Voir ce message avant de poster’ : : Fatal error: Call to undefined function cs_decoupe() in /[...]/squelettes-dist/formulaires/forum.php(275) : eval()’d code on line 1 :
mettez vite à jour SPIP, version 2.0.10 minimum ! Le fichier fautif sous SPIP 2.0.9 est squelettes-dist/formulaires/forum.php. Il doit être remplacé par celui-ci : http://trac.rezo.net/trac/spip/brow... (téléchargement en bas de page).

Débats

A ce sujet, j’ai tenté de lancer les débats suivants :

Un premier débat qui peut être lancé concerne donc la répartition entre les fonctionnalités du core et celles qui peuvent être placées dans ce plugin que l’utilisateur est libre d’installer ou non. Chaque fonctionnalité peut elle aussi être activée ou désactivée par l’utilisateur. SPIP «gonfle» de jour en jour et la souplesse introduite par les plugins peut permettre un gonflage maîtrisé...

Par exemple, un antispam n’est peut-être pas nécessaire dans le core (utilisé aussi en intranet) mais pourrait trouver une meilleure place dans le Couteau Suisse.

Le second débat, c’est celui de savoir ce qu’il faut mettre dans le Couteau Suisse ou non ! Doit-il rassembler diverses corrections typographiques et remplacements graphiques ? Doit-il ajouter de nouvelles balises pour les squelettes ? Doit-il ajouter de nouveaux filtres pour ces balises ?

-  De ceci émerge déjà une première réponse : le Couteau Suisse doit pouvoir contrôler les variables «cachées» de SPIP et habituellement placées dans «mes_options.php».
-  Ensuite et à mon sens, les remplacements et améliorations typographiques ont besoin d’un cadre sécurisant unifié. Il est déjà apporté par exemple par les fonctions «monoutil_installe()» et «cs_echappe_balises()» ou les paramètres «version-min» ou «version-max».
-  De même, la compilation des traitements favorise un ciblage plus précis des actions sur les différents textes de SPIP.
-  Enfin, le Couteau Suisse doit également pouvoir assurer une compatibilité sans faille entre tous les outils et avec les différentes versions de SPIP.

Qu’en pensez-vous?
Sommaire

Wiki

YannX a ouvert pour tous les utilisateurs du Couteau Suisse un carnet Wiki où tout le monde peut déposer ses idées et suggestions. N’hésitez pas, c’est par ici : Carnet Plugin_Couteau_Suisse.

Footnotes

[1N’hésitez pas à nous faire part du résultat de vos tests

[2Téléchargement du Plugin, liens complémentaires : Récupérer le zip sur l’espace de téléchargement, ou le(s) miroir(s), de spip-zone, cf. rubrique Produits finis

-  Le logo de cet article a été créé par Kavel : http://www.armatronic.com/

-  La version du Couteau Suisse pour SPIP v1.91 du plugin a été conservée ici : https://files.spip.net/grenier/cout...

Discussion

546 discussions

  • Bonjour,

    Je viens d’installer SPIP 4 sur un serveur PHP 8. Pour informations, j’ai noté les soucis suivants qui disparaissent en php 7.4 :

    Les plugins suivants sont installés : bonux, accès restreint, champs extras interface et champs extras API, Verifer, YAML, saisies

    -  Les messages apparaissent partout dans le backoffice :

    Warning: Undefined variable $ip in /home/clients/b292ffee5cda953d5b1dfadcf99de260/dev/flow/couteau-suisse/mes_spip_options.php on line 18

    Warning: Constant _ECRAN_SECURITE_LOAD already defined in /home/clients/b292ffee5cda953d5b1dfadcf99de260/dev/flow/couteau-suisse/mes_spip_options.php on line 21

    Warning: Constant _SPIP_SCRIPT already defined in /home/clients/b292ffee5cda953d5b1dfadcf99de260/dev/flow/couteau-suisse/mes_spip_options.php on line 66

    Reply to this message

  • 1

    Bonjour,
    Avec le couteau suisse pleins de choses m’intéressent plus particulièrement dans “Balises, filtres, critères”
    Masquer du contenu sauf que ça ne fonctionne pas et il n’y a même pas erreurs du moins j’ai cherché et rien trouvé, vous pouvez voler à mon secours?
    Merci

    • J’ai un article qui apparaît sur ma page d’accueil et que je voudrais exclure je ne sais quoi dire d’autres

    Reply to this message

  • 1

    Bonjour,

    Le site pentest-tools.com indique qu’il y a un problème de Vulnérabilité XSS sur nos sites. Après, investigation il semble que cela vienne de ce code dans tmp/couteau-suisse/mes_options.php

            function action_cs_spam(){
                    include_spip('inc/minipres');
                    echo minipres(
                            _T('couteau:lutte_spam'),
                            '<pre>'.$_POST[$_GET['var']].'</pre><div>'._T('couteau:explique_spam').'</div>'
                    );
                    exit;
            }

    Lorsque l’on rentre le texte session_nom=</a><svg/onload=alert(domain)> dans un formulaire, on a bien une injection de script.

    J’ai remis à jour le plugin, mais le code reste le même. Je propose de faire un
    texte_backend($_POST[$_GET['var']]) entre les balises <pre></pre>.

    • Un grand merci pour ce retour, la correction est apportée sur la dernière version du plugin. Le code est disponible sur Git et peut être amélioré à tout instant, n’hésitez pas.

    Reply to this message

  • 5

    Bonjour.
    Nouveau sur le forum, j’ai publié le message ci-dessous dans le forum consacré à “Administration, gestion, configuration” et n’arrive pas à le supprimer, car il me semble plus approprié ici. Merci de m’excuser pour ce manquement à la Nétiquette.
    Ma question est relative à un dysfonctionnement du sommaire automatique sur la plupart des navigateurs récents:

    J’utilise le plugin Couteau suisse sur mes sites et, notamment, la lame “sommaire automatique”. J’ai constaté, par hasard, que le sommaire ne répondait plus. Il y a bien les hyperliens spécifiques au sommaire qui apparaissent mais qui ne conduisent pas le curseur à l’endroit voulu.
    J’ai fait le job habituel : vider la cache SPIP, celle de mon navigateur, désactivé la plupart des extensions, sans résultat.
    Le problème a dû apparaitre ces derniers mois (vu la pandémie j’ai été moins actif sur mon site). Toutefois le comportement est normal avec Firefox et sur d’anciennes versions de Safari (je suis sur Mac), tant sur un ancien Ipad qu’un Macbook air.

    En revanche, sur Safari, Chrome (Mac, PC, Android), Brave... la fonctionnalité est impossible.
    Deux exemples ici, parmi d’autres :
    http://www.cinecure.be/A-Street-Cat-Named-Bob
    http://www.cinecure.be/Ete-85
    Merci de votre aide.

    • Bonjour !
      Merci pour le retour.
      Il semble que les ancres douces devraient être mises à jour. Et si tu désactives cet outil, retrouves-tu le bon fonctionnement du sommaire ?
      Pat

    • Bonjour Pat.
      De fait, si je désactive les ancres douces, je retrouve le fonctionnement du sommaire (bon, c’est moins beau comme affichage... mais néanmoins efficace). Merci.
      Charles

    • Dans la version 1.12.01 du Couteau Suisse, j’ai mis à jour les plugin jQuery,

      Tu me diras si ça fonctionne de nouveau correctement avec le sommaire ?

    • Déjà merci. j’attends que la gestion des plugins (que j’utilise pour laisser le système s’occuper des MAJ) détecte la mise à jour du CS pour mettre à jour et revient vers toi pour le suivi.
      Charles

    • Hello. Voilà. Mise à jour effectuée et le comportement normal est rétabli (lame sommaire automatique + ancres douces).
      Merci beaucoup.

    Reply to this message

  • 1

    Bonjour,

    Installation de la dernière version du CS (1.11.10) sur SPIP 4.0 beta.
    Autres plugins, forcés en mode compatibilité, dans leurs versions à jour : Accès restreint, Vidéos, et En travaux.
    PHP version 7.4.5
    ==> Le site plante alors en erreur 500.
    J’avoue ne pas trop savoir où regarder pour donner d’autres infos.

    • Merci pour ce retour !
      Tout est OK en principe avec la version 1.12.00 du plugin, dont la compatibilité avec SPIP 4.0 a été renforcée.
      SPIP 4.0-beta introduit pas mal de changements, merci aux webmasters qui anticipent la migration de leur sites avec le Couteau Suisse !
      Pat

    Reply to this message

  • 3
    Damien

    Bonsoir,

    Utilisateur de cet excellent plugin, j’essaie de tout maintenir à jour.

    Chez Infomaniak, en php 7.4, SPIP 3.2.11 et couteau suisse 1.11.2, j’ai le warning suivant en haut de toutes les pages du backoffice et en haut de la colonne de gauche de toutes les pages “Configuration” MAIS paradoxalement aucun Warning sur la page de configuration du couteau suisse :

    Warning: Creating default object from empty value in /home/clients/9af28b347c4f66ab1d90e70e2d5e9da5/www/plugins/auto/couteau_suisse/cout_pipelines.php(40) : eval()’d code on line 4

    Et de mon côté, quand je clique sur Mise à jour automatique j’ai le message : erreur : impossible de charger https://git.spip.net/spip-contrib-extensions/couteau_suisse/archive/master.zip

    • Damien

      Complément d’informations :
      Site 1 : Infomaniak (mutualisé)/PHP 7.4.16/Spip 3.2.11/CS 1.11.02 => Messages Warning cités dans mon premier message
      Site 2 : OVH (serveur géré)/PHP 7.4.13/Spip 3.2.11/CS 1.11.02 => Aucun message
      Bonne journée

    • Damien

      Patch temporaire :
      Ligne 39 j’ai mis : $cs_metas_pipelines = array();
      Plus de warnings
      Bonne journée

    • Attention ce patch est trop radical, plus aucun pipeline ne serait exécuté dans ce cas !
      Voici le code que je publie de suite sur Git :

      function eval_metas_pipelines(&$flux, $pipe) {
          global $cs_metas_pipelines;
          if(!isset($cs_metas_pipelines))
              // cas ou un pipeline est appele avant couteau_suisse_options.php
              $cs_metas_pipelines = array();
          elseif(isset($cs_metas_pipelines[$pipe]))
              eval($cs_metas_pipelines[$pipe]);
          return $flux;
      }

      Merci beaucoup pour le retour.

    Reply to this message

  • 6

    Juste pour avertir que le lien de téléchargement du plugin n’est plus correct...

    Reply to this message

  • 3

    bonjour,
    ovh php 7.4 je viens de passer de SPIP 3.2.9 à 3.2.11
    le couteau suisse est en version 1.11.0

    la longue liste de “deprecated” a disparu mais ceci subsiste :

    Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/monbudule/zzz/plugins/auto/couteau_suisse/v1.11.0/outils/maj_auto_action_rapide.php on line 162

    cependant, je viens de faire une mise à jour automatique qui ne semble pas avoir posé de problème.

    merci pour ce plugin bien utile ...

    • Bonjour,
      Chez OVH (flambant neuf !) en PHP 7.3 (version stable)
      SPIP 3.2.11
      Le Couteau Suisse 1.10.22
      Tout est redevenu impeccable.
      @+
      Patrice

    • Philippe Jeanne

      Effectivement, tout va bien avec Le Couteau Suisse 1.11.0 , bien utile je le confirme, avec Spip 3.2.11 et Php 7.3.
      Avec Php 7.4, deux warnings dans maj_auto_action_rapide.php et ecran_securité.php. Pour voir, j’ai remplacé les accolades incriminées par des crochets, et tout semble bien se passer.
      Mais Pat va sans doute apporter une meilleure solution !

    • Philippe Jeanne c’est parfait, merci !
      Ce warning est corrigé dans la version 1.11.01 du plugin. C’est également la fin des create_function() qui restaient dans le Glossaire.
      Merci à tous pour vos retours.
      Pat

    Reply to this message

  • 1
    Thomas

    Bonjour,

    J’ai basculé un site Spip3.2.9 en Spip3.3-dev et j’ai un problème sur la page de config du Couteau-Suisse, dont je joins une capture (page vide avec un seul cadre d’erreurs).

    > Spip3.3-dev, plugins à jours, sur serveur local wamp3.2.5 avec Php 7.4..
    > la suppression des données tmp ou même le reset du Couteau-Suisse (ecrire/?exec=admin_couteau_suisse&cmd=resetall) ne changent rien.

    Alors je ne vois pas vraiment de retours sur Spip 3.3-dev avec le Couteau-Suisse et peut-être que mon problème actuel ne vous étonnera pas.. mais si vous aviez une piste..
    Merci,
    Thomas

    • Merci Thomas pour le retour !
      La compatibilité avec SPIP 3.3dev a été renforcée avec la version v1.11.00 du plugin et cette erreur a été corrigée.
      N’hésitez pas à remonter d’autres dysfonctionnements qui pourraient subsister.
      Très bonne journée

    Reply to this message

  • 4

    Bonjour,
    tout d’abord merci pour ce plugin.
    J’apprécie particulièrement le glossaire.
    Il semblerait qu’il y ait une incompatibilité dans mon site :
    spip 329
    theme phantom
    gis

    Les cartes Gis n’apparaissent plus à l’activation du CS.
    Voir page

    En outre, messages d’erreurs dans la page de config du couteau suisse :
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/ecrire/public/compiler.php on line 1197
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/plugins-dist/textwheel/engine/textwheel.php on line 199
    Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/amidesk/www/extra/ecrire/iterateur/data.php on line 130
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/ecrire/public/iterateur.php on line 303
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/ecrire/public/iterateur.php on line 303
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/ecrire/iterateur/data.php on line 497
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/ecrire/public/iterateur.php on line 303
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/plugins-dist/textwheel/engine/textwheel.php on line 199
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/plugins-dist/textwheel/engine/textwheel.php on line 199
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/plugins-dist/textwheel/engine/textwheel.php on line 199
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/plugins-dist/textwheel/engine/textwheel.php on line 199
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/plugins-dist/textwheel/engine/textwheel.php on line 199
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/plugins-dist/textwheel/engine/textwheel.php on line 199
    Deprecated: Function create_function() is deprecated in /home/amidesk/www/extra/plugins-dist/textwheel/engine/textwheel.php on line 199

    Une piste ?

    Merci

    Cordialement

    • Bonjour,

      La plupart des erreurs “deprecated” proviennent de SPIP lui-même, la version 3.2 n’étant pas compatible avec les versions récentes de PHP.

      Conseil : soit passer à la version 3.3 (en cours de développement), soit rétrograder la version de PHP chez ton hébergeur (v7.1 par exemple ?).

      Le Couteau Suisse est presque compatible, il reste quelques dernières lignes qui seront bien corrigées.

      A propos des cartes, la console ne montre aucune erreur javascript, je ne vois pas d’où pourrait venir l’incompatibilité. Quelques essais supplémentaires s’imposent :
      -  le squelette choisi est-il bien hors de cause ?
      -  le CS complètement désactivé, ça marcherait donc ?
      -  le CS activé, mais sans aucune lame, ça marcherait toujours ?

      Le glossaire est activé sous quelle forme, CSS ou JS ?

      Pat

    • Philippe JEANNE

      Effectivement, la version 3.2.11 de Spip parue le 26 mars 2021 corrige le problème posé par les quelques “create_function” qui restaient dans le code de Spip.
      Il n’y a plus de warnigs avec Php 7.2. Je n’ai pas essayé avec Php 7.3.

    • Damien

      Bonjour,
      Juste pour préciser : je viens de mettre à jour un site complet avec le dernier SPIP et le couteau suisse entre autres.
      En PHP 7.4, j’ai ces messages : “Array and string offset access syntax with curly braces is deprecated” sur écran de sécurité et certains menus latéraux (j’ai pas tout regardé)
      PHP 7.3 c’est bon pour le moment.

    • Merci pour le retour, aucun test n’a encore été réalisé en 7.4.
      En 7.3, il ne reste que le glossaire à mettre à jour je crois bien.
      N’hésite pas à m’envoyer en privé les lignes de code problématiques ;-)
      Pat

    Reply to this message

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom