From 030a2d9e09b3bbf9abbddc011728e3732a30be52 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Sat, 28 Aug 2010 16:20:29 -0600 Subject: [PATCH] Allow session storage to be disabled for a given Horde_Tree instance --- framework/Core/lib/Horde/Core/Factory/Tree.php | 10 ++++++++-- framework/Core/lib/Horde/Core/Tree/Javascript.php | 1 + horde/js/hordetree.js | 10 +++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/framework/Core/lib/Horde/Core/Factory/Tree.php b/framework/Core/lib/Horde/Core/Factory/Tree.php index 2a0fd981e..a8a94dc56 100644 --- a/framework/Core/lib/Horde/Core/Factory/Tree.php +++ b/framework/Core/lib/Horde/Core/Factory/Tree.php @@ -57,7 +57,11 @@ class Horde_Core_Factory_Tree * @param string $name The name of this tree instance. * @param mixed $renderer The type of tree renderer. * @param array $params Any additional parameters the constructor - * needs. + * needs. Defined by this class: + *
+     * 'nosession' - (boolean) Don't store tree state in the session.
+     *               DEFAULT: false
+     * 
* * @return Horde_Tree_Base The singleton instance. * @throws Horde_Tree_Exception @@ -82,7 +86,9 @@ class Horde_Core_Factory_Tree break; } - $params['session'] = 'horde_tree'; + if (empty($params['nosession'])) { + $params['session'] = 'horde_tree'; + } $this->_instances[$id] = Horde_Tree::factory($name, $renderer, $params); } diff --git a/framework/Core/lib/Horde/Core/Tree/Javascript.php b/framework/Core/lib/Horde/Core/Tree/Javascript.php index e02757b7d..18e385604 100644 --- a/framework/Core/lib/Horde/Core/Tree/Javascript.php +++ b/framework/Core/lib/Horde/Core/Tree/Javascript.php @@ -73,6 +73,7 @@ class Horde_Core_Tree_Javascript extends Horde_Core_Tree_Html 'extraColsLeft' => $this->_colsLeft, 'extraColsRight' => $this->_colsRight, 'header' => $this->_header, + 'nocookie' => !$this->getOption('session'), 'options' => $this->_options, 'target' => $this->_instance, diff --git a/horde/js/hordetree.js b/horde/js/hordetree.js index 53de09204..3659e62af 100644 --- a/horde/js/hordetree.js +++ b/horde/js/hordetree.js @@ -442,6 +442,10 @@ var Horde_Tree = Class.create({ saveState: function(nodeId, expanded) { + if (this.opts.nocookie) { + return; + } + var newCookie = '', newNodes = [], oldCookie = this._getCookie(this.opts.target + '_expanded'); @@ -459,7 +463,7 @@ var Horde_Tree = Class.create({ newCookie = newNodes.join(','); } - this._setCookie(this.opts.target + '_expanded', newCookie); + document.cookie = this.opts.target + '_expanded=exp' + escape(newCookie) + ';DOMAIN=' + this.opts.cookieDomain + ';PATH=' + this.opts.cookiePath + ';'; }, _getCookie: function(name) @@ -486,10 +490,6 @@ var Horde_Tree = Class.create({ return unescape(dc.substring(begin + prefix.length, end)); }, - _setCookie: function(name, value) - { - document.cookie = name + '=exp' + escape(value) + ';DOMAIN=' + this.opts.cookieDomain + ';PATH=' + this.opts.cookiePath + ';'; - }, _onClick: function(e) { var elt = e.element(), -- 2.11.0