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=nono
où nono 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