Plugin PluXML : C'est en off, mais stylé... [Edit]

Un autre petit plugin vite-fait-sur-le-gaz comme aurait dit San Antonio: cette fois-ci, il s'agit de styler les commentaires et articles offline pour les repérer plus simplement.

icon.png offlineClass

Le plugin se contente d'ajouter une classe de votre choix (à configurer) dans la ligne de tout commentaire ou article hors ligne.

Comme pour le précédent, il injecte un JS qui ajoute la classe au tr qui contient une liste offline.

Une fois activé, configurez le plugin en lui donnant la classe à utiliser ( par exemple «offline» ) puis ajoutez votre css à votre thème.

.offline{ 
    background:rgba(255,0,0,0.2);
    color:rgb(50,0,0);
    font-style: italic;
}
.offline td{
    padding:1em 0;
}

C'est tout. Mais visuellement, c'est autre chose !

[Edit du 02-09]

J'ai ajouté la possibilité de déplacer tout item offline en début de liste quelle que soit sa date... Utile si vous avez tendance à accumuler le boulot en retard au point que certains disparaissent dans la pagination...

Pour récupérer le zip ➜ https://repo.warriordudimanche.net/ZIPFILES/offlineClass.zip

(...)

Plugin PluXML : Empêcher pluXML de virer les backslashes des articles

Ze problaim

Si tu publies des bouts de code sur pluXML, tu as sans doute remarqué que ce dernier est pour le moins psychorigide avec les antislashes: il les vire sans ménagement... pourtant, on aimerait bien qu'il conserve les regex en l'état dans un code par exemple.

Je suis pas stupide, je comprends bien qu'il s'agit là d'un souci de sécurité, mais quand même, ça fait ch***.

Le souci,c'est que pluXML filtre les antislashes dans les $_POST très très tôt dans le code, bien avant tout hook de plugin: il le fait dans le prepend.php de l'admin, ligne 43.

Ben mon con, comment tu vas faire si tu peux pas intervenir en php via un hook pour modifier le $_POST?

Ze solouchonne

Ben tu le modifies en JS dans la page article lors du submit du formulaire

En gros, on remplace les «\» par des «\» dans le chapo et le avant de submit le formulaire. C'est une méthode dont j'ai trouvé l'idée ici https://forum.pluxml.org/discussion/6960/plugin-plx-cssbackslash-pour-ledition-des-fichiers-css

Donc, j'injecte un petit script JS via le hook AdminArticleFoot et il se charge d'intervenir lorsque le navigateur a terminé de créer l'objet formData: c'est d'ailleurs cet évènement qu'on va utiliser dans addEventListener au lieu du submit habituel.

Code du script injecté

(function (){
    let chapo = document.getElementById("id_chapo");
    var content = document.getElementById("id_content");
    var form = document.getElementById("form_article");
    function saveSlashes(str){
        return str.replace(/[\\]/g, '\\$&');
    }
    form.addEventListener('formdata',function(e){
        let formData = e.formData;
        formData.set('chapo', saveSlashes(formData.get('chapo')));
        formData.set('content', saveSlashes(formData.get('content')));
    });

})();

Ze saiquiouriti ?

Niveau sécurité, le plugin n'intervient que sur la page article.php et uniquement sur les champs chapo et content du formulaire. Il ne bloque pas le plxUtils::unSlash($_POST) du prepend.php. Je pense donc qu'il n'ouvre pas de faille majeure.

Ze conclugionne

Ainsi, les antislashes de ce script tiré de l'article sur le bug de mpdération passent enfin sans problème :

Exemple de code problématique

    const PATTERNS = array(
        'arts'          => '#^\D?(\d{4,})\.(?:\w+|\d{3})(?:,\w+|,\d{3})*\.\d{3}\.\d{12}\..*\.xml$#',
        'statiques'     => '#^(\d{3,})\..*\.php$#',
        'commentaires'  => '#^_?\d{4,}\.(?:\d{10,})(?:-\d+)?\.xml$#'
    );

Le zip est à télécharger depuis mon repo : https://repo.warriordudimanche.net/ZIPFILES/ArticleBackslashesKeeper.zip

(...)

Cadeau du lundi: pas un, pas deux mais TROIS plugins Pluxml... (et oui !)

Bon, il ne s'agit pas de trois   plugins que j'aurais fait en   une fois, mais de trois plugins   codés à des moments différents   et que j'avais oublié de partager   jusque-là...

ok

🥇 Plugin N°1 : uniquePagePreview

