Plugins Enabler est un plugin utilitaire réservé aux configurations multisites de WordPress qui permet de manager la visibilité des plugins disponibles dans le réseau, et ce site par site.
Il y a un peu plus d’une semaine, Ipstenu (un des plugins referee du repository de WordPress.org) m’a fait part de la « mise en quarantaine » de Plugins Enabler, un des tous premiers plugins WordPress que j’ai partagé sur le repository.
Son diagnostic était inquiétant : « entièrement non fonctionnel depuis la version 3.1 de WordPress » !! D’un côté, je trouve la démarche hyper rassurante dans la mesure où elle contribue à la qualité des ressources disponibles sur WordPress.org, de l’autre j’ai dû encaisser la tragédie d’apprendre que le pronostic vital d’un de mes « bébés » était engagé :(.
Deux options s’offrent alors à moi :
- précipiter la disparition de l’extension car, étant donné le nombre de téléchargements, peu de personnes déposeront une gerbe sur sa tombe…
- Engager des soins intensifs pour le ramener à la vie !
Diagnostic « différentiel »
Avant de prendre une décision « grave » pour son avenir, je décide de lancer une batterie d’examens sur le patient et ce dans un nouvel environnement : la 3.7-beta2 de WordPress (désormais en RC). Après une radio confirmée par un scanner, j’identifie la pathologie : Plugins Enabler souffre d’une pluginingite dégénérative sévère. La bonne nouvelle est que la maladie n’est pas contagieuse à la différence de la pluginingite virale aiguë dont le symptôme ultime est le « white screen of death« . Ceci dit, même diminuée, ma création s’accroche à la vie et parvient, malgré tout, à continuer d’assurer ses fonctionnalités.. mais pour combien de temps ?
Je décide finalement de traiter la bête et de m’en servir comme d’un cobaye dans la réalisation d’une opération inédite dans le monde médical : la greffe complète d’une colonne vertébrale!
Même si je suis conscient du risque d’échec ou de rejet du patient, je sais que quoiqu’il arrive, il ne manquera à personne. Donc, autant l’utiliser pour le progrès de ma science 😉
Backbone.js : la colonne vertébrale.
Il se trouve que j’effectue depuis un certain temps des recherches sur le domaine. Depuis la version 3.5 de WordPress, cette librairie et son compagnon Underscore.js s’occupent notamment de dynamiser le gestionnaire de média.
Alors pourquoi s’intéresser à ce framework MVC javascript pour nos plugins ? Je vous invite à consulter la présentation de K.Adam White et cet article d’@Atinux (en français)
Aussi, j’ai eu l’occasion de « me faire la main » sur différentes pistes pour profiter de ce gestionnaire dans le cadre de plugins BuddyPress. En ce moment, je teste la génération de shortcodes pour afficher des activités, des membres ou des groupes BuddyPress depuis cette interface dans la perspective d’une prochaine version de Bowe Codes.
Par ailleurs, je regarde également ce que les fonctions liées à la gestion des images à la une de WordPress pourraient apporter dans l’interface d’administation des groupes et notamment la gestion de l’ajout et de la modification de leur avatar.
Mais jusqu’à présent, il ne s’est agit que d’opérations assez brouillonnes : rien à voir avec l’intervention « à dos ouvert » que je m’apprêtais à réaliser sur mon patient Plugins Enabler 😉
L’Intervention à « dos ouvert »
En fait je me suis très vite aperçu que de la version 1.1 de Plugins Enabler, je n’allais conserver que très peu de chose. D’ailleurs, ça s’est limité à quelques caractères : le changelog de son fichier readme.txt 😉
J’ai donc tout réécrit. La partie PHP ne m’a pas posé de difficultés particulières, et concernant ce plugin : c’était pas du luxe! L’affaire s’est compliquée lorsque que j’ai attaqué la colonne vertébrale du patient. Je suis souvent tombé sur des os durs durs !
En passant, ces différentes ressources m’ont pas mal aidé :
- la console d’erreurs de Chrome et l’insertion de console.log à des endroits stratégiques de mon code.
- le backbone en douceur de Philippe Charrière
- le livre « Developping Backbone.js Applications » de Addy Osmani
- Ainsi que certains fichiers de WordPress liés au gestionnaire de médias :
- /wp-includes/media.php (en particulier la fonction wp_enqueue_media())
- /wp-includes/media-template.php
- /wp-includes/js/media-models.js
- /wp-includes/js/media-views.js
- /wp-includes/js/media-editor.js
- /wp-includes/js/wp-utils.js
Résultat, l’interface d’administation de la visibilité des plugins de mon patient Plugins Enabler utilise désormais principalement Backbone.js et Underscore.js. Voici ce que ça donne sous WordPress 3.7 RC1 : https://vimeo.com/77438372
Comme vous pouvez le constater, mon plugin achève sa période de convalescence et je pense qu’il sera prochainement de nouveau disponible dans le repository officiel de WordPress.org. En attendant, si vous souhaitez parcourir son code ou le tester, vous pouvez le télecharger depuis ma dropbox.
Update!! (22/10/2013 à 18h23) : Ipstenu viens de m’informer que Plugins Enabler était de nouveau disponible sur le repo, merci à elle pour son aide 🙂
NB : cette nouvelle version de Plugins Enabler (2.0) requiert la version 3.7 de WordPress dans la mesure où elle utilise la fonction wp_get_sites() et donc une nouvelle table qui fait son apparition dans le cadre d’une configuration multisite (wp_blogs), laquelle n’existe pas dans les précédentes versions.
Une deuxième vie pour Plugins Enabler ?
Il est possible que certains d’entre vous, arrivés à ce dernier chapitre de mon histoire se disent « mais, @imath il fait quoi ton plugin au juste ??! ».
Alors voilà, lorsque vous « super » administrez un réseau de blogs (multisite), s’agissant de la mise à disposition de plugins pour vos administrateurs vous avez le choix entre :
- désactiver le menu plugins et donc masquer la liste des plugins disponibles pour leur site (réglage par défaut d’un multisite)
- activer le menu plugins, et donc afficher tous les plugins (exception faite de ceux qui forcent leur activation sur le réseau – Tag Network réglé sur true ou dropins ou mustuse ) et ce pour tous les administrateurs de blog.
En revanche si vous souhaitez autoriser l’administrateur du site A à activer 3 des 10 plugins disponibles sur le réseau pour son site, et à celui du site B, 2 autres et ainsi de suite.. On est coincé. C’est pourquoi, j’avais construit ce plugin. L’idée étant de masquer certains plugins aux administrateurs de site et de pouvoir affiner ce réglage site par site. Bien entendu, le super administrateur, lui, dispose de la totalité des plugins pour chacun des sites.
Enfin s’agissant de la deuxième vie du plugin, je pense que cette réanimation ne changera pas grand chose à sa popularité. En revanche, travailler dessus m’a éclairé au sujet de Backbone.js et je pense que ça me sera très bénéfique pour d’autres plugins. Donc merci à Plugins Enabler de m’avoir donné l’envie d’approfondir Backbone.js 😉
3 réponses à “Greffe d’une colonne vertébrale pour Plugins Enabler!”
Plugin super utile, heureusement que l’opération c’est bien passée, bravo docteur 😉
La greffe sur Bowe Codes à l’air magnifique!!
Merci pour ton feedback 🙂
[…] qui retient tout particulièrement mon attention comme j’ai pu l’expliquer dans un article précédent. Ainsi, après avoir ausculté le mécanisme de BuddyPress et puisé de l’inspiration dans […]