[SPIP Zone] skeleditor sur une installation mutualisée

Bonjour,

nous avons pas mal galéré pour faire fonctionner l'éditeur de squelettes (skeleditor) sur une installation mutualisée.

Rien ne s'affichait dans l'Espace Privé, le répertoire squelettes/ était introuvable, les téléversements, éditions, tout était cassé.

Comme expliqué ici :

Nos sites sont sous repertoire_spip/sites/mon_instance/ où chez nous, mon_instance/ est un lien symbolique, mais ça ne change rien.

À force de chercher, on a mis ça dans le fichier mes_options.php de l'instance où nous voulions faire fonctionner skeleditor :

$dir_site = sprintf("sites/%s/", $_SERVER['SERVER_NAME']);
if (test_espace_prive()) {
  define('_DIR_SITE', "../$dir_site");
} else {
  define('_DIR_SITE', $dir_site);
}

Moyennant quoi, la constante '_DIR_SITE' continent toujours le répertoire de l'instance (repertoire_spip/sites/mon_instance/), mais relatif au répertoire courant (sites/mon_instance). Et ça fait tomber le tout en marche...

...m'enfin ça ferait tomber le tout en marche si on n'avait pas patché un peu le plugin (sinon ça ne serait pas drôle).

J'ai joint le diff. Et je l'explique ici. La fonction "skeleditor_path_editable()" renvoie un $path == '' si jamais l'appel à la fonction de l'API sous_repertoire() renvoie "". Du coup, "" est évalué à true le le path est mauvais jusqu'au bout.

La modification fait en sorte que si sous_repertoire() renvoie "", skeleditor_path_editable() renvoie null et soit évalué comme faux.

Si la modification vous va, je peux :
* contribuer la modif des mes_options.php ici :

* commit la modif de skeleditor via SVN (je dois encore avoir des accès).

Qu'en dites-vous ?
--
Camille

skeleditor.diff (796 Bytes)

Le 16/11/2018 à 13:15, Camille Sauvage a écrit :

À force de chercher, on a mis ça dans le fichier mes_options.php de l'instance où nous voulions faire fonctionner skeleditor :

$dir_site = sprintf("sites/%s/", $_SERVER['SERVER_NAME']);
if (test_espace_prive()) {
define('_DIR_SITE', "../$dir_site");
} else {
define('_DIR_SITE', $dir_site);
}

Ce n'est pas dans le htaccess qu'on peut faire ça ?

RewriteEngine On
RewriteBase /mon_instance

Salut Luis,

Ce n'est pas dans le htaccess qu'on peut faire ça ?

RewriteEngine On
RewriteBase /mon_instance

ce que tu propose marche pour mod_rewrite et je ne sais pas si tu peux solutionner le problème de cette façon. Mais ce qui nous intéresse ici c'est d'avoir un chemin relatif dans la constante _DIR_SITE qui fonctionne que tu sois dans l'Espace Privé ainsi que dans l'Espace Public (si on est dans ecrire/ il faut rajouter un "../"). Et pour définir une constante PHP je ne pense pas que tu puisse le faire avec la conf d'Apache.

C'est la méthode la plus simple que j'aie trouvée. Et vu qu'on est en mutualisé, je vais ajouter ces lignes dans les mes_options.php de SPIP (mutualisé à toutes mes instances).
--
Camille

Camille Sauvage a écrit le 16/11/2018 à 13:15 :

Bonjour,

nous avons pas mal galéré pour faire fonctionner l'éditeur de squelettes (skeleditor) sur une installation mutualisée.

Pour ma part, je m'en sers depuis des années (SPIP 2.1 à 3.2) avec le "plugins de mutualisation facile" et je n'ai jamais eu aucun problème.

Mes 2 sous

--
RealET

Le 16/11/2018 à 16:09, RealET a écrit :

Camille Sauvage a écrit le 16/11/2018 à 13:15 :

Bonjour,

nous avons pas mal galéré pour faire fonctionner l'éditeur de squelettes (skeleditor) sur une installation mutualisée.

Pour ma part, je m'en sers depuis des années (SPIP 2.1 à 3.2) avec le "plugins de mutualisation facile" et je n'ai jamais eu aucun problème.

Mes 2 sous

idem ........

--

Site: https://spipfactory.fr/
Plateforme d’hébergement autogéré en association de loi 1901, mutualisation sous habillage Escal en SPIP 3.2.1 SVN [24137] + écran de sécurité 1.3.8

Courriel: team@spipfactory.fr
IRC: https://webchat.freenode.net/?channels=%23%23spipfactory

En répondant a ce courriel vous acceptez implicitement la diffusion, l'échange de la conversation, sauf avis contraire clairement exprimé.

Hello RealET,

Pour ma part, je m'en sers depuis des années (SPIP 2.1 à 3.2) avec le "plugins de mutualisation facile" et je n'ai jamais eu aucun problème.

Mes 2 sous

Nous on mutualise (une soixantaine de sites), mais à la main, sans le plugin.

J'imagine que "mutualisation" doit plus ou moins définir correctement la constante _DIR_SITE ou une autre des constantes utilisées par "skeleditor". Mais tel quel, ça ne fonctionnait pas chez nous et l'ensemble des modifs : patch du plugin et définition de _DIR_SITE à mano a réglé le problème.

Quoi qu'il arrive, dans skeleditor/inc/skeleditor.php:64, on teste la sortie de la fonction qu'on a patchée (skeleditor_path_editable) et que c'est bien un test booléen qui est effectué sur une chaîne. Il vaut donc forcément TRUE, même lorsque le répertoire n'est pas éditable.

