T'as perdu une occasion de la fermer !

Quand M.Fion, en septembre dernier, chiait abondamment sur l'inconséquence des médias qui ne s'intéressent aux malversations des politiques que pendant «deux ou trois jours», il ignorait sans doute qu'il serait exaucé par la fée réalité quelques mois plus tard, à ses dépends

Il ne mérite AUCUNE pitié... AUCUNE.

En cadeau bonus, Laura Laune et léa la girafe


Laura Laune - Léa La Girafe par comedycontestfrance

Goofi: ramener des google fonts en local en une ligne

Ceux qui, avec une ténacité et une abnégation forçant le respect autant que l'admiration, me suivent depuis longtemps se souviennent sans doute de Goofy, un script php permettant de récupérer les fontes de google sous forme de zip prêt à l'emploi...

Ben je trouvais ça encore un peu lourd, sans compter qu'il faut tout le temps modifier le script pour qu'il continue à fonctionner. Par voie de conséquence, j'ai repris l'idée mais en la modifiant quelque peu...

Ce nouveau script s'utilise de façon radicalement différente: en effet, il suffit de l'appeler via la balise du header, comme le fait la balise proposée par google, sauf qu'on remplace l'url de google par celle de goofi:

<link href="https://fonts.googleapis.com/css?family=Nunito+Sans|Roboto" rel="stylesheet">

devient

<link href="http://monserveur.com/goofi.php?family=Nunito+Sans|Roboto" rel="stylesheet">

Et... c'est tout.

Goofi.php va :

  1. chercher le css fourni par Google,
  2. récupérer les fontes pour les copier en local
  3. recrér le css en remplaçant les chemins google par les chemins locaux,
  4. stocker le tout sur le serveur
  5. et renvoyer le css sous forme de feuille de style.

Le téléchargement ne se fait que la première fois, et seulement depuis le serveur, ainsi l'usager n'a-t-il rien à craindre du flicage goorwellien

Le script en question:

