Shinterest - pourquoi réinventer la roue ?

Je me plaignais il n'y a encore pas si longtemps que, les idées foisonnant, je n'avais parfois même pas le temps de les noter ailleurs que sur un bout de papier, dans un carnet, au bas d'une feuille volante détournée... J'avais alors opté pour le jotter de mon pote Yosko, dont je ne me lasse pas de faire la pub... 

 

Puis, dans la liste de ces idées figurait celle de me faire un clone de pinterest, comme ça, from scratch... mais aussi de refaire la maquette bâclée et vieillissante de mon shaarli...

Et d'un coup, ça s'est relié, quelque part là dedans... pourquoi se logger dans trois espaces différents ?!

 

J'ai ainsi commencé à réfléchir à un moyen de transformer shaarli pour réunir les trois idées en une seule...


1 - Décortiquer Shaarli pour saisir son fonctionnement

 

Avant de se lancer dans des patchs façon windows pour finalement se retrouver avec une appli dont plus personne ne pourrait comprendre le fonctionnement, j'ai commencé à observer attentivement le code pour en saisir le fonctionnement et voir où et comment je pourrais intervenir.

 

Comme je ne suis pas fan de l'usage non réfréné de la molette en programmation, j'ai commencé par isoler les parties de la page index en les scindant en fichiers séparés regroupant les blocs de routines apparentées (hérésie, mea culpa, désolé Seb ).

Comme il y a un dossier inc/ dans shaarli, je l'ai utilisé pour y regrouper les parties découpées:

  • inc/configuration.ph
  • inc/functions.php
  • inc/initialisation.php
Mon objectif suivant était de me débrouiller pour limiter drastiquement les modifications du code initial de Shaarli; il me fallait donc créer de nouveaux fichiers php pour y regrouper mes modifications perso et faciliter une mise à jour ultérieure du code d'origine. Je ne suis pas parvenu à ne pas du tout modifier ce dernier, mais j'ai limité les changements à des parties spécifiques et balisées de commentaires. 
 
Shaarli utilise les $_GET et $_POST pour obéir aux commandes, j'ai donc ajouté quatre scripts php (inclus aux endroits stratégiques) :
  • inc/private_get_commands.php qui gère les commandes $_GET admin
  • inc/public_get_commands.php qui s'occupe des commandes $_GET publiques
  • inc/personal_post_actions.php pour gérer d'éventuels ajouts dans le traitement de $_POST
  • inc/render_basic_page.php pour créer la page en dernier recours.
 
 
Grâce à ces changements, j'ai pu pallier à l'absence de mécanisme de plugin ou de hook (non prévus dans shaarli, ce qui est normal, compte tenu de son aspect volontairement KISS et sécure).
L'usage des templates de RainTPL a permis le reste.
 
 
 

2- Faciliter certains usages

 

Comme je l'ai dit, je voulais pouvoir prendre ou modifier une note rapidement, si possible dans un espace un tant soit peu dédié... ça voulait dire faire un espace Bloc-notes.

J'ai eu l'idée d'utiliser un tag spécifique pour ça: mynotebook. Ainsi il devient enfantin de filtrer les notes du reste des liens.

De plus, on peut ainsi compléter les tags en ajoutant par exemple la fonction de la note (todo/debug/note_pour_plus_tard...) et le nom du projet.

On peut alors écrire de petites notes spécifiques regroupées autour d'un projet particulier, exemples de tags: SonaRRS ToDo ou SonaRRS bugs etc... 

Il devient très simple de retrouver et mettre à jour une note particulière, de voir toutes ses todos, tous les bugs etc.

 

Si on y ajoute un bookmarklet spécifique, la moindre prise de note n'est plus qu'à un seul clic de distance...

 

 

3-Autres modifications

  • Nettoyage du css inline au profit de règles css dans shaarli.css
  • Ajout de classes css au body des pages afin de pouvoir les cibler individuellement
  • Modification de la génération du nuage de tags pour utiliser des classes plutôt que des font-size inline
  • Ajout d'un bouton sur les tags du nuage pour pouvoir les supprimer en un clic en mode admin
  • Internationalisation minimale: pour modifier ou ajouter une langue, on édite le fichier inc/languages.php. Dans un template, on ajoute un message traduit en utilisant la fonction suivante {"message en anglais"|e} (si la clé "message en anglais" existe dans la traduction, elle est remplacée, sinon, c'est le message d'origine qui est echo. La fonction e() utilise la langue configurée dans inc/configuration.php (mettez à "fr" pour le français)
  • Surlignage automatique des termes de recherche fulltext (pas sur les tags)
  • Ajout de markdown pour les descriptions (block-note et liens).

 

 

 

4-libs utilisées

  1. Pour la gestion de l'aspect pinterest et l'infinite loading: wookmark
    Après avoir passé des heures à intégrer cette lib dans shinterest, j'ai renoncé à l'infinite loading qui finissait par surcharger inutilement la page...
    Je suis donc revenu à la pagination normale mais avec 100 liens par page. 
    Du coup, utiliser une lib pour une simple présentation en colonnes, j'ai trouvé ça con et j'ai opté pour les colonnes css3, même si les widgets se retrouvent à la suite verticalement au lieu d'horizontalement... 
    A mon sens, il vaut mieux une techno native qu'une lib de plus...
  2. Pour le markdown: parsedown

 

5- Todo 

  • Quelques bugs :
    • [edit] il y a un bug à l'utilisation de l'image d'illustration; je pensais l'avoir corrigé, mais comme j'ai eu un problème d'effacement accidentel de fichiers  rapidement synchronisé par bittorrentsync, il fait peut-être partie des modifs passées à la trappe.
    • revoir la largeur minimale des widgets-liens
    • remettre l'affichage d'un permalink en 100%
    • ...
  • Des améliiorations:
    • récupérer en local l'image d'illustration (éviter de dépendre d'un autre serveur)
    • améliorer la rapidité sous firefox... à ce propos, si quelqu'un peut prendre deux minutes pour m'expliquer pourquoi ça rame autant sous firefox, je suis preneur... je sens bien que ça doit être ma faute, hein, notez... mais je vois pas...

6-Conclusion

Je tourne sur Shinterest depuis quelques jours et j'ai commencé à y placer toutes mes todos/notes volantes/bouts de début d'idées... 

 

Compte tenu de mon usage de la prise de notes, gérer ces dernières via shaarli s'avère pour moi plus rapide et pratique qu'avec d'autres solutions déjà testées et m'évite le recours à un espace supplémentaire...

 

J'imagine qu'on pourrait aisément poursuivre ces modifications et y ajouter un espace dédié aux snippets, ce qui permettrait de se passer d'une grande partie des fonctions de SnippetVamp par exemple  

Là je ne m'y mets pas, parce que j'ai encore tout plein d'idées sur le feu, mais je me le note... dans Shinterest

 


 

Pour le récupérer: Shinterest sur Github

Pour le tester : RDV sur mon Shaarli Shinterest

❝ 1 commentaire ❞

1  CamilleFlavius20 le

Je vous remercie pour cet information, c'est exactement ce que je cherchais !

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

les commentaires relevant du SPAM seront filtrés et dégagés direct...

Quelle est le cinquième caractère du mot lpa1zhw7 ?