Je pousse donc un peu pour faire accepter ma contrib qui, même si elle ne résous rien chez toi, assainit à mon sens le code (et ça va nous éviter de maintenir un patch, j'avoue :slight_smile:
--
Camille

Le 16/11/2018 à 16:28, Camille Sauvage a écrit :

Hello RealET,

Pour ma part, je m'en sers depuis des années (SPIP 2.1 à 3.2) avec le "plugins de mutualisation facile" et je n'ai jamais eu aucun problème.

Mes 2 sous

Nous on mutualise (une soixantaine de sites), mais à la main, sans le plugin.

J'imagine que "mutualisation" doit plus ou moins définir correctement la constante _DIR_SITE ou une autre des constantes utilisées par "skeleditor". Mais tel quel, ça ne fonctionnait pas chez nous et l'ensemble des modifs : patch du plugin et définition de _DIR_SITE à mano a réglé le problème.

Quoi qu'il arrive, dans skeleditor/inc/skeleditor.php:64, on teste la sortie de la fonction qu'on a patchée (skeleditor_path_editable) et que c'est bien un test booléen qui est effectué sur une chaîne. Il vaut donc forcément TRUE, même lorsque le répertoire n'est pas éditable.

Je pousse donc un peu pour faire accepter ma contrib qui, même si elle ne résous rien chez toi, assainit à mon sens le code (et ça va nous éviter de maintenir un patch, j'avoue :slight_smile:
--
Camille
----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone

Et sinon vous avez patché quoi d'autre ? vous êtes partie de la version 3 (du trunk) ou de l'ancienne version 2

la a priori on est sur la v3 du plugin , il est normalement plus facilement personnalisable suivant les besoins (pas eut de retour donc ça marche ^^ )

Je l'ai testé sur une mutu locale (mon espace de dev) en mettant a jour codemirror , j'ai pas eut de soucis non plus en fait…

--
Bonne journée
Arnaud B. (Mist. GraphX)

Et sinon vous avez patché quoi d'autre ? vous êtes partie de la version 3 (du trunk) ou de l'ancienne version 2

Je suis parti de cette version, la 3. Je n'ai rien patché de plus que ce que j'ai envoyé dans le diff précédemment.

la a priori on est sur la v3 du plugin , il est normalement plus facilement personnalisable suivant les besoins (pas eut de retour donc ça marche ^^ )

Sauf pour nous, et on est raisonnablement exotiques niveau config :-/

Je l'ai testé sur une mutu locale (mon espace de dev) en mettant a jour codemirror , j'ai pas eut de soucis non plus en fait…

Je ne sais pas quoi dire...
--
Camille

Bonjour Arnaud,

Et sinon vous avez patché quoi d'autre ? vous êtes partie de la version 3 (du trunk) ou de l'ancienne version 2

Je suis parti de la 3.0.2 (je crois, je viens de mettre à jour).

la a priori on est sur la v3 du plugin , il est normalement plus facilement personnalisable suivant les besoins (pas eut de retour donc ça marche ^^ )

Il y a eu un retour. Le mien.

Je l'ai testé sur une mutu locale (mon espace de dev) en mettant a jour codemirror , j'ai pas eut de soucis non plus en fait…

Au final, pour ne pas galérer avec les futures MàJ de skeleditor, j'ai remis le plugin dans son état original et le mes_options.php qui fait tout tomber en marche contient :

$dir_site = sprintf("sites/%s/", $_SERVER['SERVER_NAME']);
if (test_espace_prive()) {
  define('_DIR_SITE', "../$dir_site");
} else {
  define('_DIR_SITE', $dir_site);
}

if (strncmp($GLOBALS['dossier_squelettes'],
      '../', strlen('../')) == 0)
  $GLOBALS['dossier_squelettes']
      = substr($GLOBALS['dossier_squelettes'], strlen('../'));

sinon, creer_chemin() renvoie un chemin de squelette qui commence par "../../" et ça casse tout (du moins chez moi, j'ai compris).

Voili voilou, je ne vous embête plus avec skeleditor.
--
Camille

Salut Camille

Désolé du temps de réponse, et merci pour ton retour ^^

sinon, creer_chemin() renvoie un chemin de squelette qui commence par "../../" et ça casse tout (du moins chez moi, j'ai compris).

Voili voilou, je ne vous embête plus avec skeleditor.

tu embête pas ^^

si tu pense que ça améliore la fiabilité de la recherche des chemins en tout cas, tu peut commiter tes évolutions la zone est fait pour ça, je ne suis pas auteur du plugin, je faisais juste un retour sur mon utilisation, et rapport a l'environnement mutu, savoir si ça fonctionnait avec la version précédente ? est-ce quelque chose d'introduit par cette version ? c'était plus ça le but/sens de ma réponse.

--
Bonne journée
Arnaud B. (Mist. GraphX)

Salut Arnaud,

Désolé du temps de réponse, et merci pour ton retour ^^

je ne te jetterai pas la pierre :slight_smile:

si tu pense que ça améliore la fiabilité de la recherche des chemins en tout cas, tu peut commiter tes évolutions la zone est fait pour ça, je ne suis pas auteur du plugin, je faisais juste un retour sur mon utilisation, et rapport a l'environnement mutu, savoir si ça fonctionnait avec la version précédente ? est-ce quelque chose d'introduit par cette version ? c'était plus ça le but/sens de ma réponse.

Pour le dernier point, ça a eu marché sur notre installation, mais je ne me souviens plus de quelle version du plugin on avait et surtout quelle version de SPIP. On a mis longtemps avant de décoller de la 3.0... Mais je pense que c'était cassé chez nous depuis un bail.

Même si j'ai trouvé le contournement... qui ne me plaît qu'à moitié mais qui fait le job quand même... je peux commit ma modif qui est minime et assainit légèrement le code.

Merci pour ta réponse en tout cas.
--
Camille