Effectivement, je pense à plusieurs améliorations à usage générique des
crayons:
- ne pas considérer par défaut que les crayons mettent à jour directement des
tables, simplifier la réalisation de vues/controleurs php entièrement
personnalisables. Dans crayons 0.4, je n'avais pas eu besoin d'overrides.
Dans la dernière version (1.0), on est obligé de surcharger le plugin pour
éviter que la fonction ci-dessous (action_crayons_html) n'appelle
automatiquement crayons_store, alors que je veux appeller une action
personnalisée, action/crayons_composant_store.
Les versions précédentes des crayons laissaient plus de liberté dans la
construction du formulaire du controleur.
Peut-être pourrait-on généraliser crayons en passant un type d'objets à mettre
à jour, et en ayant d'autres types que "table" pour lesquelles devraient
exister des vues/controleurs/store définis de façon SPIPienne par le type ?
- Dans le javascript, il a déjà été ajouté la variable wh. De la même façon,
ce serait bien d'y inclure ww (largeur écran), ainsi que top et left absolus
pour permettre de positionner les controleurs en fonction de l'affichage
existant. C'est une chose qui me manque pour permettre de positionner des
controleurs crées pour ACS, des éditeurs de composants. (le controleur
affiche le composant avec une opacity partielle, et une "fausse popup" Ajax
(Draggable) qui contient l'éditeur proprement dit, que l'on aimerait bien
pouvoir positionner selon la place du composant dans la page, par exemple en
le mettant à droite du composant pour les composants situés plutot à gauche
de la page, et réciproquement. Dans ACS, quand on valide le controleur, le
composant est mis à jour sur la page.
Quleques mots sur le projet ACS :
- Vu par les développeurs de sites, l'objectif est de permettre une
réutilisation plus facile de mortceaux de squelettes, en isolant ces morceaux
(traductions et interfaces d'édition comprises) de manière à pouvoir à terme
les inclure dans n'importe quel squelette sans ou sans trop d'effets de
bords. Atteindre cet objectif nécessite de définir des composants, ou
des "noisettes" qui isolent html, css, traductions, et scripts proprement,
avec leur propre espace de nommage. ACS tente de faire ça à partir des
macanismes standard de SPIP, en s'interdisant de modifier le fonctionnement
du noyau. Actuellement, on en est au démonstrateur fonctionnel, assez
fonctionnel pour tourner en prod et en tests sur qq dizaines de sites, mais
pas encore assez pour fournir un "clickodrome tout pret" à l'utilisateur
final. Il y a dans la communauté SPIP de fins connaisseurs de SPIP qui
pourraient aisément apporter nombre d'améliorations et de simplifications
pour alléger le code d'ACS en utilisant mieux celui de l'API SPIP. Par
exemple, de futures versions de l'API SPIP "editer_auteurs" pourrait être
généralisée pour remplacer les "editer_admins" codés sur le même modèle dans
ACS.
Trolls:
- "A t'on encore besoin de SPIP avec la dernière version d'ACS ?" : OUI 
C'est un plugin SPIP, étroitement intégré, qui n'utilise que les points
d'entrée standard de SPIP. A ce jour, il s'est avéré compatible avec tous les
autres plugins testés. Cette application répond au désir de nombreux
utilisateurs de personnaliser leurs sites sans devoir pour autant apprendre
xhtml, css, javascript et remote scripting, php. Et elle permet aux
développeurs de se rapprocher du Graal du développeur: avoir des composants
logiciels réutilisables facilement. Et elle permet d'envisager autrement le
travail sur les squelettes, qui n'est plus lié aussi étroitement à celui sur
l'infographie. Est-ce ce dernier point qui crée des inquiétudes ? Pourtant,
c'est une approche qui va de soi : imagine t'on d'aller coder le xml
OpenDocument pour colorier un paragraphe dans un traitement de texte ??? A
nous, développeurs, de répondre à ce besoin dans l'esprit du libre, en
innovant, et en partageant largement.
- "y'a trop de choses dans ACS" : actuellement, il reste deux choses en trop,
qui seront supprimées : une esquisse de page listant les documents d'IMG (qui
aurait doublonné partiellement avec dw2), et une esquisse de système de log
des opérations des admins (qui pourrait faire l'objet d'un plugin spécifique,
séparé). Par contre, l'approche par composants d'ACS nécessite d'avoir tout
le reste, à savoir son clickodrome indépendant du squelette, son explorateur
des schemas/sources de pages, et son système de gestion de droits associé.
--
Daniel FAIVRE
Le Friday 25 July 2008 08:01:05 Fil, vous avez écrit :
Peux-tu expliquer pourquoi tu as éprouvé ce besoin ? Y a-t-il quelque
chose qu'on pourrait améliorer dans les crayons eux-mêmes, de façon
générique ?
On Fri, Jul 25, 2008 at 1:49 AM, <webmaster@geomaticien.com> wrote:
> Author: webmaster@geomaticien.com
> Date: Fri Jul 25 01:49:48 2008
> New Revision: 21690
>
> Log:
> Override of crayons for composants
>
> Added:
> _plugins_/_dev_/acs/action/crayons_html.php
>
> Added: _plugins_/_dev_/acs/action/crayons_html.php
> =========================================================================
>===== --- _plugins_/_dev_/acs/action/crayons_html.php (added)
> +++ _plugins_/_dev_/acs/action/crayons_html.php Fri Jul 25 01:49:48 2008
> @@ -0,0 +1,27 @@
> +<?php
> +# ACS
> +# (Plugin Spip)
> +# http://acs.geomaticien.org
> +#
> +# Copyright Daniel FAIVRE, 2007-2008
> +# Copyleft: licence GPL - Cf. LICENCES.txt
> +
> +// Override du crayons_html du plugin crayons
> +require_once(_DIR_PLUGIN_CRAYONS.'action/crayons_html.php');
> +
> +// On redéfinit cette fonction pour les composants
> +function action_crayons_html() {
> +
> + header("Content-Type: text/html;
> charset=".$GLOBALS['meta']['charset']); +
> + // CONTROLEUR
> + // on affiche le formulaire demande
> + include_spip('inc/crayons');
> + lang_select($GLOBALS['auteur_session']['lang']);
> + $return = affiche_controleur(_request('class'));
> + if (strpos(_request('class'), 'composant-') === false)
> + $return['$html'] = crayons_formulaire($return['$html']);
> + echo var2js($return);
> + exit;
> +}
> +?>
> \ No newline at end of file
>
> _______________________________________________
> Spip-zone-commit@rezo.net -
> http://listes.rezo.net/mailman/listinfo/spip-zone-commit