Bonjour,
J'ai un petit souci avec le site que je crée. La colonne de gauche est composée de plusieurs panneaux indépendants ("widgets", dans la suite). Via jQuery UI ils se déplacent les uns par rapport aux autres (.sortable()), via l'ajout d'une classe 'hidden' (avec un display : none) ils disparaissent visuellement et via un slideToggle, leur contenu se baisse ou se lève en cliquant sur la barre de titre du widget. Inspiré de iGoogle, ça marche et c'est plutôt cool.
L'étape suivante est donc de sauvegarder leur état pour pas qu'il soit réinitialisé à chaque changement de page. Via JSON j'envoie donc plusieurs éléments à chaque modification d'un widget à une table mysql : le membre_id de celui qui a cliqué, l'ordre du widget dans la colonne via un index() et leur état : 0 1 ou 2 selon qu'il soit caché entièrement, replié, ou ouvert.
La position du widget dans la colonne est bien sauvegardée.
Les états 0 et 2 sont bien sauvegardés également. Mais pour l'état 1, pas moyen. Et j'ai du mal à comprendre pourquoi.
Structure d'un widget :
La classe fermeture dans le h3 sert à insérer une petite croix pour fermer le widget. Au clic, ça ajoute une classe "hidden" à la div classe "widget". De fait, le widget n'apparait plus.
Au clic sur le h3, ça déclenche une fonction slideToggle concernant la div de classe widget_contenu.
Et donc en cliquant/glissant sur le h3, ça déplace le widget là où on veut (au sein de la colonne).
Voilà pour le widget.
J'ai ensuite une fonction updateWidget qui dit notamment :
Dans la suite, elle détermine l'id du widget puis sa position, met le tout dans un tableau et le balance au serveur. Cette partie fonctionne sans souci, et les données sont correctement traitées. C'est juste l'info état qui prend la valeur 0 ou 2, mais jamais 1.
C'est donc ma deuxième condition qui ne marche pas alors que quand je la teste via firebug, elle m'indique bien true ou false quand il faut.
Si quelqu'un a une idée pour m'orienter, je suis preneur !
Egalement, peut-on connaitre autrement que par un css('display') si un contenu est levé ou baissé via slideToggle ?
Merci !
J'ai un petit souci avec le site que je crée. La colonne de gauche est composée de plusieurs panneaux indépendants ("widgets", dans la suite). Via jQuery UI ils se déplacent les uns par rapport aux autres (.sortable()), via l'ajout d'une classe 'hidden' (avec un display : none) ils disparaissent visuellement et via un slideToggle, leur contenu se baisse ou se lève en cliquant sur la barre de titre du widget. Inspiré de iGoogle, ça marche et c'est plutôt cool.
L'étape suivante est donc de sauvegarder leur état pour pas qu'il soit réinitialisé à chaque changement de page. Via JSON j'envoie donc plusieurs éléments à chaque modification d'un widget à une table mysql : le membre_id de celui qui a cliqué, l'ordre du widget dans la colonne via un index() et leur état : 0 1 ou 2 selon qu'il soit caché entièrement, replié, ou ouvert.
La position du widget dans la colonne est bien sauvegardée.
Les états 0 et 2 sont bien sauvegardés également. Mais pour l'état 1, pas moyen. Et j'ai du mal à comprendre pourquoi.
Structure d'un widget :
<div class="widget" id="widget_sonNom">
<h3><span class="fermeture"></span>Son Nom</h3>
<div class="widget_contenu">
<p>son contenu</p>
</div>
</div>
La classe fermeture dans le h3 sert à insérer une petite croix pour fermer le widget. Au clic, ça ajoute une classe "hidden" à la div classe "widget". De fait, le widget n'apparait plus.
Au clic sur le h3, ça déclenche une fonction slideToggle concernant la div de classe widget_contenu.
Et donc en cliquant/glissant sur le h3, ça déplace le widget là où on veut (au sein de la colonne).
Voilà pour le widget.
J'ai ensuite une fonction updateWidget qui dit notamment :
$(".widget").each(function(){
//Trouve l'état du widget (0 = fermé, 1=réduit, 2=ouvert)
if($(this).hasClass('hidden')) {var collapsed=0;}
else if($(this).find('.widget_contenu').css('display')=="none") {var collapsed=1;}
else {var collapsed=2;}
Dans la suite, elle détermine l'id du widget puis sa position, met le tout dans un tableau et le balance au serveur. Cette partie fonctionne sans souci, et les données sont correctement traitées. C'est juste l'info état qui prend la valeur 0 ou 2, mais jamais 1.
C'est donc ma deuxième condition qui ne marche pas alors que quand je la teste via firebug, elle m'indique bien true ou false quand il faut.
Si quelqu'un a une idée pour m'orienter, je suis preneur !
Egalement, peut-on connaitre autrement que par un css('display') si un contenu est levé ou baissé via slideToggle ?
Merci !