[SPIP Zone] Crayons dans l'espace privé - patch

Le contrôleur d'un crayon est TOUJOURS appellé depuis l'espace public, même
pour un crayon de l'espace privé. Cf. crayons.js :

// le prototype configuration de Crayons
$.prototype.cfgCrayons = function (options) {
  this.url_crayons_html = options['dir_racine']+'spip.php?action=crayons_html';

En conséquence, le contrôleur ne peut pas savoir s'il va renvoyer du html à un
appel Ajax d'un crayon "public" ou d'un crayon "privé", ce qui pose un
sérieux problème à tout contrôleur qui a besoin d'accéder à une ressource
fichier (image, dossier, fichier, ...).

Il y a deux solutions :

1) Modif mineure :de crayons.js, ligne 118
        'self': configCrayons.self,
+ 'dir_racine' : configCrayons.dir_racine
      };

2) Modif de crayons.js, ligne 8 :
  //this.url_crayons_html =
options['dir_racine']+'spip.php?action=crayons_html';
  this.url_crayons_html = '?action=crayons_html';

La solution 2 me semble plus propre, mieux adaptée pour étendre
progressivement les crayons dans la partie privée. Tout contrôleur qui
utilise ensuite des mécanismes standards de spip peut ensuite utiliser des
variables telles que _DIR_RACINE ou _DIR_RESTREINT pour accéder à des
ressources spécifiques. Tout contrôleur bien écrit pourra alors être
compatible espace privé et public à la fois.
Inconvénient : si un contrôleur a défini des chemins en dur depuis l'espace
public, il ne marchera plus.

La solution 1 est plus légère, sans risque d'effets de bord, mais ne sera
adaptée qu'à des contrôleurs spécifiques exploitant ce nouveau paramètre.

Qu'en pensez-vous ?

Le contrôleur d'un crayon est TOUJOURS appellé depuis l'espace public, même
pour un crayon de l'espace privé. Cf. crayons.js :

La 2) paraît mieux en effet, mais n'oublie pas que c'est récent qu'on
puisse déclencher des ?action= au niveau de l'espace privé

-- Fil

Le Tuesday 14 April 2009 17:04:28 Fil, vous avez écrit :

> Le contrôleur d'un crayon est TOUJOURS appellé depuis l'espace public,
> même pour un crayon de l'espace privé. Cf. crayons.js :

La 2) paraît mieux en effet, mais n'oublie pas que c'est récent qu'on
puisse déclencher des ?action= au niveau de l'espace privé

-- Fil

C'est corrigé avec la solution 2, avec un commentaire détaillé du commit pour
expliquer le pourquoi et les conséquences de ce petit changement qui ouvre
désormais la porte aux crayons "mixtes" utilisables aussi bien dans la partie
privée que dans la partie publique.

--
Daniel FAIVRE