Fonctionnement des options mediabox.lity... marche pas :-(

Bonjour
Pas moyen de faire fonctionner les options de la mediabox.

J’appelle la modalbox lity dans un squelette :

#SET{adresse, #URL_PAGE{ma_page }
#SET{option, iframe : false}
<button onclick="$.modalbox('#GET{adresse}', '#GET{option}')"></button>

Les options semblent totalement ignorées. J’ai testé plusieurs valeurs (oui, non, true, 0, 1), avec et sans guillemets, et de nombreuses options, sans résultat.

L’exécution du squelette semble correcte, et me renvoie le code :

<button onclick="$.modalbox('https://www.monsite/ma_page', 'iframe : false')"></button>

Mais la page s’ouvre TOUJOURS dans une iframe…

Même souci avec les autres options…

Merci de vos idées

Moi, j’ai ça sur un site :

<a href="#GET{adresse}" onclick="if (jQuery.modalbox) {
											jQuery.modalbox('#GET{adresse}?var_zajax=content');
											return false;
										}" title="Contacter">contact</a>

Merci de la réponse.
J’avais ça avec la bibliothèque ‹ colorbox ›. Je vais re-tester, mais j’aimerais bien que ça marche ‹ à la spip › :slight_smile:
Je vous tiens au courant

C’est un SPIP en 4.4.13 :wink: (avec zcore, d’où le ?var_zajax=content)

Re testé, ça ne marche pas.
En épluchant la doc d’origine de lity, j’ai trouvé les événements

lity:close et lity:remove

qui devraient faire ce que je cherche.
Problème :
ajaxReload("##ID_ARTICLE")
dans la fonction ne fonctionne pas (j’ai vérifié, la fonction est bien appelée) alors qu’un lien avec
onclick =" ajaxReload('##ID_ARTICLE')" marche nickel…
(oui, j’ai bien une <div id = "#ID_ARTICLE">)
<a href=""onclick="ajaxReload('##ID_ARTICLE');"># id article</a> :grinning:

‹ $(document).on(‹ lity:remove ›, function(event, instance) { ajaxReload(« ##ID_ARTICLE ») ; }); ›:worried:

Dans compteur ya ça

onclick="if (jQuery.modalbox) {jQuery.modalbox('[(#URL_ECRIRE{reservation_visualiser,[(#VAL{evenements_reservations}|param_low_sec{#GET{args}})]}|parametre_url{var_zajax,contenu})]');return false;}">

Dans Inscription3 :

[(#SET{js,[
  onclick="if (jQuery.modalbox) {jQuery.modalbox('(#URL_ARTICLE
   |parametre_url{var_zajax,#PLUGIN{Zpip}|?{content,contenu}})');return false;}"
]})]

Dans objet_locations :

onclick="if (jQuery.modalbox) {jQuery.modalbox('[(#URL_ECRIRE{locations_visualiser,[(#VAL{locations_visualiser}|param_low_sec{#GET{args}})]}|parametre_url{var_zajax,contenu})]');return false;}">

Tester if (jQuery.modalbox) avant semble une bonne idée, et ya pas de 2eme argument…
Et sinon pas mal de plugins utilisent modalboxload :

dans album

onclick="jQuery.modalboxload('[(#URL_ECRIRE{modale_albums_choisir,var_zajax=contenu&selectfunc=mediaselect#GET{mod_fn}_#ENV{nom}[&media=(#ENV{media})]})]',{autoResize: true});"

dans saisies

onclick="jQuery.modalboxload(
'[(#URL_ECRIRE{popin-choisir_document,var_zajax=contenu&selectfunc=mediaselect_#ENV{nom}&#GET{id_table_objet}=#ENV{id_objet}[&media=(#ENV{media})][&extension=(#ENV{extension})]})]',
{autoResize: true});"

dans inscription3

[(#SET{js,
  [onclick="if (jQuery.modalbox) {jQuery.modalbox('(#URL_ARTICLE
      |parametre_url{var_zajax,#PLUGIN{Zpip}|?{content,contenu}})');return false;}"]})]

Ça vaudrait le coup d’essayer. Là ya parfois un argument {autoResize: true}.

@JLuc
J’avance, trouvé comment indiquer les options (merci :slight_smile: )mais je trouve des incohérences:

$.modalbox(
'#GET{adresse}',
{onClose: function(){alert('#ID_ARTICLE');}});

Le fonctionnement attendu est OK

$.modalbox(
'#GET{adresse}',
{onClose: function(){ajaxReload('#ID_ARTICLE');}});

ajaxReload inopérant.
J’ai bien sûr testé

$.modalbox(
'#GET{adresse}',
{ajaxReloadOnClose: '#ID_ARTICLE'});

Mais le bloc ajax n’est pas rechargé à la fermeture.
Idem si je délocalise dans une fonction externe: la fonction est appelée par onClose, mais Ajax n’opère pas. La même fonction appelée par un bouton est OK.

Comment as tu fait pour le onclick finalement ?

J’ai simplement mis

<button onclick="$.modalbox(
'#GET{adresse}',
{onClose: function(){ma_fonction();}});"></button>

Tu pourrais essayer avec l’attribut associé data-box-ajaxreload-on-close cf MediaBox - SPIP-Contrib

Et sinon dans les plugins, je trouve moins de référence mais un

onClose: function (dialog) {jQuery(casedoc).ajaxReload();}

À part ça, je trouve pas génial d’avoir un entier #ID_ARTICLE en identifiant de bloc. Un préfixe serait bienvenu. Et au début tu avais mis ##ID_ARTICLE.

J’ai remarqué d’autres comportements aberrants (site de test, nouveau spip)
Du coup , ré-install complète de SPIP, et toutes les solutions testées auparavant fonctionnent…
à noter :

class="popin"

Permet d’éviter l’ouverture en Iframe, et donc de profiter des styles et des scripts déjà chargés. Très utile dans mon cas.
Merci de vos aides

2 « J'aime »