var Phenix = function () {

Troll du Web depuis 1996

Ajouter un nouveau type d’auteur à #SPIP

Dans le fichier config/mes_options.php :

  1. <?php
  2. $GLOBALS['liste_des_statuts']['inscrit'] = 'inscrit';
  3.  
  4. // Placer la corbeille à la fin du tableau
  5. $backup_corbeille = $GLOBALS['liste_des_statuts']['texte_statut_poubelle'];
  6. unset($GLOBALS['liste_des_statuts']['texte_statut_poubelle']);
  7. $GLOBALS['liste_des_statuts']['texte_statut_poubelle'] = $backup_corbeille;

La clé du tableau $GLOBALS[’liste_des_statuts’] sert également de chaîne de langue pour traduire le statut.
La valeur sera quand à elle enregistrée dans la base de donnée comme statut d’auteur.

Il y a aussi la constante AUTEURS_MIN_REDAC qui détermine si le statut fait partie des des visiteurs ou non.

  1. <?php
  2. define('AUTEURS_MIN_REDAC', "0minirezo,1comite,5poubelle");

Un header image en fullscreen

Je déteste cette mode : une grande image qui prend tout l’écran. Si vous avez de la chance, vous avez un titre et un menu. Basta.

Mais ce n’est pas le propos. Il se trouve qu’il y a des gens qui souhaite avoir cela, et comme ils payent pour...

Voici une technique assez simple. Il faut garder une chose à l’esprit quand on fait cela : tous les containers parent doivent avoir height : 100% ;.
Rien de folichons ici, mais comme j’oublie régulièrement comment faire...

  1. html, body, #page {
  2.   height: 100%;
  3. }
  4.  
  5. .full-image {
  6.   position: relative;
  7.   width: 100%;
  8.   height: 100%;
  9.   background-image: url([...]);
  10.   background-size: cover;
  11.   background-position: center;
  12. }

Et le tour est joué !


Pourquoi le WYSIWYG est si compliqué ?

Une petite vidéo qui a été envoyée sur la liste de SPIP. Un bon résumé de pourquoi tout le monde peste contre les éditeurs WYSIWYG. Que ce soit les développeurs ou les éditeurs de contenu.

Du coup, je la garde ici car j’aurai envie de la revoir ou de la partagée.

La vidéo explique en détail le bordel que c’est à gérer, et surtout pourquoi cela ne fonctionnera sans doute jamais correctement :

Merci à Ybbet pour la découverte :)


Supprimer complètement un fichier d’un dépôt git

Cela arrive de temps en temps, sur une application qu’on connait mal ou qu’on a pas conçue : on fait un dépôt git, le git ignore, et on oublie un fichier de configuration avec des password dedans.

Et bien sur, manque de pot, vous avez déjà tout envoyer dans un dépôt public Github. Vraiment, c’est pas votre journée...

Bref, il existe une petite astuce pour supprimer un fichier de tout les commits du dépôt. C’est un peu lent, car il va réécrire chaque commit que vous avez fait sur le projet.

  1. git filter-branch --tree-filter 'rm filename' HEAD

Après il faut utiliser git push -f pour réécrire le dépôt en ligne. Généralement, on évite cette opération, mais dans le cas d’un fichier avec des codes d’accès, c’est un moindre mal.
Et bien entendu, cela ne vous dispense pas de changer le password en question !

Voir en ligne : Permanently remove files and folders from Git repo

Exectuer du code quand un auteur est ajouté à #SPIP

Lorsqu’on ajoute un auteur, on a parfois envie d’automatiser certaine action : ajout automatique dans une zone d’accès restreint, ajout de mots-clés, ou tout simplement envoyer un mail.

Du coup, voici un pipeline qui fera le travail ! Il pourrait y avoir un effet indésirable cependant : lorsqu’un auteur est ressuscité de la corbeille, le pipeline se déclenche à nouveau.
Si c’est un problème, le pipeline post_insertion peut aussi être utilisé. Il contient cependant beaucoup moins d’information que post_edition.

  1. <?php
  2. function prefix_post_edition($flux) {
  3.         if ($flux['args']['table'] == table_objet_sql('auteur')
  4.                 and $flux['args']['action'] == 'instituer'
  5.                 and $flux['args']['statut_ancien'] == '5poubelle'
  6.         ) {
  7.                 $id_auteur = $flux['args']['id_objet'];
  8.                 $statut = $flux['data']['statut'];
  9.                 // Coder ici !
  10.         }
  11.  
  12.         return $flux;
  13. }