espace public renvoie Uncaught TypeError: spipConfig.core is undefined #4

Closed
opened 7 days ago by touti · 6 comments
touti commented 7 days ago
Collaborator

SPIP4.2.2 + selecteurgenerique v2.0.0

avec dans prefixplugin_options.php

define('_SELECTEUR_GENERIQUE_ACTIVER_PUBLIC', true);

Pour reproduire, copie dans une page publique des tests de selecteurs du fichier prive/squelettes/contenu/tester_selecteur_generique.html

La console JS renvoie

Uncaught TypeError: spipConfig.core is undefined

https://git.spip.net/spip-contrib-extensions/selecteur_generique/src/branch/master/javascript/SelecteurGenerique.js#L10

const api=(spipConfig.core.test_espace_prive||false)?'../selecteur.api/':'selecteur.api/';

Sans savoir où est défini spipConfig.core, si on change pour
const api = '../selecteur.api/';

cela refait fonctionner la démo publique des inputs.

Merci !

SPIP4.2.2 + selecteurgenerique v2.0.0 avec dans prefixplugin_options.php ``` define('_SELECTEUR_GENERIQUE_ACTIVER_PUBLIC', true); ``` Pour reproduire, copie dans une page publique des tests de selecteurs du fichier prive/squelettes/contenu/tester_selecteur_generique.html La console JS renvoie Uncaught TypeError: spipConfig.core is undefined https://git.spip.net/spip-contrib-extensions/selecteur_generique/src/branch/master/javascript/SelecteurGenerique.js#L10 `const api=(spipConfig.core.test_espace_prive||false)?'../selecteur.api/':'selecteur.api/';` Sans savoir où est défini spipConfig.core, si on change pour `const api = '../selecteur.api/';` cela refait fonctionner la démo publique des inputs. Merci !
Collaborator

Effectivement je n’ai pas testé dans l’espace public.
Il y a quelques trucs à corriger peut être.
Par ailleurs, l’autorisation par défaut de l’API limite à l’espace privé.

On doit pouvoir corriger de la sorte.

- const api=(spipConfig.core.test_espace_prive || false) ? '../selecteur.api/' : 'selecteur.api/';
+ const api=(spipConfig?.core?.test_espace_prive || false) ? '../selecteur.api/' : 'selecteur.api/';

C’est aussi un problème de SPIP qui n’envoie pas spipConfig dans l’espace public.
Voir spip/spip#4531 notamment.

Effectivement je n’ai pas testé dans l’espace public. Il y a quelques trucs à corriger peut être. Par ailleurs, l’autorisation par défaut de l’API limite à l’espace privé. On doit pouvoir corriger de la sorte. ```diff - const api=(spipConfig.core.test_espace_prive || false) ? '../selecteur.api/' : 'selecteur.api/'; + const api=(spipConfig?.core?.test_espace_prive || false) ? '../selecteur.api/' : 'selecteur.api/'; ``` C’est aussi un problème de SPIP qui n’envoie pas `spipConfig` dans l’espace public. Voir spip/spip#4531 notamment.
marcimat referenced this issue from a commit 6 days ago
Collaborator

Hop! C’est corrigé sur master.

Hop! C’est corrigé sur master.
touti commented 6 days ago
Poster
Collaborator

Ok, ça fonctionne et prend bien en charge l'autorisation (ou pas) dans l'espace public.

Cependant, mon fichier selecteurs/patates cible un champ patates de la table legumes

l'autorisation demandée pour afficher les patates contenant bleu
https:/…/selecteur.api/patates?php=oui&objets=legumes&q=bleu

doit être

function autoriser_patate_autocomplete_dist(string $faire, string $type, $id, array $qui, array $opt): bool {
	return true;
}

je n'ai pas cherché pourquoi le s est refusé … mais autoriser_patates_autocomplete_dist ne fonctionnait pas.

Peut-être sauras-tu m'expliquer et éventuellement je modifierai le readme.

Actuellement

L’autorisation est surchargeable notamment par sélecteur, tel que, pour un selecteurs/demo.html ou selecteurs/demo.php, l’autorisation autoriser('autocomplete', 'demo') sera appelée, et donc la fonction autoriser_demo_autocomplete_dist si elle existe.

Ok, ça fonctionne et prend bien en charge l'autorisation (ou pas) dans l'espace public. Cependant, mon fichier selecteurs/patates cible un champ patates de la table legumes l'autorisation demandée pour afficher les patates contenant bleu https:/…/selecteur.api/patates?php=oui&objets=legumes&q=bleu doit être ``` function autoriser_patate_autocomplete_dist(string $faire, string $type, $id, array $qui, array $opt): bool { return true; } ``` je n'ai pas cherché pourquoi le s est refusé … mais autoriser_patate**s**_autocomplete_dist ne fonctionnait pas. Peut-être sauras-tu m'expliquer et éventuellement je modifierai le readme. Actuellement > L’autorisation est surchargeable notamment par sélecteur, tel que, pour un selecteurs/demo.html ou selecteurs/demo.php, l’autorisation autoriser('autocomplete', 'demo') sera appelée, et donc la fonction autoriser_demo_autocomplete_dist si elle existe.
Collaborator

Les autorisations sont de la forme autoriser_{type}_{faire}_...

Par défaut SPIP normalise le champ $type comme un type d’objet dans SPIP (via la fonction objet_type notamment), de sorte que si tu passes patates, ça devient patate (sans s).

Si tu ne veux pas ce comportement, il faut préfixer d’un souligner : _patates restera patates (sans le premier souligné). Par contre tous les soulignés intérieurs sont supprimés quand même, tel que _mes_patates deviendra mespatates.

https://programmer.spip.net/Processus-de-la-fonction-autoriser

Les autorisations sont de la forme `autoriser_{type}_{faire}_...` Par défaut SPIP normalise le champ `$type` comme un `type` d’objet dans SPIP (via la fonction `objet_type` notamment), de sorte que si tu passes `patates`, ça devient `patate` (sans s). Si tu ne veux pas ce comportement, il faut préfixer d’un souligner : `_patates` restera `patates` (sans le premier souligné). Par contre tous les soulignés intérieurs sont supprimés quand même, tel que `_mes_patates` deviendra `mespatates`. https://programmer.spip.net/Processus-de-la-fonction-autoriser
touti commented 6 days ago
Poster
Collaborator

Ok, on peut fermer alors :)

Ok, on peut fermer alors :)
Collaborator

D’akodak

D’akodak
marcimat closed this issue 6 days ago
Sign in to join this conversation.
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: spip-contrib-extensions/selecteur_generique#4
Loading…
There is no content yet.