/[cvs]/nfo/php/libs/net.php.pear/Tree/docs/TreeEditor/treeClass.php
ViewVC logotype

Annotation of /nfo/php/libs/net.php.pear/Tree/docs/TreeEditor/treeClass.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations)
Wed Jul 7 02:49:23 2004 UTC (20 years, 2 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -3 lines
updated to Tree-0.2.4

1 joko 1.1 <?php
2     //
3     // $Log: treeClass.php,v $
4     // Revision 1.1 2003/01/30 17:18:24 cain
5     // - moved all examples to docs
6     // - and make them work properly
7     //
8     // Revision 1.1 2002/08/23 17:18:28 cain
9     // - a good example to show how the tree works
10     //
11     //
12    
13     require_once('Tree/Memory.php');
14    
15    
16     class treeClass extends Tree_Memory
17     {
18    
19     function getPathAsString( $id )
20     {
21     return preg_replace('/Root\s-\s/','',parent::getPathAsString( $id , ' - ' ));
22     }
23    
24     /**
25     * just a wrapper to be compatible to vp_DB_Common
26     *
27     */
28     function &getAll()
29     {
30     return $this->getNode();
31     }
32    
33     /**
34     * this is only for the getAllVisible it is called by the walk-method
35     * to retreive only the nodes that shall be visible
36     *
37     * @param array this is the node to check
38     * @return mixed an array if the node shall be visible
39     * nothing if the node shall not be shown
40     */
41     function _walkForGettingVisibleFolders( $node )
42     {
43     global $session;
44    
45     if( $node['id']==$this->getRootId() )
46     return $node;
47    
48     $parentsIds = $this->getParentsIds($node['id']);
49     if( !@$this->_unfoldAll )
50     {
51     foreach( $parentsIds as $aParentId )
52     {
53     if( !@$session->temp->openProjectFolders[$aParentId] &&
54     $aParentId!=$node['id']) // dont check the node itself, since we only look if the parents are openend, then this $node is shown!
55     return false;
56     }
57     }
58     else
59     {
60     // if all folders shall be unfolded save the unfold-ids in the session
61     $session->temp->openProjectFolders[$node['id']] = $node['id'];
62     }
63     return $node;
64     }
65    
66     /**
67     * this returns all the visible projects, the folders returned
68     * are those which are unfolded, the explorer-like way
69     * it also handles the 'unfold' parameter, which we simply might be given
70     * so the unfold/fold works on every page that shows only visible folders
71     * i think that is really cool :-)
72     *
73     * @return array only those folders which are visible
74     */
75     function getAllVisible()
76     {
77     $this->unfoldHandler();
78     return $this->walk( array(&$this,'_walkForGettingVisibleFolders') , 0 , 'ifArray' );
79     }
80    
81     function unfoldHandler()
82     {
83     global $session;
84    
85     if( @$_REQUEST['unfoldAll'] )
86     {
87     $this->_unfoldAll = true;
88     }
89    
90     if( @$_REQUEST['unfold'] )
91     {
92     if( @$session->temp->openProjectFolders[$_REQUEST['unfold']] )
93     {
94     unset($session->temp->openProjectFolders[$_REQUEST['unfold']]);
95     }
96     else
97     {
98     $session->temp->openProjectFolders[$_REQUEST['unfold']] = $_REQUEST['unfold'];
99     }
100     }
101     }
102    
103    
104     }
105    
106     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed