😍 OMAGAD 🤩 Les répliques cultes de Kaamelott en gif animé prêts à poster sur... dans...
Mais PARTOUT PITIN !
Parfois, un post en entraîne un autre... Ainsi, tu t'es mis à coder un BOT presque par inadvertance - avec les difficultés qu'on connaît - et tu le partages parce qu'il n'y a pas de raison que l'auteur soit le seul à pleurer... pis t'as un copain qui te lit et qui prend le truc au sérieux... en tout cas suffisamment pour te proposer d'en faire un autre !
Objectif de la demande: récupérer les données de l'API RTE tempo ( https://data.rte-france.com/catalog/-/api/consumption/Tempo-Like-Supply-Contract/v1.1 ) pour dire la couleur du jour et celle du lendemain et les poster sur un bot mastodon (mais pouvoir appeler le script comme une API aussi)
Je suis donc parti pour tester ladite API: pour la faire courte, ça m'a permis - après les galères d'usage - de comprendre comment tout ça fonctionnait (en particulier la demande d'un token, l'appel d'une api en php etc)
J'en suis arrivé à un script qui produit un texte donnant la couleur du jour et celle du lendemain.
Le texte c'est bien, mais ce serait mieux si on pouvait récup les données en HTML et intégrer ça avec une Iframe, comme un code d'intégration.
Pis éventuellement en RSS aussi...
Bon, tant que j'y étais, j'ai aussi fait un mode json, au cas où on voudrait ça dans un frontend à soi...
Du coup, mon API s'appelle de plusieurs façons différentes:
Le script produit un fichier pour chaque type de retour et ne le régénère qu'une fois par jour afin d'éviter de se faire «hammerer» comme dit @parigotmanchot
À ce stade, le script fonctionne même si le code est un peu sale et pas bien rangé... il fait ce qu'on lui demande. A part que parfois, il ne donne pas la couleur du lendemain... mais pas en local... juste en distant. Je n'ai pas encore vraiment cherché pourquoi, mais je pense que c'est dû au moment où l'on appelle l'API de RTE.
Tant que j'y étais, j'ai regardé l'API ECOWATT ( https://data.rte-france.com/catalog/-/api/consumption/Ecowatt/v4.0 ) qui donne une couleur et un message décrivant le niveau de stress du réseau.
Du coup, le script appelle les deux API et retourne les données cumulées des deux.
Si ça vous intéresse, le zip est là : RTETempo.zip et il est distribué sous stricte licence faites-en ce que vous voulez. 😅
Les constantes au début permettent de configurer un peu:
TOKEN_BASE64
: pour mettre votre propre jeton si vous voulez vous inscrire sur RTE (qui accepte les emails jetables type yopmail, je dis ça je dis rien 😬)TEMPO_BEFORE_TODAY, TEMPO_BEFORE_TOMORROW, ECOWATT_BEFORE_TODAY, ECOWATT_BEFORE_TOMORROW
: pour définir le texte renvoyé avant la couleur.HTML_STYLE
: pour changer le style du HTML généréTEMPO_HTML_TEMPLATE, ECOWATT_HTML_TEMPLATE
: pour changer le code HTML à utiliser en cas de retour HTMLECOWATT, TEMPO
: deux booléens permettant de débrayer l'un ou l'autre des appels (si vous ne voulez que ECOWATT ou que TEMPO)Ben j'ai fait un autre BOT pour poster les couleurs du réseau une fois par jour... https://piaille.fr/@RTE_color ( @RTE_color@piaille.fr )
Dans le cas où on est bloqué à l'écran de login sous linux (mint ici):
rm .dmrc
rm .ICEauthority
rm .Xauthority
sudo reboot
De côté pour plus tard: en particulier les usages exotiques de CSS.
Tiens... et si je faisais un bot pour poster une citation par jour tirée des passages de romans que j'ai sélectionnés et stockés su ma Kobo ?!
C'est par ces mots que j'ai commencé à galérer... comme quoi, il suffit d'une idée à la con pour se lancer dans tout un merdier pourtant parfaitement facultatif ...
Je veux qu'un BOT mastodon poste une citation de mes bookmarks de liseuse DONC il faut récupérer ces passages bookmarkés.
Donc, il faut trouver le fichier de base de donnée.
Puis il faut extraire les données intéressantes.
Puis utiliser ces données dans un BOT qui sera appelé une fois par jour.
En fouillant un peu, on trouve un fichier sqlite (JOIE) dont le chemin est .kobo/KoboReader.sqlite
Un passage par DBBrowser pour SQlite permet de jeter un oeil sur la structure des données.
Idéalement, il me faut deux informations: la citation et le titre du bouquin dont elle est extraite.
En fait les titres se trouvent dans la table content
et les annotations dans la table Bookmark
Je pourrais utiliser Calibre et chercher un moyen de faire un export complet de ces deux données uniquement. Pas sûr que ça marche. Ou alors faire un export via le DBexplorer pis me retaper le truc à chaque export...
En vieux programmeur qui bricole, je vois là un prétexte pour coder une petite appli en python qui se chargera de l'extraction.
Mon problème, c'est que je me sers des notes de la Kobo pour retenir des passages intéressants mais aussi, parfois, pour noter vite fait un mot de vocabulaire espagnol que je ne connaissais pas et dont je veux conserver la traduction. Mais ces mots de vocabulaire ne sont pas des citations: il faudrait donc les virer à la main à chaque fois. C'est chiant.
L'appli devra donc permettre de filtrer les citations avant de générer un fichier exploitable par le bot.
J'ai fait l'appli en question: elle permet donc de récupérer les données, filtrer en fonction de la longueur de la citation ou du fait qu'elle est ou pas accompagnée d'une note personnelle...
On peut formater les données selon plusieurs modèles (HTML, Json, Markdown, TXT brut, BOT) voire même créer son propre format (genre %title:«%quote» )
Rien d'extraordinaire ici: je fais un script qui parse le fichier obtenu à l'étape précédente, tire une citation au hasard et la poste sur le compte Masto du Bot.
Le point le plus intéressant du bouzin est plutôt la fonction servant à poster sur un compte mastodon:
define('TOKEN','letokendesécuritéquetuchopesdansmastodon');
define('MASTODON_URL','https://botsin.space/'); // Ici, il faut coller l'url de votre serveur mastodon
define('HEADER',"Citation du jour:");
function post2Mastodon($data=null){
if (!$data){return false;}
$headers = [
'Authorization: Bearer '. TOKEN
];
$data=[
'status'=> HEADER.$data,
'language'=>"fr",
'visibility' => 'public'
];
$ch_status = curl_init();
curl_setopt($ch_status, CURLOPT_URL, MASTODON_URL.'/api/v1/statuses');
curl_setopt($ch_status, CURLOPT_POST, 1);
curl_setopt($ch_status, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch_status, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch_status, CURLOPT_HTTPHEADER, $headers);
$output_status = json_decode(curl_exec($ch_status));
curl_close ($ch_status);
return $output_status;
}
Aller sur le compte mastodon en question, puis dans les préférences.
Cliquer sur «developpement» puis «Nouvelle application».
Remplir le formulaire simplissime puis valider. Cliquez ensuite sur le nom de votre application dans la nouvelle page et copiez votre jeton d’accès. C'est celui-ci qu'il faut coller dans le script PHP (dans la constante TOKEN)
Direction le panneau de config de votre hébergement, rubrique cronjob. Sur Cpanel c'est là :
Définissez la fréquence (pour moi une fois par jour) et l'heure (8:00).
Ensuite, il faut définir la commande qui va appeler le script du BOT: wget fera l'affaire...
wget -qO /dev/null http://xxxxxxxxxxx.xx/index.php
L'option -q pour quiet et -O /dev/null pour éviter d'avoir un fichier de sortie qui se crée à la racine.
Une fois tout ça terminé, j'ai bien un bot qui poste une citation à 8:00 tous les jours.
Bon, elles ne seront pas toujours bien formatées vu que la sélection de texte sur liseuse c'est un peu touchy... mais c'était plus pour apprendre à le faire qu'autre chose...
Le cadeau du jour: un script qui permet d'automatiser l'optimisation d'une image pour le ouaibe sans passer par une appli quelconque.
Tout le monde est d'accord pour affirmer qu'il est indispensable de minimiser le poids des pages web et que dans cette optique, le premier geste - après avoir viré les bibliothèques inutiles bien entendu - reste l'optimisation des images.
J'avais vu passer un article fort bien écrit sur ce sujet mais hélas, j'ai omis de le bookmarker et paf: le voilà perdu dans les méandres de mon historique sur un des ordinateurs que j'utilise.
Tout le monde est d'accord sur le principe mais souvent, c'est comme l'écriture de la doc ou les tests unitaires: on a la flemme de s'y coller...
L'idéal serait bien sûr que l'optimisation soit transparente et automatique... genre: tu te contentes de passer à la balise img l'URL de l'API avec celle de l'image et POF, tu as l'image en version optimisée.
Optipic est donc un script auquel on passe l'URL d'une image, le format souhaité, le niveau de qualité et -éventuellement - la largeur maximum pour obtenir en retour l'image transformée.
Le script renvoie directement l'image transformée avec le header adéquat et du coup, c'est transparent pour HTML/CSS.
Notez que l'image optimisée est sauvée dans le dossier rendered/ afin d'éviter une charge inutile: si une image a déjà été optimisée, le script la sert directement au lieu de la refaire à chaque fois.
Même si ce script est déjà à ce stade absolument fabuleux (si, si !), je me suis dit que les paramètres risquaient de se répéter et qu'il pouvait s'avérer fastidieux de retaper le tout à chaque fois. Par conséquent, j'ai ajouté la possibilité de créer des scripts d'optimisation - un peu comme dans scriptopic.
Ainsi, si vous placez un fichier PHP contenant les paramètres dans le dossier scripts/ , vous pouvez l'appeler via le paramètre $_GET script
:
Exemple: je cree scripts/webp.php et je mets dedans:
// webp 50%
$params=[
'format' =>'webp',
'quality' =>50,
'maxwidth' =>null
];
Puis je l'appelle en faisant : api.url/?script=webp&i=http:/image.url/pic.jpg
Pour le moment, il y a quatre scripts: jpg80,jpg70,avif,webp... à vous de créer les vôtres en fonction de vos besoins...
Ben j'ai fait un test dans ce blog pour voir avec mon image de titre LOL:
qui pèse 113 ko en jpg
Puis avec son optimisation via le script webp ci-dessus:
qui ne pèse plus que... 18 ko en webp 50%
Et ça juste en rajoutant https://api.warriordudimanche.net/optipic/?script=webp&i=
dans le chemin de l'image.
Si Optipic ne parvient pas à créer l'image, il crée une image d'erreur à la place, histoire de voir le souci quand même...
Ce comportement peut être débrayé avec la constante ERROR_PIC
ligne 29.
Comme pour toutes les api de ma page, le script est téléchargeable via le ?download : https://api.warriordudimanche.net/optipic/?download et testable au même endroit: https://api.warriordudimanche.net/optipic/?i=...
DEFAULT_FORMAT
ligne 28Au passage, ce script utilise une classe que j'avais codée pour scriptopic: pictools. Grâce à elle, le travail d'optimisation tient en
$picture=new pictool($params);
$picture->load($url);
if (!empty($params['maxwidth'])){
$picture->resize($params['maxwidth']);
}
$picture->save($generated_picture_path);
$picture->display();
Cadeau !
Le fabricant d'imprimantes Epson a annoncé qu'il allait cesser de vendre et de distribuer des imprimantes laser en raison des problèmes de durabilité causés par le chauffage.
LOL: les imprimantes jet d'encre qui se foutent de la durabilité des imprimantes laser...
On parle bien des imprimantes jet d'encre dont le prix des cartouches rendent plus rentable de changer d'imprimante que d'en acheter de nouvelles ? Je me rends pas compte...
J'ai eu deux imprimantes laser en plus de 20 ans... :
🟢 C'est robuste, contrairement à ce que dit cet article.
🟢 C'est rapide
🟢 le rendu est très propre
🟢 le coût à la page est ridicule.
🟢 les cartouches durent longtemps
🔴 C'est plus cher à l'achat
🔴 c'est plus volumineux
🟠 les cartouches sont plus volumineuses mais elles permettent d'imprimer dix fois plus de pages... niveau pollution, ça doit être kifkif
« La technologie jet d'encre permet de réduire la consommation d'énergie par rapport au laser, et avec une empreinte compacte et une conception légère, ces produits contribuent à limiter les ressources utilisées pendant la production et l'expédition », a déclaré Epson. « Cette taille réduite signifie également qu'elles s'intègrent facilement au bureau et permettent de gagner de la place. Les cartouches d'encre à haut rendement réduisent également l'utilisation de matériaux, l'expédition, le stockage et la gestion de fin d'utilisation des consommables. »
Alors là, on est dans le marketing brut en mode «prends-moi bien pour un con» qui tend à chercher le moindre point positif où qu'il se cache.
Les cartouches de toner se trouvent pour une quarantaine d'euros et avec, t'es parti pour 3000 à 5000 pages tranquilou selon ta primante. Vas-y faire pareil avec des cartouches de jet d'encre qui contiennent un liquide vendu plus cher que du channel N°5 et avec lesquelles tu imprimeras péniblement quelques centaines de page.
Après, il y a les imprimantes à réservoir d'encre, que je ne connais pas du tout et au sujet desquelles je vais tout simplement fermer ma gueule vu que je n'en ai jamais eu une entre les pognes.
Sur le site d'EPSON, ils parlent de 14000 pages avec l'encre livrée dans le paquet de l'ecotank. Je suis sceptique sur l'argument de vente. Et le fait que ce soit Hussein Bolt, dont la compétence en la matière reste à confirmer, qui m'explique ne change rien à l'affaire.
Allez, c'est pour moi, c'est cadeau :
Ce mocking meme a été réalisé avec https://mock.warriordudimanche.net : amusez-vous bien !
Hier, je me suis aperçu que le bookmarklet que j'avais fait pour trouver le flux RSS d'une chaîne youtube ne fonctionnait pas toujours 🤬: en effet, si l'URL de la chaîne n'est pas du type www.youtube.com/channel/xxxCHANNEL_IDxxx
ça ne fonctionne pas... Or, les chaînes peuvent être aussi sous une forme dans laquelle le channel_id n'apparaît pas.
Au lieu de laisser youtube me chier dans les bottes, je me suis dit que, si le channel_id n'est pas dans l'URL, il doit être planqué quelque part dans le html de la page.
En fouillant un peu, twingo bongo jannielongo bingo 🥳 J'ai trouvé ça en parsant avec (presque) la même regex que pour l'URL.
J'ai donc codé vite fait une «api» qui renvoie l'URL du flux RSS d'une chaîne Youtube dont on fournit l'adresse.
On peut l'utiliser avec le frontend minimaliste prévu, en faisant une requête GET ou via le bookmarklet qui va bien.
Le tout est bien entendu utilisable, autohébergeable et modifiable, comme d'habitude
Allez !
Quel travail de ouf ! Ça fourmille de détails !
Dans le collège de ma fille, la prof de SVT propose un projet final évalué sur la protection d'espèces en danger qui clôt une séquence sur l'influence de l'humain dans le réchauffement climatique et la disparition des espèces.
Il s'agit d'un travail créatif comme je les aime, qui pousse le gamin à réfléchir à un cas particulier d'espèce en danger, à plusieurs actions concrètes qu'un élève de son âge pourrait mener le tout sous la forme d'une affiche à réaliser.
La prof en question demande aux élèves d'utiliser Canva, ce qui me chiffonne pour plusieurs raisons:
En version de base, peu de choses sont disponibles et il faut très rapidement un compte dès qu'on veut faire quelque-chose (ajouter une image issue de la recherche interne, importer une image à nous, la majeure partie des images sont marquées «👑 premium» etc...)
Impossible donc de placer sur le document ne serait-ce qu'un hippocampe (le sujet de l'affiche de ma fille)
Donc soit on passe par une inscription, soit on est très limité dans sa créativité, voire empêché complètement... Or, la créativité fait partie des critères d'évaluation.
Quand on regarde les accès via la console, on s'aperçoit qu'il y a des appels vers google (accounts entre-autres) et un domaine sentry.io même si un effort a été fait pour maintenir la majorité sur le domaine canvas.com (static essentiellement)
Ces accès google à eux seuls peuvent poser problème mais ça se corse (chef-lieu Ajaccio comme disait San Antonio) quand on fait un petit dig/whois sur le domaine canvas.com... On retrouve un hébergement aux USA par Amazon...
Quant à l'appel vers sentry.io, il pointe vers ... google à mountain view.
On pourrait se dire, «boarf, allez, on va pas se prendre la tête, la prof propose ce logiciel mais il suffit de faire autrement et puis voilà: l'important c'est le résultat»
Hélas, et c'est ce point particulier qui m'a agacé, la collègue a placé l'utilisation du logiciel canva dans les critères d'évaluation au même niveau que la restitution en retard du travail.
Par conséquent, un élève soucieux d'obtenir la meilleure note se voit contraint à l'utilisation d'un logiciel privateur dans lequel il lui faudra ouvrir un compte en abandonnant ses données aux GAFAM.
Parce que l'éducation nationale devrait bâtir un projet de société basé sur le libre et le partage, pas sur la spoliation et l'exploitation des données,
Parce que la création, quelle qu'elle soit, devrait être libre de contraintes: quand je propose ce genre de travail aux élèves, je leur dis précisément le contraire de cette collègue: faites selon votre inspiration, n'importe quel support, n'importe quelle technique, n'importe quelle taille... faites JOLI et FANTAISISTE (on a besoin de couleur, de gaîté et de fantaisie dans la vie) et je leur propose des exemples.
Parce qu'un enseignant devrait, à mon sens, limiter les contraintes des travaux aux stricts besoins de l'objectif pédagogique qu'il s'est fixé: la contrainte n'est pas positive en soi... la devise de la France c'est liberté égalité fraternité... pour le moment.
J'ai envoyé un message expliquant mon point de vue à la collègue en prenant soin de ne pas critiquer la qualité de son travail, au demeurant excellent et irréprochable par ailleurs... Je n'ai pas encore eu de réponse.
On a utilisé des alternatives libres et gratuites pour réaliser le travail: Krita pour le dessin proprement dit et GIMP pour la composition et l'ajout de texte. Tout élève n'ayant pas à la maison un adulte connaissant ces logiciels pouvait dessiner à la main, faire des collages, utiliser LibreOffice etc...
Le choix d'un service en ligne, si pertinent qu'il puisse paraître de prime abord, réduit la possibilité d'échapper au problème RGPD: en effet, peu de webapps de dessin sont hébergées ailleurs qu'aux states... Ou alors il faudrait auto héberger... voire - FOLIE - que l'éducation nationale propose ce service au sein d'un claoude «souverain» estampillé EN (et pas comme l'appel à des services cro$soft online dans de l'ENT comme actuellement)
Je me demande ce que je ferai si elle retire effectivement des points pour non utilisation de canva.
Je ne suis pas du genre à aller râler chez le chef, vous me connaissez, mais ça me ferait mal au cul quand même que tous les efforts faits par ma fille, en particulier le dessin qu'elle a travaillé à la palette graphique, comptent moins que le nom du logiciel utilisé... surtout que la restitution doit être ... imprimée (sic)
Merci copain pour ce point de vue révélant une culpabilisation qui m'avait échappé:
Alors oui, il y a des "belles histoires", il y a des choses qui échappent à la connaissance médicale. Mais PUTAIN arrêtez de tout ramener à "c'est dans ta tête". Parce que pour les femmes, c'est juste l'horreur :
- t'arrive pas à avoir d’enfant ? Arrête d'y penser, c'est dans ta tête
- les règles douloureuses ? Tu t'écoutes trop,c'est dans ta tête
- trop grosse, trop maigre, trop... C'est dans ta tête !
- etc. : étant un homme, je manque d'exemples
Très bon article ! Je me résume quelques idées ici.
Ce sont des gens habiles qui appliquent des stratégies de décrédibilisation et de communication.
il suffit de passer son temps à lancer des accusations ou des trucs faux courts, sur un ton confiant. De manière à générer en face de longues justifications. Quand la personne a fini de se dépêtrer on lance une autre accusation. Et ainsi de suite.
La personne qui accuse, donne une impression de certitude. Celle qui se justifie donne l’impression d’être en faute.
Débattre avec quelqu’un d’extrême-droite sous entend que, si ça se trouve, il a raison.
Soit on éduque, soit on ignore. Mais en aucun cas ça peut être un débat.
Pour, elle, le but du débat d’humilier l’adversaire.
Ils ne débattent que si ça leur permet de gagner de l'audience, donc avec des gens dont il peuvent récupérer de l'audience ou des partisans.
il ne faut jamais répondre à un adversaire qui a une audience significativement inférieure à la sienne.
Elle utilise nos valeurs à nos dépends en les pervertissant.
La libre expression et la démocratie ne sont pas des valeurs d’extrême-droite. Elle s’en contrefiche. En revanche, elle sait que ce sont des valeurs chères aux autres camps politiques.
L’extrême-droite est pour la liberté d’expression uniquement quand elle est marginale ou en conquête du pouvoir. Une fois qu’elle l’a, elle réduit l’opposition au silence. Elle a raison : elle comprend très bien que sa meilleure manière de prendre le pouvoir est de profiter d’une faille de la “démocratie”.
Ça marche tellement bien que, même quand elle obtient la parole, l’extrême-droite continue à clamer partout qu’elle n’a pas la parole. [...] C’est ridicule uniquement si on se place du point de vue de la recherche de la vérité. Mais l’important n’est pas d’avoir raison, l’important est de gagner. Or, cette stratégie est ultra-gagnante. Plus Zemmour crie qu’il est censuré et plus on lui offre des tribunes. Pourquoi arrêterait-il ?
certaines bêtise prennent vingt secondes à dire, mais des heures à réfuter.
le souci c’est que dans un débat en direct, il est impossible de dire “attends, je vais chercher la réfutation dans une vidéo de 20 minutes”. D’ailleurs, même quand on connaît la réfutation, c’est quasiment impossible de la déployer en direct. L’autre va nous couper la parole, nous empêcher de dérouler…
La fenêtre d’Overton est l’ensemble des propos acceptés en public par la société sur un sujet donné [...] On ne débat que des idées dont les deux réponses sont dans la fenêtre d’Overton.
L’extrême-droite comprend donc qu’il lui faut d’abord déplacer la fenêtre dans son sens, pour espérer faire élire un des siens. [...] Ce processus s’appelle “la normalisation”.
Voilà pourquoi l’extrême-droite veut être de tous les débats [...] Parce que ça lui permet de déplacer la fenêtre d’Overton. De banaliser ses idées. [...] Quand on est vraiment en dehors de la fenêtre d’Overton, il n’y a pas de mauvaise publicité.
Morale de l’histoire : quand l’adversaire pleure [pour se plaindre de ne pas bénéficier d'une écoute démocratique] on n’est pas censé lui donner ce qu’il demande. Au contraire, c’est le signe que notre combat fonctionne. [...] L’extrême-droite se plaindra qu’on lui refuse le débat, jusqu’à ce qu’on accepte. Mais si on accepte jamais…elle est dans l’impasse
Pour vous déculpabiliser en tant que modérateur sur vos pages de commentaires / réseaux sociaux etc. :
Les gens d’extrême-droite sont libres d’avoir leur petits espaces d’expression, sans qu’on soit obligé de leur offrir nos grands espaces, volontairement.
des gens comme Dieudonné ou Alain Soral ont subi ces bannissements, avec succès. Car oui, le bannissement fonctionne.
On devrait plutôt réfléchir à quels groupes d’extrême-droite il faut bannir ou dissoudre, plutôt que de passer notre temps à vouloir débattre avec les mouvements les plus “modérés” de l’extrême-droite.
Petite mise à jour pour gérer les cas où une URL de fournisseur d'Ebooks disparaît (Quand on dit qu'il faut gérer les erreurs!)
Désormais, si une URL ne répond plus, un avertissement 404 apparaît à la place de la recherche pour cette URL sans bloquer les autres.
Si toi aussi t'en as marre que le bouton 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)
Un truc qui me chiffonnait dans la rédaction d'articles un peu longs, c'était:
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.
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:
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.
Si ça peut vous servir, c'est cadeau !
Définition:
Pouvoir d'achat: élément de langage inventé par ceux qui en ont pour parler de ceux qui n'en n'ont pas.
L'élément template
pour créer des objets à cloner via javascript de façon plus sémantique que via des div
cachées.
template
est inerte: les styles ne s'appliquent pas, les images ne se chargent pasdiv
peut échouer, être désactive ou redéfini ailleurs alors que template
est toujours cachédiv
cachées, pas les template
(à priori)L'auteur du jeu aurait dû utiliser la licence DBAD, plus appropriée à la situation: http://dbad-license.org
Ceci dit, même si le récupérateur ne viole pas la licence, ça reste quand même contestable moralement de s'approprier le travail TITANESQUE de l'auteur POUR SE FAIRE DU FRIC... le pognon, toujours le pognon, encore le pognon: si tu te fais du pognon, tu peux tout te permettre sans qu'on ait la moindre légitimité de te critiquer parce que tu ne violes aucune loi. Donc, non, le mec ne transgresse pas de loi mais ça reste un connard.