Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Bonjour
Je mets à jour un vieux plugin pour qu'il marche avec Dotclear 2.6. Côté admin, j'ai deux onglets :
- le premier avec une liste de billets
- le second avec une carte Google Maps
Le premier onglet est activé par défaut, et le second est donc caché. Si je clique sur le lien pour afficher le second onglet, la carte ne s'affiche pas correctement, apparemment parce qu'elle a été initialisée dans l'onglet caché en display:none.
Si toutefois je rafraîchis la page alors que l'onglet contenant la carte est actif, il n'y a plus de problème d'affichage, et passer d'un onglet à l'autre ne casse rien.
Je cherche donc à intercepter un évènement lorsque un onglet devient actif, afin de réinitialiser la carte. Connaissez-vous un moyen pour faire cela ?
Merci tout plein pour toute suggestion :)
Hors ligne
Je ne suis pas du tout familier de la notion et de la gestion des onglets dans l'admin et questionne peut-être naïvement : Le "display:none" est sur l'onglet ou sur la carte ?
Le B.A.BA : https://abc.dotaddict.org
La doc DC2 : https://fr.dotclear.org/documentation/2.0
Mes extensions : https://www.mirovinben.fr/blog/index.ph … pluginsDC2
Mes marqueurs de template : https://www.mirovinben.fr/blog/index.php?post/id3553
Hors ligne
Le display:none est sur le bloc div class=""multipart", qui contient la carte.
Avec l'ancienne version du script des onglets, je pouvais intercepter le clic sur le lien qui affiche l'onglet masqué et ainsi rafraîchir la carte, mais maintenant il me semble que cet évènement n'est plus propagé
Hors ligne
Salut Philippe, je veux bien le code de plugin si possible pour que j'essaie de reproduire le problème que tu as rencontré. C'est moi qui ai commis le code de jquery.pageTabs.js ! :-)
Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !
Présentez vos photos simplement avec Phyxo !
Hors ligne
Bonjour nikrou
Le plugin est ici : http://www.dissitou.org/public/myGmaps/ … ps-0.8.zip
Pour voir le bug il faut cliquer sur le menu Blog > Carte Google : les deux onglets du plugin sont "Éléments de carte" et "Paramètres", ce dernier étant caché.
Si tu cliques sur Paramètres, la carte ne s'affiche pas correctement. Si tu actualises la page, tout remarche, ensuite le passage d'un onglet à l'autre fonctionne bien. Si tu vas ailleurs dans l'admin et que tu reviens sur la page du plugin, le problème survient à nouveau.
Hors ligne
J'arrive à reproduire le problème.
Pour le résoudre, il te suffit d'encapsuler la création de la carte dans le callback de l'appel de l'onglet concerné. En clair, tu mets la création de la carte dans le code suivant :
$('#settings').onetabload(function() {
// la création de la carte
});
Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !
Présentez vos photos simplement avec Phyxo !
Hors ligne
\o/\o/\o/
C'est exactement ce qu'il me fallait comprendre, merci beaucoup :)
Hors ligne
\o/\o/\o/
C'est exactement ce qu'il me fallait comprendre, merci beaucoup :)
Hé hé. Bon j'avoue c'est un peu tordu comme truc ! :-)
Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !
Présentez vos photos simplement avec Phyxo !
Hors ligne
Bonjour
J'ai eu le même problème pour afficher une carte GoogleMaps dans un onglet non actif.
J'ai fait plus "bourrin" : la fonction d'initialisation de la carte commence par rendre l'onglet actif, crée la carte qui va bien et on remet dans l'état initial.
La solution proposée dans le callback ne va t'elle pas créer la carte plusieurs fois ? Question de novice je précise....
Welsh
Hors ligne
La solution proposée dans le callback ne va t'elle pas créer la carte plusieurs fois ? Question de novice je précise....
Welsh
Non. Le code n'est exécuté qu'une seule fois comme le laisse supposer le nom de la fonction onetabload
Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !
Présentez vos photos simplement avec Phyxo !
Hors ligne
Pour préciser ce que dit nikrou, dans mon plugin la carte est initialisée à l'ouverture de la page d'administration, même si elle est cachée dans un onglet.
Je sers donc du callback seulement pour la recentrer et lui faire adopter la taille de son conteneur une fois qu'il est visible ;)
Hors ligne
J'ai encore un petit souci avec ce script : en effet, j'ai deux plugins (cartes google et billets connexes) qui ajoutent des éléments dans la page d'édition d'un billet, sous le champ notes.
Lorsque des éléments sont ajoutés ou supprimés, la page est redirigée, et j'essaie d'ajouter une ancre vers le bloc créé par le plugin pour ajouter un message de succès. Par exemple je modifie l'url de redirection vers :
/dotclear/admin/post.php?id=51#gmap-area
mais ça ne fonctionne pas, le focus reste sur #edit-entry
Cela fonctionnait bien avant la 2.6 de dotclear. Il y a peut-être quelque chose que j'ai loupé ?
Edit : si je tape /dotclear/admin/post.php?id=51#gmap-area dans la barre d'adresse, je suis bien dirigé vers l'ancre dans la page
Dernière modification par Philippe (2014-03-13 08:38:04)
Hors ligne
Salut Philippe. Comment je peux tester pour reproduire et t'aider ?
Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !
Présentez vos photos simplement avec Phyxo !
Hors ligne
Pour reproduire le problème, il faut installer le plugin relatedEntries, et ajouter des billets connexes à un billet. Le fichier posts.php du plugin enregistre alors les billets connexes (sous forme de metas), puis redirige vers ledit billet avec le code :
http::redirect(DC_ADMIN_URL.'post.php?id='.$id.'&add=1#relatedEntries-area');
Tout marche bien, sauf que le focus est donné à l'onglet #edit-entry mais pas à #relatedEntries-area
Hors ligne
@nikrou : as-tu pu regarder ce que je faisais de travers ?
Hors ligne
@nikrou : as-tu pu regarder ce que je faisais de travers ?
T'aurais dû me relancer car j'ai oublié. Alzheimer tout ça ! :-) Je regarde.
Edit :
Bon je viens de regarder. Malheureusement, de base tu ne pourras rien faire. Le plugin écrit par Bibi (jquery.pageTabs) capture l'ancre et colle la page en haut :
https://bitbucket.org/dotclear/dotclear … ault#cl-18
C'était pour corriger le problème de la page about:config avec les ancres et les onglets !
Tu peux peut-être t'en sortir en faisant un scroll jusqu'à ton ancre.
Dernière modification par nikrou (2014-07-07 18:31:30)
Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !
Présentez vos photos simplement avec Phyxo !
Hors ligne
Tu peux peut-être t'en sortir en faisant un scroll jusqu'à ton ancre.
Ce serait donc une fonction js à rajouter dans le fichier admin.php du plugin, je vais voir comment ne le déclencher que lors d'un enregistrement par le plugin...
Aurais-tu un exemple dont je pourrais m'inspirer ?
Hors ligne
C'était pour corriger le problème de la page about:config avec les ancres et les onglets !
Et il n'y avait pas moyen de limiter le fix à ce plugin ?
:P
Hors ligne
nikrou a écrit :C'était pour corriger le problème de la page about:config avec les ancres et les onglets !
Et il n'y avait pas moyen de limiter le fix à ce plugin ?
:P
Sûrement mais je dois avouer que je n'ai pas creusé. Si tu en as envie, le plugin est testé unitairement, donc on peut modifier pour essayer de reproduire le comportement attendu sans casser autre chose.
Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !
Présentez vos photos simplement avec Phyxo !
Hors ligne
Vous n'êtes pas identifié(e).