From: Michael M Slusarz Date: Wed, 25 Aug 2010 05:35:14 +0000 (-0600) Subject: Add a Simple HTML renderer. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=82a4095c3e4dc0d584d364a65ae432a24a0f31fb;p=horde.git Add a Simple HTML renderer. --- diff --git a/framework/Core/lib/Horde/Core/Factory/Tree.php b/framework/Core/lib/Horde/Core/Factory/Tree.php index d01697e08..f622d5be8 100644 --- a/framework/Core/lib/Horde/Core/Factory/Tree.php +++ b/framework/Core/lib/Horde/Core/Factory/Tree.php @@ -76,6 +76,10 @@ class Horde_Core_Factory_Tree case 'javascript': $renderer = 'Horde_Core_Tree_Javascript'; break; + + case 'simplehtml': + $renderer = 'Horde_Core_Tree_Simplehtml'; + break; } $params['session'] = 'horde_tree'; diff --git a/framework/Core/lib/Horde/Core/Tree/Simplehtml.php b/framework/Core/lib/Horde/Core/Tree/Simplehtml.php new file mode 100644 index 000000000..a0873da06 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Tree/Simplehtml.php @@ -0,0 +1,30 @@ + + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Core + */ +class Horde_Core_Tree_Simplehtml extends Horde_Tree_Simplehtml +{ + /** + * Generate a link URL tag. + * + * @param string $node_id The node ID. + * + * @return string The link tag. + */ + protected function _generateUrlTag($node_id) + { + return Horde::link(Horde::selfUrl()->add(self::TOGGLE . $this->_instance, $node_id)); + } + +} diff --git a/framework/Core/package.xml b/framework/Core/package.xml index eb0f3c828..88fad1acb 100644 --- a/framework/Core/package.xml +++ b/framework/Core/package.xml @@ -199,6 +199,7 @@ Application Framework. + @@ -473,6 +474,7 @@ Application Framework. + diff --git a/framework/Tree/lib/Horde/Tree/Simplehtml.php b/framework/Tree/lib/Horde/Tree/Simplehtml.php new file mode 100644 index 000000000..05f9c3157 --- /dev/null +++ b/framework/Tree/lib/Horde/Tree/Simplehtml.php @@ -0,0 +1,123 @@ + + * @category Horde + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @package Tree + */ +class Horde_Tree_Simplehtml extends Horde_Tree +{ + /** + * Allowed parameters for nodes. + * + * @var array + */ + protected $_allowed = array( + 'class', + 'url' + ); + + /** + * Should the tree be rendered statically? + * + * @var boolean + */ + protected $_static = true; + + /** + * Returns the tree. + * + * @return string The HTML code of the rendered tree. + */ + public function getTree() + { + $this->_buildIndents($this->_root_nodes); + + $tree = ''; + foreach ($this->_root_nodes as $node_id) { + $tree .= $this->_buildTree($node_id); + } + + return $tree; + } + + /** + * Adds additional parameters to a node. + * + * @param string $id The unique node id. + * @param array $params Parameters to set (key/value pairs). + *
+     * class - CSS class to use with this node
+     * url - URL to link the node to
+     * 
+ */ + public function addNodeParams($id, $params = array()) + { + parent::addNodeParams($id, $params); + } + + /** + * Recursive function to walk through the tree array and build the output. + * + * @param string $node_id The Node ID. + * + * @return string The tree rendering. + */ + protected function _buildTree($node_id) + { + $node = $this->_nodes[$node_id]; + + $output = ''; + if (isset($node['extra'][self::EXTRA_LEFT])) { + $output .= implode(' ', $node['extra'][self::EXTRA_LEFT]); + } + $output .= str_repeat(' ', $node['indent'] * 2); + + if (isset($node['children'])) { + $output .= '[' . + $this->_generateUrlTag($node_id) . + ($node['expanded'] ? '-' : '+') . + '] '; + } + + $output .= empty($node['url']) + ? $node['label'] + : '' . $node['label'] . ''; + if (isset($node['extra'][self::EXTRA_RIGHT])) { + $output .= implode(' ', $node['extra'][self::EXTRA_RIGHT]); + } + $output .= ''; + + if (isset($node['children']) && $node['expanded']) { + foreach ($node['children'] as $val) { + $output .= $this->_buildTree($val); + } + } + + return $output; + } + + /** + * Generate a link URL. + * + * @param string $node_id The node ID. + * + * @return string The link tag. + */ + protected function _generateUrlTag($node_id) + { + $url = new Horde_Url($_SERVER['PHP_SELF']); + return $url->add(self::TOGGLE . $this->_instance, $node_id)->link(); + } + +} diff --git a/framework/Tree/package.xml b/framework/Tree/package.xml index 5d985cb8d..669f063ea 100644 --- a/framework/Tree/package.xml +++ b/framework/Tree/package.xml @@ -6,7 +6,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> Tree pear.horde.org Horde Tree API - The Horde_Tree:: package provides a tree view of hierarchical information. It allows for expanding/collapsing of branches and maintains their state. + This package provides a tree view of hierarchical information. It allows for expanding/collapsing of branches and maintains their state. Chuck Hagenbuch @@ -20,6 +20,12 @@ http://pear.php.net/dtd/package-2.0.xsd"> jan@horde.org yes + + Michael Slusarz + slusarz + slusarz@horde.org + yes + 2009-12-15 0.1.0 @@ -30,7 +36,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> beta GPL - * Remove dependency on horde/Core. + * Add simple HTML renderer. + * Remove dependency on horde/Core. * Move javascript renderer to horde/Core. * Add Horde_Tree_Exception::. * Initial Horde 4 package. @@ -43,6 +50,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> +
@@ -77,6 +85,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> +