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 |
?> |