Si toi aussi t'en as marre que le bouton Aperçu de la page article t'ouvre à chaque fois un nouvel onglet aboutissant rapidement à une accumulation visuellement insupportable du nombre d'échecs qu'il te faut avant de parvenir à un billet un tant soit peu abouti ? Alors ce ... «plugin» est pour toi: il se contente de changer le «_blank» de l'attribut onclick du bouton en «article_preview»... et ça, tu vois, ça change tout...

Désormais, la visualisation de l'article se fera toujours dans le même onglet (ouvert lors de la première visualisation)

⚡ Téléchargement direct du ZIP: https://repo.warriordudimanche.net/ZIPFILES/uniquePagePreview.zip

🥈 plugin N°2 : resizeArticleTextarea

Un truc qui me chiffonnait dans la rédaction d'articles un peu longs, c'était:

  1. de ne jamais voir l'article en entier pendant la rédaction
  2. de passer mon temps à défiler DANS le textarea en plus de défiler DANS la page...
Ok, ça fait deux trucs...

Grâce à ce plugin, on ne passe plus son temps à défiler QUE dans la page

En effet, il redimensionne les textareas de la page article en fonction de leur contenu. La zone de texte grandit avec le volume de texte tapé dedans.

⚡ Téléchargement direct du ZIP: https://repo.warriordudimanche.net/ZIPFILES/resizeArticleTextarea.zip

🥉 plugin N°3 : adminPanel

Un plugin dérivé d'un de mes anciens qui s'avérait obsolète avec la nouvelle maquette. Il permet d'afficher un menu visible uniquement quand l'admin est connecté. Ce menu regroupe plusieurs icônes:

Capture du 2022-11-14 14-35-06.png

  • un lien vers l'espace admin
  • un lien vers un tag particulier: je m'en sers pour accéder aux articles publiés pour lecture ultérieure sous le tag «riditleteur»
  • un lien vers la page commentaires avec un décompte des commentaires non lus
  • un bouton de déconnexion

Il affiche de plus un lien sur chaque article pour éditer directement ce dernier (pratique pour corriger ou mettre à jour un article)

Ces deux fonctions sont accessibles via deux hooks, «editArticleIcon» et «adminPanel», dont il faut placer l'appel dans les pages header.php et articles.php du thème

Une page de config permet de redéfinir les icônes et texte des boutons ainsi que le tag du raccourci.

Capture du 2022-11-14 14-43-09.png

⚡ Téléchargement direct du ZIP: https://repo.warriordudimanche.net/ZIPFILES/AdminPanel.zip

Si ça peut vous servir, c'est cadeau !

PluXml 5.8.9 : bug quand la modération des commentaires est activée

Merci à bazooka07 sur le forum de Pluxml qui apporte une solution à ce bug qui empêche la gestion et l'apparition des commentaires quand la modération est activée:

dans core/lib/class.plx.glob.php, il faut modifier la clé «commentaires» du tableau plxGlob::PATTERNS ( ligne 14) comme suit :

    const PATTERNS = array(
        'arts'          => '#^\D?(\d{4,})\.(?:\w+|\d{3})(?:,\w+|,\d{3})*\.\d{3}\.\d{12}\..*\.xml$#',
        'statiques'     => '#^(\d{3,})\..*\.php$#',
        'commentaires'  => '#^_?\d{4,}\.(?:\d{10,})(?:-\d+)?\.xml$#'
    );

MAJ Plugin PluXML: Markdown_parser

📢 Petite mise à jour du plugin Markdown_parser qui permet d'ajouter la gestion du markdown dans PluXML.

☑ J'ai étendu le markdown aux commentaires

☑ j'ai ajouté la possibilité d'accéder à des caractères unicodes directement.

☑ Vous pouvez choisir lesquels en passant par la page de config et en collant les caractères à la suite. Le plugin générera un bouton par caractère.

config.png

unicode.png

📎 Pour télécharger : https://repo.warriordudimanche.net/ZIPFILES/Markdown_parser.zip

Plugin PluXML: Plinstagram...

Le souci avec les CMS en général - et pluXML en particulier - c'est l'usage sur mobile: poster un article, même rapide ou schématique, reste un parcours du combattant dès qu'on doit se passer du combo clavier-souris-grand écran.

Le temps que tu passes d'un champ   à l'autre et que tu les remplisses   malgré un clavier qui te bouffe l'écran   ou qui a des touches trop petites,   le token a expiré...

Par conséquent, adieu le post vite fait façon microblogging, goodbye la petite photo partagée fissa sur insta, arrivederci le meme envoyé aux copains vite fait sur le gaz...

Mais ça, c'était   AVANT...

Tu proposes quoi, cousin ?

