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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (show annotations)
Thu Mar 27 01:24:29 2003 UTC (21 years, 5 months ago) by jonen
Branch: MAIN
Changes since 1.4: +45 -18 lines
+ enabled navigation ecom (only list yet)

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

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