Plugin Nono - Suite n°2

Je continue l'étude du plugin Nono en espérant recueillir ici vos commentaires ou vos suggestions. Nous avons vu dans le billet précédent qu'il est préférable de gérer la sélection et le traitement via des mini-plugins (nonobot) spécialisés. Chaque nonobot installé pourra offrir un mode de sélection et/ou un mode de traitement et ceci sur tout ou partie des types d'objets pouvant être gérés.

Quels sont ces types objets ? A priori j'envisage de permettre la sélection et le traitement de ceux-ci :

  • liste de billets
  • liste de commentaires et/ou de trackbacks
  • liste de catégories
  • liste d'utilisateurs

Pourquoi définir les types d'objets ? Pour n'autoriser qu'une sélection compatible du nonobot de sélection et du nonobot d'action.

Une fois définis les différents modes et les types d'objets, il s'agit d'imaginer le fonctionnement du plugin Nono. La page principale du plugin devra permettre le choix du nonobot de sélection et lui offrir un espace d'affichage dédié, le choix du nonobot d'action et également lui offrir un espace d'affichage dédié. Une page secondaire de configuration, d'installation et de désinstallation des nonobots, d'activation et de désactivation, et enfin de packaging des nonobots sera accessible via un lien sous les onglets standards de DotClear.

Je vais maintenant rentrer un peu plus dans le détail de l'implémentation.

Schéma de l'URL du plugin

L'URL normale d'un plugin DotClear est (en mode query string) : .../tools.php?p=nononono correspond au nom interne du plugin.

Cette URL pourra être complétée par les paramètres suivants :

  • &page=config pour la gestion spécifique de la configuration générale et de la maintenance (installation, désinstallation, activation, désactivation et packaging) des nonobots[1].
  • &botsel= suivi du nom interne du nonobot de sélection choisi.
  • &botact= suivi du nom interne du nonobot d'action choisi.
  • &mode= suivi de :
    • init lorsqu'il s'agira d'initialiser une sélection (affichage éventuel des options et du bouton de validation par le nonobot de sélection).
    • select lorsqu'il s'agira pour le nonobot de sélection d'effectuer la sélection demandée et ensuite pour le nonobot d'action d'afficher les éventuelles options et le bouton de validation de l'action à entreprendre.
    • action lorsqu'il s'agira pour le nonobot d'action d'effectuer le traitement demandé.

La gestion des modes par les nonobots

Chaque nonobot devra être capable — si nécessaire — de réagir à différents modes spécifiés via l'URL (voir ci-dessus).

Un nonobot de sélection doit être capable de traiter les modes suivants :

  • init : affichage des options spécifiques au nonobot pour effectuer la sélection, puis affichage du bouton de lancement de la sélection.
  • select : récupération des options éventuelles et sélection. Le nonobot peut si nécessaire fournir un résultat visuel de sa sélection.

Un nonobot d'action doit être capable de traiter les modes suivants :

  • select : affichage éventuel du contenu sélectionné par le nonobot de sélection (dépend du type d'objet), affichage des éventuelles options de traitement, puis affichage du bouton de lancement du traitement.
  • action : récupération des options éventuelles et traitement. Le nonobot peut si nécessaire fournir un résultat visuel (sous forme de message, d'icône, ...) du traitement effectué.

Nota : Un nonobot étant à la fois un nonobot de sélection et d'action devra être en mesure lors du traitement du mode select de gérer la sélection et la préparation du traitement en un seul appel.

Questions en suspens

  • Comment définir la liste des objets traités par un nonobot ? Via le fichier desc.xml du nonobot ?
  • Comment un nonobot peut définir son propre type d'objet ? Je pense ici à l'extension de ce système aux objets gérés par d'autres plugins comme les galeries et leurs sous-ensembles, aux citations, ..., en fait à quasiment tous les objets stockés dans des tables de la base de données. Comme précédemment via le desc.xml ?
  • Peut-on utiliser facilement le code du plugin packager (de thèmes et plugins) pour gérer les nonobots ? Ou faut-il le reproduire ici ?
  • Comment combiner plusieurs actions ? Est-ce indispensable ?
  • Comment le nonobot d'action récupère/maintient la sélection entre le mode select et le mode action puisque les variables ne sont pas permanentes (mode global à off) entre deux appels ? Il faut mettre de l'AJAX là dedans ?

Stay tuned ...

Notes

[1] Les éléments spécifiques de cette page seront étudiés ultérieurement

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/2919

Haut de page