[spip-dev] Modèles, inclusion, connect et emb...

Bonjour,

sur Contrib (http://contrib.spip.net/Plugin-Modeles-media#forum469957) un utilisisateur m’a transmis le problème suivant.

Il a plusieurs sites en mutualisation. Sur le site B, il a configuré un accès sql au site A. Depuis le site B, il affiche un article du site A (en indiquant la connexion au site A dans sa boucle).

Tout fonctionne à peu près sauf certains document. Les modèles doc et img fonctionnent bien mais pas le modèle emb. Tout cela est un problème d’inclusion et de transmission de connect / la connexion SQL à utiliser.

Le problème se posait de manière similaire avec les modèles media et j’ai finalement pu le fixer. Ceci dit, ca m’a poussé à regarder d’un peu plus près la transmission du paramètre connect dans le cas des inclusions.

Pour rappel, en spip 3, lorsqu’un modèle est appelé via propre(), on lui transmets la connexion de la boucle englobante ainsi que l’environnement de la page (cf. http://www.spip.net/fr_article5427.html#nh12).

Par contre, si l’on passe par la balise #MODELE dans un squelette, la connexion de la balise parente est bien transmise mais pas l’environement (y a-t-il une raison à ce que cela soit difféent ? on pourrait au mois autoriser le flag env dans l’appel de #MODELE).

Pour les inclusions, et d’après http://programmer3.spip.net/Inclure-suivant-une-connexion, la connexion n’est pas transmise sauf si on le demande expressement :

<INCLURE{fond=derniers_articles}{connect}>
[(#INCLURE{fond=derniers_articles, connect})]

Dans les faits, après avoir regarder le code de la balise #INCLURE (http://core.spip.org/projects/spip/repository/entry/spip/ecrire/public/balises.php#L1876), aucune inclusion n’est jamais transmise.

Pour , d’après calculer_inclure() (http://core.spip.org/projects/spip/repository/entry/spip/ecrire/public/balises.php#L1876), on transmets comme connexion _request(‘connect’).

Pour en revenir au modèle emb, le problème vient du recours à #INCLURE qui ne transmets pas la connexion. On peut corriger cela à l’heure actuelle en remplacant

[(#INCLURE
{fond=modeles/emb_[(#EXTENSION)]}{id=#ID_DOCUMENT}{env}{emb=’ '}
)]

par

<INCLURE
{fond=modeles/emb_#EXTENSION, id=#ID_DOCUMENT, env, emb=’ ', connect}>

Voici quelques autres suggestions/propositions/questions :

  • Corriger #INCLURE pour que l’on puisse lui demander de transmettre la connexion comme avec
  • Permettre de transmettre l’environnement avec #MODELE en y autorisant le flag env.

Bien cordialement

Joseph

Création de 3 tickets :

Je suis l'utilisateur qui a soulevé le problème auprès de Joseph
Les choses ont été réglées en ce qui concerne les modèles media qui renvoient maintenant bien, depuis le site "client", les images ou les documents du site "maitre"

les choses ne sont pour autant pas complètement réglées pour le modèle doc

CONTEXTE