/[cvs]/nfo/php/libs/org.netfrag.app/WebExplorer/AbstractExplorer.php
ViewVC logotype

Annotation of /nfo/php/libs/org.netfrag.app/WebExplorer/AbstractExplorer.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations)
Thu Mar 20 07:54:52 2003 UTC (21 years, 5 months ago) by jonen
Branch: MAIN
Changes since 1.2: +13 -1 lines
+ added docu

1 jonen 1.1 <?
2     /*
3     ## -----------------------------------------------------------------------------
4 jonen 1.3 ## $Id: AbstractExplorer.php,v 1.2 2003/03/20 07:44:31 jonen Exp $
5 jonen 1.1 ## -----------------------------------------------------------------------------
6     ## $Log: AbstractExplorer.php,v $
7 jonen 1.3 ## Revision 1.2 2003/03/20 07:44:31 jonen
8     ## + removed dumper
9     ##
10 jonen 1.2 ## Revision 1.1 2003/03/20 03:48:46 jonen
11     ## + initial commit
12     ##
13 jonen 1.1 ## Revision 1.1 2003/03/08 02:36:17 cvsmax
14     ## + moved from *.inc
15     ## + mungled namespace with WebExplorer
16     ##
17     ## Revision 1.3 2003/03/03 22:25:21 joko
18     ## fixed minor typos
19     ## namespace mungling
20     ##
21     ## Revision 1.2 2003/03/02 00:48:49 cvsmax
22     ## + set up gui module registry
23     ## - purged old/sample code
24     ##
25     ## Revision 1.1 2003/03/01 22:57:32 cvsmax
26     ## + inital commit
27     ##
28     ##
29     ## -----------------------------------------------------------------------------
30     */
31 jonen 1.3
32     /**
33     * WebExplorer::AbstractExplorer - this can be simple compared to a container,
34     * which modular GUI classes can be register, manipulated and rendered...
35     *
36     * @author Sebastian Utz <seut@tunemedia.de>
37     * @package org.netfrag.app
38     * @name WebExplorer::AbstractExplorer
39     */
40 jonen 1.1
41    
42     class WebExplorer_AbstractExplorer {
43    
44     /**
45     * container holds meta information of data locators
46     */
47     var $_data_locators = array();
48    
49     /**
50     * container for registered modules
51     */
52     var $_module = array();
53    
54     /**
55     * container holds references to each ecom
56     */
57     var $_ecom = array();
58    
59     /**
60     * holds the whole page state
61     */
62     var $_state = array();
63    
64     /**
65     * holds state variables only needed for explorer
66     */
67     var $_e_state = array();
68    
69     // needed (old)?
70     var $_control = array();
71     var $_hidden_elements = array();
72    
73    
74     function WebExplorer_AbstractExplorer($data_locators=array()) {
75     $this->_data_locators = $data_locators;
76     $this->init_default_gui_modules();
77    
78     $this->set_e_state();
79 jonen 1.2 //print "State: " . Dumper($this->_state) ."<br>";
80     print "Explorer_State: " . Dumper($this->_e_state) ."<br>";
81 jonen 1.1 //$this->init_state();
82     }
83    
84    
85     function add_data_locator($label, $args) {
86     $this->_data_locators[$label] = $args;
87     }
88    
89     function set_data_locator($label, $new_args=array() ) {
90     global $app;
91     //print Dumper($app) . "<br>";
92     if($label == "rpc") {
93     $rpcinfo = $app->getConfig("rpcinfo");
94     define('RPC_HOSTNAME', $rpcinfo[Host]);
95     define('RPC_PORT', $rpcinfo[Port]);
96     } else {
97     user_error("AbstractExplorer::set_data_locator - data_locator_key label $label not found!");
98     }
99     }
100    
101     function get_data_locator($label) {
102     }
103    
104     function get_page_state() {
105     $requestTracker = mkObject("Application::Request::Tracker");
106     $this->_state = $requestTracker->getPointer();
107     }
108    
109     function set_e_state() {
110     $this->get_page_state();
111     $this->_e_state = $this->_state[options][options];
112     }
113    
114    
115     function set_page_state() {
116     user_error("AbstractExplorer::set_page_state - please implement me....");
117     }
118    
119    
120     function init_default_gui_modules() {
121     //$this->register_gui_module("n_tree", "nav", array( 'name' => "NavigationTree", 'type' => "tree") );
122     $this->register_gui_module("list", "nav", array( 'name' => "NavigationList", 'type' => "list") );
123     $this->register_gui_module("list", "data", array( 'name' => "WebExplorer::Module::DataList", 'type' => "list") );
124     $this->register_gui_module("item", "data", array( 'name' => "WebExplorer::Module::DataItem", 'type' => "item") );
125     }
126    
127     function register_source_module($label, $args) {
128     $this->_module['source'][$label] = $args;
129     }
130    
131     function register_gui_module($abstract_type, $ecom_type, $args) {
132     $this->_module['gui'][$ecom_type][$abstract_type] = $args;
133     }
134    
135     function &get_ecom($label) {
136     //return "Hello World";
137     $this->_load_ecom($label);
138     return $this->_ecom[$label];
139     }
140    
141     function _load_ecoms() {
142     foreach($this->_e_state[ecoms] as $label => $val) {
143     $this->_load_ecom($label);
144     }
145     }
146    
147     function _load_ecom($label) {
148     $val = $this->_e_state['ecoms'][$label];
149     // find right gui module
150     $com_type = $val['ecom_type'];
151     $abstract_type = $val['ecom_abstract_type'];
152     $gui_module = $this->_module['gui'][$com_type][$abstract_type]['name'];
153     if(!$gui_module) {
154     user_error("AbstractExplorer::_load_component - No GUI module found for abstract type $val[ecom_abstract_type] ecom type $val[ecom_type] !");
155     return;
156     }
157     // get arguments needed for gui module
158     $args = $this->_prepare_component_args($label);
159     //print Dumper($args);
160    
161     // get GUI module
162     $ecom = php::mkComponent($gui_module, $args);
163     //print Dumper($ecom);
164    
165     // get phphtmllib GUI object
166     $gui_ecom = &$ecom->get();
167    
168     // add hidden vars, needed for explorer control
169     $hidden_items = $this->_get_hidden_items($label);
170     $ecom->add_hidden_items($hidden_items);
171     //print "Hidden: " . Dumper($gui_ecom->_hidden_items);
172    
173     $this->_ecom[$label] = &$gui_ecom;
174     }
175    
176     function _get_hidden_items($label) {
177     $ecom_state = $this->_e_state['ecoms'][$label];
178     if($ecom_state['ecom_abstract_type'] == "list") {
179     $hidden_items = array(
180     'ecl' => $label,
181     );
182     }
183     // set default hidden item for whole explorer
184     $hidden_items['ap'] = "explorer";
185     return $hidden_items;
186     }
187    
188     function _prepare_component_args($label) {
189     $val = $this->_e_state['ecoms'][$label];
190     $this->set_data_locator($val['ecom_data_locator_key']);
191     if($val['ecom_abstract_type'] == "list") {
192     if($val['ecom_data_locator_key'] == "rpc") {
193     $data_locator_meta = array( datasource => 'rpc', metatype => 'data', vartype => 'objects', classname => $val['ecom_data_ident']);
194     } else {
195     user_error("AbstractExplorer::_prepare_component_args - Cannot build query for data_locator_key $val[ecom_data_locator_key] !");
196     }
197     $args = array(
198     'caption' => "Liste",
199     'orderby' => "Guid",
200     'options' => array(
201     'data_locator_meta' => $data_locator_meta,
202     'decode' => 1,
203     'decode_args' => array(
204     'seperator' => "_",
205     'form' => 1,
206     ),
207     ),
208     );
209     } elseif ($ecom_type == "item") {
210     $args = array();
211     } elseif ($ecom_type == "nav") {
212     $args = array();
213     }
214     return $args;
215     }
216    
217     function get_msg($label) {
218     if($label == "welcome") {
219     $msg = "Welcome to the Explorer.";
220     }
221     return $msg;
222     }
223    
224     function render() {
225     user_error("AbstractExplorer::render - please implement me....");
226     }
227    
228     }
229    
230    
231     ?>

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