<?php 
header("Content-Type: text/css");
$font_folder='fonts';
if (!empty($_GET['family'])){
    if (!is_dir($font_folder)){mkdir($font_folder);}
    $family=strip_tags($_GET['family']);
    $css_filename=urlencode($family).'.css';
    $css_file_url='http://fonts.googleapis.com/css?family='.urlencode($family);
    if (!is_file($css_filename)){
        $css=file_get_contents($css_file_url);

        preg_match_all("#font-family: '(?P<name>[^']+)[<img class="smile " src="http://warriordudimanche.net/plugins/WDD_replace/img/normal/satisfait.png"/>]*?url\((?P<url>[^\)]+)\)#", $css, $urls);

        foreach($urls['url'] as $nb=>$url){
            $font_file=$urls['name'][$nb].basename($url);
            if (!is_file($font_folder.'/'.$font_file)){
                $font=file_get_contents($url);
                file_put_contents($font_folder.'/'.$font_file, $font);
            }
            $css=str_replace($url,$font_folder.'/'.$font_file,$css);
        }
        file_put_contents($css_filename,$css );
    }else{
        $css=file_get_contents($css_filename);
    }
    exit($css);
}

Le Zip et le dépôt

Trois plugins pour le prix de zéro: c'est Mercredi, c'est cadeau !

Toujours plus loin, toujours plus haut... Sky is the limit. Oui, bon, j'en fais un peu trop, mais les rares qui s'entêtent encore à me lire sont habitués

Donc, aujourd'hui, ce n'est pas un, ce n'est pas deux mais bien trois plugins que je vous propose. D'un coup. Chuis comme ça, généreux ! (si, si, c'est vrai, même que Cyrille Borne le dit )

Il ajoute même de façon tout-à-fait pertinente que ma générosité n'a d'égal que mon aspect bordélique, c'est vous dire l'ampleur !

Bon, plus sérieusement, les trois plugins ne sont que trois versions d'un seul et même script.

Pourquoi en faire trois alors ?

Excellente question, j'y réponds en dessous.


Comme je le disais il n'y a pas longtemps, j'ai décidé de cumuler toutes mes façons d'écrire dans le même espace dédié... C'était autant une volonté de n'avoir qu'un seul espace admin, qu'un désir de cohérence «éditoriale». De plus, j'avais tendance à utiliser Shaarli comme un outil de blog/expression d'opinion/communication, ce qu'il n'est pas.

Seulement pour ça, il fallait écrire dans des catégories séparées: blog, touit et links.

Le problème, quand on est, comme moi, éleveur d'enfants compulsif, impulsif et bordélique, c'est qu'on se retrouve rapidement à renoncer à poster sur le blog par manque de temps ou par flemme d'aller sur la page admin, se connecter, aller sur nouvel article, sélectionner la bonne catégorie, copier-coller le lien qui m'intéresse etc.

Faut que ça pulse, la vie est trop courte pour tout ça !

Du coup, j'ai pris le temps de ressortir mon plugin Quickpost et de le modifier.

Ainsi, chaque plugin permet de poster d'une façon différente à partir d'un clic sur un bookmarklet: un seul clic et la fenêtre apparaît, prête à l'emploi, la catégorie utile présélectionnée, le lien collecté (si Weblinks), le titre pré rempli.

Mieux: si on n'est pas connecté au moment du clic, une case mot de passe est ajoutée pour éviter le passage par la page de login.

Téléchargement

WDDQuickpost, pour poster un article

WDDTouit, pour touiter vite fait

WDDWeblinks, pour partager un lien

Captures

capture

capture

capture

Réjouissez-vous, mes amis, car en vérité, je vous le dis, ce post est terminé !

Media_Page_Enhancement: améliorer la page média de pluXML

Un jour, un plugin... chuis comme ça . Aujourd'hui, j'ajoute ma pierre à l'admirable édifice de pluXML en modifiant un peu la page médias.

En effet, je trouvais dommage de ne pouvoir sélectionner les fichiers que par le bouton input et d'être obligé de downloader une image du net avant de la réuploader sur ce site...

Comme tout bon codeur, j'ai passé quelques heures à gagner quelques minutes


Ce plugin va donc ajouter une case permettant de coller l'url d'un fichier à récupérer sur le net. Le fichier en question sera renommé pour conserver une trace de son origine.

capture

De plus, j'ai complété le bouton de sélection de fichiers en ajoutant la gestion du glisser-déposer: Lorsqu'on glisse un ou des fichiers, la drop zone se déploie sur toute la fenêtre.

capture

Lorsqu'on dépose les fichiers, ils ne sont pas uploadés directement mais simplement ajoutés à la liste, ce qui permet de bénéficier du redimensionnement de l'image par pluXML.

Voilà... ce n'est pas grand-chose mais ça facilite la vie sans changer le fonctionnement de ce remarquable CMS.

Download !

Adapter le favicon à la couleur du site

Comme je bosse presque tout le temps sur BoZoN 3.0, je profite de la récriture complète du code pour y ajouter des fonctions et des améliorations deci delà...

L'une de ces améliorations réside dans la possibilité de changer la couleur de base du thème en ne changeant qu'une variable dans le fichier dédié.

 

Problème, le favicon n'est plus adapté

Bon, ben on y va alors... 


 

Pour faire simple, je veux coller le logo de l'appli sur un fond de couleur. J'ai donc fait une fonction qui se charge de:

  • lire le logo en question
  • créer une image avec le fond de la couleur choisie
  • superposer le logo
  • sauver le tout à la place du favicon.png

La fonction sera appelée depuis le fichier php de chargeant de créer les css à partir des couleurs choisies.

 

Mais, car il y a un mais, on ne souhaite pas que le favicon soit généré à chaque chargement mais juste dans le cas où on change la couleur du thème...

Fastoche comme tout, il suffit de tester le filemtime du fichier favicon.png et celui de colors.php (qui contient les variables de couleur) et de ne générer le fichier favicon qu'en cas de différence

 

La fonction, la voilà :

function makeFavIcon($background_color){
  # Si on a changé la couleur dans color.php
  if (filemtime('favicon.png')!=filemtime('colors.php')){
    # on charge le logo
    $logo=imagecreatefrompng ('img/logo.png');
    # ça c'est pour la transparence
    imageAlphaBlending($logo, true);
    imageSaveAlpha($logo, true);

    # on crée l'image de fond
    $fav=imagecreatetruecolor(140,140);
    imageAlphaBlending($fav, true);
    imageSaveAlpha($fav, true);

    # on extrait la couleur (passée en #fff ou #ffffff)
    preg_match('/#?([a-fA-F0-9]{1,2})([a-fA-F0-9]{1,2})([a-fA-F0-9]{1,2})/',$background_color,$color);
    if (strlen($color[1])<2){
      $color[1]=$color[1].$color[1];
      $color[2]=$color[2].$color[2];
      $color[3]=$color[3].$color[3];
    }
    $color=array_map("hexdec",$color);
    $color = ImageColorAllocate ($fav,$color[1],$color[2],$color[3]);

    # on crée le fond dans la couleur
    imagefilledrectangle ($fav,0,0,140,140,$color);
    imagecopy($fav,$logo,0,0,0,0,140,140);

    # on sauve l'image
    imagepng($fav, 'favicon.png');

    # on libère la mémoire
    imagedestroy($fav);

    # on change le filemtime du fichier de couleurs
    touch('colors.php');
  }
}

 

Je la mets sur mon snippetvamp aussi, allez

 

Tchou !

Fil RSS des articles de cette catégorie