1 |
cvsjoko |
1.1 |
<? |
2 |
|
|
|
3 |
|
|
// -------------------------------------------------------- |
4 |
|
|
function loadClientLibraries($libbase) { ?> |
5 |
|
|
|
6 |
|
|
<!-- js_lib_wddx start --> |
7 |
|
|
<SCRIPT LANGUAGE="javascript" SRC="<?= $libbase ?>wddx/wddx.js"></SCRIPT> |
8 |
|
|
<SCRIPT LANGUAGE="javascript" SRC="<?= $libbase ?>wddx/wddxDes.js"></SCRIPT> |
9 |
|
|
<SCRIPT LANGUAGE="javascript" SRC="<?= $libbase ?>wddx/wddxRsEx.js"></SCRIPT> |
10 |
|
|
<SCRIPT LANGUAGE="javascript"> |
11 |
|
|
/* |
12 |
|
|
var Deserializer = new WddxDeserializer(); |
13 |
|
|
function wddx_unserialize (wddxpacket) |
14 |
|
|
{ |
15 |
|
|
Obj = Deserializer.deserialize(wddxpacket); |
16 |
|
|
return Obj; |
17 |
|
|
} |
18 |
|
|
*/ |
19 |
|
|
</SCRIPT> |
20 |
|
|
<!-- js_lib_wddx end --> |
21 |
|
|
|
22 |
|
|
<? } |
23 |
|
|
|
24 |
|
|
|
25 |
|
|
|
26 |
|
|
class WddxPacketFactory { |
27 |
|
|
|
28 |
|
|
// arg: the name of the wddx-package we need to send data to the client |
29 |
|
|
var $wddxPacketName; |
30 |
|
|
var $callback_getWddxPacket; |
31 |
|
|
var $callback_getDataStructure; |
32 |
|
|
var $jsGlobalScope_RelativeDomAddress; |
33 |
|
|
|
34 |
|
|
// --------------------------------------------------------------------------------------- |
35 |
|
|
function init($args = array()) { |
36 |
|
|
// set default-values |
37 |
|
|
//$this->namespace = 'dummy'; |
38 |
|
|
$this->wddxPacketName = 'dummy'; |
39 |
|
|
$this->callback_getWddxPacket = 'dummy'; |
40 |
|
|
//$this->callback_getDataStructurePath = 'dummy'; |
41 |
|
|
$this->callback_getDataStructure = 'dummy'; |
42 |
|
|
// set object-variables from method-arguments |
43 |
|
|
//isset($args['namespace']) && ($this->namespace = $args['namespace']); |
44 |
|
|
isset($args['wddxPacketName']) && ($this->wddxPacketName = $args['wddxPacketName']); |
45 |
|
|
isset($args['callback_getWddxPacket']) && ($this->callback_getWddxPacket = $args['callback_getWddxPacket']); |
46 |
|
|
//isset($args['callback_getDataStructurePath']) && ($this->callback_getDataStructurePath = $args['callback_getDataStructurePath']); |
47 |
|
|
isset($args['callback_getDataStructure']) && ($this->callback_getDataStructure = $args['callback_getDataStructure']); |
48 |
|
|
isset($args['jsGlobalScope_RelativeDomAddress']) && ($this->jsGlobalScope_RelativeDomAddress = $args['jsGlobalScope_RelativeDomAddress']); |
49 |
|
|
} |
50 |
|
|
|
51 |
|
|
|
52 |
|
|
// --------------------------------------------------------------------------------------- |
53 |
|
|
function renderWddxPacket($args = array()) { |
54 |
|
|
|
55 |
|
|
global $tracking; |
56 |
|
|
|
57 |
|
|
if (!$this->callback_getWddxPacket) { return; } |
58 |
|
|
|
59 |
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
60 |
|
|
// handle caching of wddx-packet in javascript-scope |
61 |
|
|
|
62 |
|
|
// build cache-key |
63 |
|
|
$cachekey = 'wddx_' . $this->wddxPacketName; |
64 |
|
|
//print "cache-key: $cachekey<br>"; |
65 |
|
|
|
66 |
|
|
// determine cache-status by cache-key |
67 |
|
|
$bool_cached = $tracking->getStatusAttribute("cache::js::keys::$cachekey"); |
68 |
|
|
//print "bool_cached: $bool_cached<br>"; |
69 |
|
|
|
70 |
|
|
// just continue, if the result isn't already cached! |
71 |
|
|
if (!$bool_cached) { |
72 |
|
|
|
73 |
|
|
// can we get the wddx-packet? |
74 |
|
|
if (isset($this->callback_getWddxPacket) && ($this->callback_getWddxPacket != '') ) { |
75 |
|
|
|
76 |
|
|
// get wddx-packet by calling a callback-method |
77 |
|
|
$funcref = $this->callback_getWddxPacket; |
78 |
|
|
$wddx_packet =& $funcref(); |
79 |
|
|
|
80 |
|
|
// render (output!) the wddx-packet |
81 |
|
|
$tracking->loadLibrary('JavaScript'); |
82 |
|
|
JsDataStore_CreateWddxPacket($this->jsGlobalScope_RelativeDomAddress, $this->wddxPacketName, $wddx_packet); |
83 |
|
|
|
84 |
|
|
// set cache-flag |
85 |
|
|
$tracking->setStatusAttribute("cache::js::keys::$cachekey", 1); |
86 |
|
|
} |
87 |
|
|
|
88 |
|
|
} |
89 |
|
|
|
90 |
|
|
} |
91 |
|
|
|
92 |
|
|
|
93 |
|
|
|
94 |
|
|
} |
95 |
|
|
|
96 |
|
|
?> |