Je me suis penché sur la question avec le cahier des charges suivant:

  • facile à utiliser et clair sur mobile
  • possibilité de poster une ou plusieurs photos
  • possibilité de poster une photo capturée via la caméra (façon insta)
  • redimensionnement automatique des photos côté client: parce que poster des tofs de 10Mo en 8K avec des réseaux 3G, je vois pas l'intérêt
  • pourquoi pas des filtres comme sur «insta»
OK,   on y va

Le plug-in

Une fois activé le plugin ajoute:

une catégorie Plinstagram

Capture du 2022-02-22 14-25-58.png

un lien sur la page de profil, un peu comme le bookmarklet de Weblinks. Ce lien est celui de la page servant à poster dans la catégorie Plinstagram.

Capture du 2022-02-22 14-18-12 copie.jpg

une page de configuration du plugin (très sommaire, je l'admets).

Capture du 2022-02-22 14-18-41 copie.jpg

On peut y configurer notamment la taille maximale des photos (par défaut 1200px)

Le lien pointe vers une page générée par le plugin

Capture du 2022-02-22 14-19-26 copie.jpg

On y retrouve un placeholder d'image sur lequel cliquer pour sélectionner des images à envoyer ou prendre une photo. La première photo devient automatiquement la photo de titre et les autres figureront à la fin du post sous forme de galerie minimaliste.

A noter :

  • si vous voulez placer en titre une autre des images sélectionnées, il suffit de cliquer dessus.
  • les photos sélectionnées sont automatiquement redimensionnées pour ne pas dépasser la limite fixée en config.
  • lors de la capture d'image via l'appareil photo sur android, l'orientation de la photo est parfois... fantaisiste.
  • vous pouvez choisir de créer le post mais sans le publier en cliquant sur la disquette
  • si vous allez sur la page de post sans être loggé, Plinstagram redirige vers la page de login puis revient sur la page de post automatiquement après identification.
  • quand vous êtes en train de taper le titre du post, un appui sur la touche entrée donne le focus au textarea dessous (une manip de moins sous android)
  • petit truc en plus, comme le redimensionnement passe par canvas, les données exif sont virées des photos

Capture du 2022-02-22 14-44-54.jpg

Vous pouvez sélectionner un filtre à appliquer sur [toutes] les photos

Capture du 2022-02-22 14-45-53.jpg

Capture du 2022-02-22 14-46-24.jpg

Oui  je sais  ce sont les mêmes filtres que  j avais fait pour  Quicomic  .png

[*] qu'une seule personne a pu tester ce qui fait de cette BD une private joke.

Au final ça donne ça

Avec ma maquette, hein... je vais pas tout faire non plus !

Capture du 2022-02-22 14-54-21.jpg

Conclusion

Il reste sans doute plein de trucs à améliorer (gestion de la rotation des photos, maquette, test sur tous les supports etc) et des bugs à débusquer (j'en ai trouvé un pas méchant en écrivant ce billet) mais, selon le dicton favori des programmeurs:

Chez moi ça marche impec'

Le lien

Le bidule est dispo sur mon repositorix : https://repo.warriordudimanche.net avec le lien direct vers le zip : https://repo.warriordudimanche.net/ZIPFILES/Plinstagram.zip

PluXml plugin Starter

Je viens de procéder à une mise à jour de pluXml plugin starter:

  1. ajout des hooks des dernières versions de pluXML
  2. ajout d'une fonction permettant de filter les hooks afin de les retrouver plus facilement
  3. ajout d'icônes unicode sur les boutons de sélection des hooks (plus faciles à identifier
  4. dans l'optique d'en finir avec github, j'ai changé le lien de github en lien de téléchargement direct de la version courante, comme j'avais fait avec googol.

Plugin pluxml: reposter vers mastodon directement.

icone
Si ça intéresse quelqu'un, voici un plugin dont le but est de reposter automatiquement les billets de pluxml vers un compte mastodon.

pluxml2mastodon utilise le chapô ou le contenu (si le chapô est vide) comme corps de message en le retaillant si nécessaire.

Dans les options, il faudra compléter l'url de votre instance et le jeton de sécurité; vous pouvez également ajouter un message d'en-tête et de pied, si vous le souhaitez.

(...)

C'est con, j'ai ri 4

Pour celles et ceux qui en ont marre de leur semaine, de la météo, de la politique, des affaires, des gens qui tuent leurs conjoints alors qu'ils faisaient genre «chuis trop inquiet sur la vie de ma reum», du code du travail, des inondations, qu'on leur parle de la Seine ou des nichons de la famille Kardachiants, voici un Dump du Dredi: attention, c'est con (mais j'ai ri )

(...)

[plugin] MyStaticStartPage : rediriger vers une page d'accueil hors de PluXML

Il y a quelques temps Cyrille Borne s'est fait une page d'accueil qui lui permettait de rediriger les visiteurs vers les différentes parties de son site, pluXML n'en constituant que la section Blog. Si je me souviens bien, il a un peu galéré à cause de la redirection de son blog vers https://cyrille-borne.com/pluxml qui avait cassé les liens de ses lecteurs vers son flux RSS.

Je me suis alors dit, ben pourquoi pas moi ?! Seulement, je me voyais pas galérer de la même façon. Donc, j'ai fait un plugin... Un tout chti: là on est sur du (je déteste cette expression pour VRP) made in 5 minutes... c'est simple, j'ai passé plus longtemps sur la rédaction de ce billet que sur la réalisation du plugin...

Donc, en gros, vous précisez dans la config l'adresse de la page servant d'accueil extérieur et c'est tout: le site ne redirige vers cette page que si on vient de l'extérieur et qu'on cherche à accéder à la page root du site.

Je n'ai pas constaté que ça ait cassé quoi que ce soit chez moi, mais bon, la journée n'est pas terminée

Téléchargez le zip

ma page d'accueil

[Plugin] Tag Editor: mettre de l'ordre dans les tags de pluXML

Je viens de m'apercevoir que j'ai omis de partager un plugin que j'avais fait pour mettre de l'ordre dans les tags de mes articles...

C'est tout con mais ça permet de faire le taf simplement.

capture Une fois le plugin activé, un lien apparaît dans le menu admin. Sur la page dédiée, les tags sont listés en deux colonnes: celle de droite permet de faire les modifications. Pour effacer un tag, effacez-le de la colonne de droite et sauvegardez...

Allez, amusez-vous et allez dans le pet du saigneur.

Tags_editor.zip

Galart: plus simple, comme galerie, spapossib' (plugin pluXML) [EDIT]

Comme ma moitié galérait avec son site de portfolio/galerie-usine à gaz, je lui ai proposé de monter un petit pluXML avec un plugin que je lui goupillerais entre deux tâches parentales, en mode charrette (mon favori)

Donc, prenant mon courage à deux mains et mon clavier, j'ai bricolé ça dans la journée.

Il s'agit d'un plugin volontairement minimaliste: il permet simplement de lier un dossier contenant des images (contenu dans le dossier data/images) à un article.

Lors de l'affichage dudit article, la galerie sera générée et ajoutée en fin d'article automatiquement et sans aucune autre intervention.

Une page de config, minimale elle aussi, permet de fixer la taille des miniatures (à configurer avant utilisation)

EDIT du 23/08

J'ai appliqué les modifs proposées par JerryWham et j'ai ajouté un flux rss pour la galerie: chaque article contenant une galerie propose le lien rss vers le contenu du dossier.

Télécharger Galart.

C'est très perfectible, mais bon, pour le moment, je peux pas mieux

Exemple de galerie:

RSS

Pouetter sur pluXML: un plugin.

Une époque, j'utilisais mon plugin RssFeedContent pour afficher le dernier toot... Mais ça, c'était avant le drame, bien entendu...

J'ai fait, en mode plein le joufflu, un petit plugin pour afficher un ou plusieurs pouets:

  • Téléchargez le plugin et dézippez-le,
  • activez-le et configurez-le (l'url RSS du profil s'obtient en rajoutant «.atom» à l'url du profil; ex: framapiaf.org/@bronco.atom )
  • ajoutez le hook suivant où bon vous semble dans le thème:
<?php eval($plxShow->callHook("showLastPouet")) ?>

C'est toot, pardon... tout !

(...)

Suivi de commentaires par mail pour pluXML

Il y a quelques temps, j'avais bricolé un plugin pour Cyrille afin de permettre aux usagers du site de s'abonner par mail aux commentaires d'un article. Comme il s'est trouvé quelqu'un d'autre que ça semblait intéresser, je pose là le bouzin

Pour faire simple, le plugin ajoute une case permettant de s'abonner dans le formulaire de commentaire.

Quand un commentaire est posté et validé, l'abonné reçoit un email contenant le commentaire ainsi que des liens vers l'article, le commentaire et le désabonnement.

L'auteur de l'article peut, lui aussi, recevoir un mail pour tout commentaire posté (voir la page de config du plugin)

Comme toujours, c'est fait un peu à l'arrache, entre deux perturbations familiales... (j'ai compté une fois: en deux heures, les boulets m'on interrompu près de 40 fois: j'ai fait la liste sur un des postits, optimiste que j'étais)

N'hésitez pas à proposer des améliorations

Télécharger le zip

(...)

Fil RSS des articles