2010-03-24 3 views
4

J'utilise la même vue dijit.Tree sur plusieurs pages dans notre application, et j'aimerais que le cookie soit enregistré pour le nom du serveur, au lieu du nom du dossier.
En ce moment, j'ai 3 pages et 3 cookies, qui contiennent chacun leur propre information sur l'état de l'arbre, ce qui est plutôt ennuyeux.Définition du cookie dijit.Tree pour toutes les pages

Des moyens pour y parvenir? La seule chose que j'ai trouvé sur les cookies dans le API, c'est que je peux définir le cookieName et activer/désactiver les cookies.

Répondre

4

Il semble que Tree.js ne vous permette pas de définir des attributs pour le cookie. Donc, je devais juste remplacer la méthode _saveState() pour la Tree:

var treeControl = new dijit.Tree({ 
    model: treeModel, 
    showRoot: false, 
    openOnClick: false, 
    cookieName: "OrganizationUnitTreeState", 
    _saveState: function(){ 
     // summary: 
     // Create and save a cookie with the currently expanded nodes identifiers 
     // Overre the default saveState function, so we can set the cookie path 
     if(!this.persist){ 
      return; 
     } 
     var ary = []; 
     for(var id in this._openedItemIds){ 
      ary.push(id); 
     } 
     dojo.cookie(this.cookieName, ary.join(","), {expires:365, path:"/"}); 
    }, 
    /* Many more methods */ 
}); 

C'est la dernière ligne de code là-bas qui fait l'affaire. Le dojo.cookie() prend une liste de paires clé/valeur, qui seront transformées en attributs de cookie, donc si vous voulez un autre ensemble d'attributs, voici comment vous le feriez.

+0

Très utile. Ça serait bien si c'était une API officielle pour changer la persistance des arbres sur tout le site. Vous pouvez déposer un ticket d'amélioration. –

Questions connexes