merged xajax 0.5 commits from trunk:

r28909:  register doXMLHTTPsync as an alias to call doXMLHTTP
synchronious
r28908: remove reference from $obj =& new obj() constructs, to get
ride of depricated warnings in php5.3
r28907: using new xajax version 0.5, thought automatically defining
all pre 0.5 response functions, so no changes in EGroupware callbacks
necessary, everything should work as before
r28906: adding stock xajax_0.5_minimal
This commit is contained in:
Ralf Becker 2010-01-08 02:44:18 +00:00
commit e750d7cf52
47 changed files with 14369 additions and 988 deletions

View File

@ -655,13 +655,16 @@ abstract class egw_framework
if ($GLOBALS['egw_info']['flags']['include_xajax'])
{
require_once(EGW_SERVER_ROOT.'/phpgwapi/inc/xajax.inc.php');
$xajax = new xajax(egw::link('/xajax.php'), 'xajax_', translation::charset());
$xajax->waitCursorOff();
$xajax->registerFunction("doXMLHTTP");
$java_script .= $xajax->getJavascript($GLOBALS['egw_info']['server']['webserver_url'] . '/phpgwapi/js/');
require_once(EGW_API_INC.'/xajax/xajax_core/xajax.inc.php');
$xajax = new xajax();
$xajax->configure('requestURI', egw::link('/xajax.php'));
$xajax->configure('javascript URI',$GLOBALS['egw_info']['server']['webserver_url'] . '/phpgwapi/inc/xajax');
$xajax->configure('waitCursor',false);
$xajax->register(XAJAX_FUNCTION,'doXMLHTTP');
$xajax->register(XAJAX_FUNCTION,'doXMLHTTP',array('mode' => "'synchronous'",'alias' => 'doXMLHTTPsync'));
$java_script .= $xajax->getJavascript();
}
/* this flag is for all javascript code that has to be put before other jscode.

View File

@ -0,0 +1,54 @@
<?php
/*
File: copyright.inc.php
This file contains detailed information regarding the xajax project,
current version, copyrights, licnese and documentation.
You do not need to include this file in your project for xajax to
function properly.
*/
/*
Section: Current Version
xajax version 0.5
*/
/*
Section: Copyright
- copyright (c) 2005-2007 by Jared White & J. Max Wilson
- copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
*/
/*
Section: Description
xajax is an open source PHP class library for easily creating powerful
PHP-driven, web-based Ajax Applications. Using xajax, you can asynchronously
call PHP functions and update the content of your your webpage without
reloading the page.
*/
/*
Section: License
xajax is released under the terms of the BSD license
http://www.xajaxproject.org/bsd_license.txt
*/
/*
@package xajax
@version $Id: copyright.inc.php 327 2007-02-28 16:55:26Z calltoconstruct $
@copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Section: Online documentation
Online documentation for this class is available on the xajax wiki at:
http://xajaxproject.org/en/docs-tutorials/
*/

View File

@ -0,0 +1,73 @@
<?php
class legacyXajaxResponse extends xajaxResponse {
function outputEntitiesOn() { $this->setOutputEntities(true); }
function outputEntitiesOff() { $this->setOutputEntities(false); }
function addConfirmCommands() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'confirmCommands'), $temp); }
function addAssign() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'assign'), $temp); }
function addAppend() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'append'), $temp); }
function addPrepend() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'prepend'), $temp); }
function addReplace() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'replace'), $temp); }
function addClear() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'clear'), $temp); }
function addAlert() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'alert'), $temp); }
function addRedirect() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'redirect'), $temp); }
function addScript() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'script'), $temp); }
function addScriptCall() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'call'), $temp); }
function addRemove() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'remove'), $temp); }
function addCreate() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'create'), $temp); }
function addInsert() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'insert'), $temp); }
function addInsertAfter() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'insertAfter'), $temp); }
function addCreateInput() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'createInput'), $temp); }
function addInsertInput() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'insertInput'), $temp); }
function addInsertInputAfter() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'insertInputAfter'), $temp); }
function addRemoveHandler() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'removeHandler'), $temp); }
function addIncludeScript() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'includeScript'), $temp); }
function addIncludeCSS() { $temp=func_get_args(); return call_user_func_array(array(&$this, 'includeCSS'), $temp); }
function &getXML() { return $this; }
}
class legacyXajax extends xajax {
function legacyXajax($sRequestURI='', $sWrapperPrefix='xajax_', $sEncoding=XAJAX_DEFAULT_CHAR_ENCODING, $bDebug=false)
{
parent::xajax();
$this->configure('requestURI', $sRequestURI);
$this->configure('wrapperPrefix', $sWrapperPrefix);
$this->configure('characterEncoding', $sEncoding);
$this->configure('debug', $bDebug);
}
function registerExternalFunction($mFunction, $sInclude)
{
$xuf = new xajaxUserFunction($mFunction, $sInclude);
$this->register(XAJAX_FUNCTION, $xuf);
}
function registerCatchAllFunction($mFunction)
{
if (is_array($mFunction)) array_shift($mFunction);
$this->register(XAJAX_PROCESSING_EVENT, XAJAX_PROCESSING_EVENT_INVALID, $mFunction);
}
function registerPreFunction($mFunction)
{
if (is_array($mFunction)) array_shift($mFunction);
$this->register(XAJAX_PROCESSING_EVENT, XAJAX_PROCESSING_EVENT_BEFORE, $mFunction);
}
function canProcessRequests() { return $this->canProcessRequest(); }
function processRequests() { return $this->processRequest(); }
function setCallableObject(&$oObject) { return $this->register(XAJAX_CALLABLE_OBJECT, $oObject); }
function debugOn() { return $this->configure('debug',true); }
function debugOff() { return $this->configure('debug',false); }
function statusMessagesOn() { return $this->configure('statusMessages',true); }
function statusMessagesOff() { return $this->configure('statusMessages',false); }
function waitCursorOn() { return $this->configure('waitCursor',true); }
function waitCursorOff() { return $this->configure('waitCursor',false); }
function exitAllowedOn() { return $this->configure('exitAllowed',true); }
function exitAllowedOff() { return $this->configure('exitAllowed',false); }
function errorHandlerOn() { return $this->configure('errorHandler',true); }
function errorHandlerOff() { return $this->configure('errorHandler',false); }
function cleanBufferOn() { return $this->configure('cleanBuffer',true); }
function cleanBufferOff() { return $this->configure('cleanBuffer',false); }
function decodeUTF8InputOn() { return $this->configure('decodeUTF8Input',true); }
function decodeUTF8InputOff() { return $this->configure('decodeUTF8Input',false); }
function outputEntitiesOn() { return $this->configure('outputEntities',true); }
function outputEntitiesOff() { return $this->configure('outputEntities',false); }
function allowBlankResponseOn() { return $this->configure('allowBlankResponse',true); }
function allowBlankResponseOff() { return $this->configure('allowBlankResponse',false); }
}

View File

@ -0,0 +1,228 @@
<?php
/*
File: xajaxCallableObject.inc.php
Contains the xajaxCallableObject class
Title: xajaxCallableObject class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxCallableObject.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Class: xajaxCallableObject
A class that stores a reference to an object whose methods can be called from
the client via a xajax request. <xajax> will call
<xajaxCallableObject->generateClientScript> so that stub functions can be
generated and sent to the browser.
*/
class xajaxCallableObject
{
/*
Object: obj
A reference to the callable object.
*/
var $obj;
/*
Array: aConfiguration
An associative array that will contain configuration options for zero
or more of the objects methods. These configuration options will
define the call options for each request. The call options will be
passed to the client browser when the function stubs are generated.
*/
var $aConfiguration;
/*
Function: xajaxCallableObject
Constructs and initializes the <xajaxCallableObject>
obj - (object): The object to reference.
*/
function xajaxCallableObject(&$obj)
{
$this->obj =& $obj;
$this->aConfiguration = array();
}
/*
Function: getName
Returns the name of this callable object. This is typically the
class name of the object.
*/
function getName()
{
return get_class($this->obj);
}
/*
Function: configure
Used to set configuration options / call options for each method.
sMethod - (string): The name of the method.
sName - (string): The name of the configuration option.
sValue - (string): The value to be set.
*/
function configure($sMethod, $sName, $sValue)
{
$sMethod = strtolower($sMethod);
if (false == isset($this->aConfiguration[$sMethod]))
$this->aConfiguration[$sMethod] = array();
$this->aConfiguration[$sMethod][$sName] = $sValue;
}
/*
Function: generateRequests
Produces an array of <xajaxRequest> objects, one for each method
exposed by this callable object.
sXajaxPrefix - (string): The prefix to be prepended to the
javascript function names; this will correspond to the name
used for the function stubs that are generated by the
<xajaxCallableObject->generateClientScript> call.
*/
function generateRequests($sXajaxPrefix)
{
$aRequests = array();
$sClass = get_class($this->obj);
foreach (get_class_methods($this->obj) as $sMethodName)
{
$bInclude = true;
// exclude magic __call method
if ("__call" == $sMethodName)
$bInclude = false;
// exclude constructor
if ($sClass == $sMethodName)
$bInclude = false;
if ($bInclude)
$aRequests[strtolower($sMethodName)] =
new xajaxRequest("{$sXajaxPrefix}{$sClass}.{$sMethodName}");
}
return $aRequests;
}
/*
Function: generateClientScript
Called by <xajaxCallableObject->generateClientScript> while <xajax> is
generating the javascript to be sent to the browser.
sXajaxPrefix - (string): The prefix to be prepended to the
javascript function names.
*/
function generateClientScript($sXajaxPrefix)
{
$sClass = get_class($this->obj);
echo "{$sXajaxPrefix}{$sClass} = {};\n";
foreach (get_class_methods($this->obj) as $sMethodName)
{
$bInclude = true;
// exclude magic __call, __construct, __destruct methods
if (2 < strlen($sMethodName))
if ("__" == substr($sMethodName, 0, 2))
$bInclude = false;
// exclude constructor
if ($sClass == $sMethodName)
$bInclude = false;
if ($bInclude)
{
echo "{$sXajaxPrefix}{$sClass}.{$sMethodName} = function() { ";
echo "return xajax.request( ";
echo "{ xjxcls: '{$sClass}', xjxmthd: '{$sMethodName}' }, ";
echo "{ parameters: arguments";
$sSeparator = ", ";
if (isset($this->aConfiguration['*']))
foreach ($this->aConfiguration['*'] as $sKey => $sValue)
echo "{$sSeparator}{$sKey}: {$sValue}";
if (isset($this->aConfiguration[strtolower($sMethodName)]))
foreach ($this->aConfiguration[strtolower($sMethodName)] as $sKey => $sValue)
echo "{$sSeparator}{$sKey}: {$sValue}";
echo " } ); ";
echo "};\n";
}
}
}
/*
Function: isClass
Determins if the specified class name matches the class name of the
object referenced by <xajaxCallableObject->obj>.
sClass - (string): The name of the class to check.
Returns:
boolean - True of the specified class name matches the class of
the object being referenced; false otherwise.
*/
function isClass($sClass)
{
if(get_class($this->obj) === $sClass)
return true;
return false;
}
/*
Function: hasMethod
Determines if the specified method name is one of the methods of the
object referenced by <xajaxCallableObject->obj>.
sMethod - (object): The name of the method to check.
Returns:
boolean - True of the referenced object contains the specified method,
false otherwise.
*/
function hasMethod($sMethod)
{
return method_exists($this->obj, $sMethod) || method_exists($this->obj, "__call");
}
/*
Function: call
Call the specified method of the object being referenced using the specified
array of arguments.
sMethod - (string): The name of the method to call.
aArgs - (array): The arguments to pass to the method.
*/
function call($sMethod, $aArgs)
{
$objResponseManager =& xajaxResponseManager::getInstance();
$objResponseManager->append(
call_user_func_array(
array(&$this->obj, $sMethod),
$aArgs
)
);
}
}

View File

@ -0,0 +1,162 @@
<?php
/*
File: xajaxEvent.inc.php
Definition of the xajax Event object.
Title: xajaxEvent
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxEvent.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
// require_once is necessary here as the function plugin also includes this
//SkipAIO
require_once dirname(__FILE__) . '/xajaxUserFunction.inc.php';
//EndSkipAIO
/*
Class: xajaxEvent
A container class which holds a reference to handler functions and configuration
options associated with a registered event.
*/
class xajaxEvent
{
/*
String: sName
The name of the event.
*/
var $sName;
/*
Array: aConfiguration
Configuration / call options to be used when initiating a xajax request
to trigger this event.
*/
var $aConfiguration;
/*
Array: aHandlers
A list of <xajaxUserFunction> objects associated with this registered
event. Each of these functions will be called when the event is triggered.
*/
var $aHandlers;
/*
Function: xajaxEvent
Construct and initialize this <xajaxEvent> object.
*/
function xajaxEvent($sName)
{
$this->sName = $sName;
$this->aConfiguration = array();
$this->aHandlers = array();
}
/*
Function: getName
Returns the name of the event.
Returns:
string - the name of the event.
*/
function getName()
{
return $this->sName;
}
/*
Function: configure
Sets/stores configuration options that will be used when generating
the client script that is sent to the browser.
*/
function configure($sName, $mValue)
{
$this->aConfiguration[$sName] = $mValue;
}
/*
Function: addHandler
Adds a <xajaxUserFunction> object to the list of handlers that will
be fired when the event is triggered.
*/
function addHandler(&$xuf)
{
$this->aHandlers[] =& $xuf;
}
/*
Function: generateRequest
Generates a <xajaxRequest> object that corresponds to the
event so that the client script can easily invoke this event.
sXajaxPrefix - (string): The prefix that will be prepended to
the client script stub function associated with this event.
sEventPrefix - (string): The prefix prepended to the client script
function stub and <xajaxRequest> script.
*/
function generateRequest($sXajaxPrefix, $sEventPrefix)
{
$sEvent = $this->sName;
return new xajaxRequest("{$sXajaxPrefix}{$sEventPrefix}{$sEvent}");
}
/*
Function: generateClientScript
Generates a block of javascript code that declares a stub function
that can be used to easily trigger the event from the browser.
*/
function generateClientScript($sXajaxPrefix, $sEventPrefix)
{
$sMode = '';
$sMethod = '';
if (isset($this->aConfiguration['mode']))
$sMode = $this->aConfiguration['mode'];
if (isset($this->aConfiguration['method']))
$sMethod = $this->aConfiguration['method'];
if (0 < strlen($sMode))
$sMode = ", mode: '{$sMode}'";
if (0 < strlen($sMethod))
$sMethod = ", method: '{$sMethod}'";
$sEvent = $this->sName;
echo "{$sXajaxPrefix}{$sEventPrefix}{$sEvent} = function() { return xajax.request( { xjxevt: '{$sEvent}' }, { parameters: arguments{$sMode}{$sMethod} } ); };\n";
}
/*
Function: fire
Called by the <xajaxEventPlugin> when the event has been triggered.
*/
function fire($aArgs)
{
$objResponseManager =& xajaxResponseManager::getInstance();
foreach (array_keys($this->aHandlers) as $sKey)
$this->aHandlers[$sKey]->call($aArgs);
}
}

View File

@ -0,0 +1,233 @@
<?php
/*
File: xajaxUserFunction.inc.php
Contains the xajaxUserFunction class
Title: xajaxUserFunction class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxUserFunction.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Class: xajaxUserFunction
Construct instances of this class to define functions that will be registered
with the <xajax> request processor. This class defines the parameters that
are needed for the definition of a xajax enabled function. While you can
still specify functions by name during registration, it is advised that you
convert to using this class when you wish to register external functions or
to specify call options as well.
*/
class xajaxUserFunction
{
/*
String: sAlias
An alias to use for this function. This is useful when you want
to call the same xajax enabled function with a different set of
call options from what was already registered.
*/
var $sAlias;
/*
Object: uf
A string or array which defines the function to be registered.
*/
var $uf;
/*
String: sInclude
The path and file name of the include file that contains the function.
*/
var $sInclude;
/*
Array: aConfiguration
An associative array containing call options that will be sent to the
browser curing client script generation.
*/
var $aConfiguration;
/*
Function: xajaxUserFunction
Constructs and initializes the <xajaxUserFunction> object.
$uf - (mixed): A function specification in one of the following formats:
- a three element array:
(string) Alternate function name: when a method of a class has the same
name as another function in the system, you can provide an alias to
help avoid collisions.
(object or class name) Class: the name of the class or an instance of
the object which contains the function to be called.
(string) Method: the name of the method that will be called.
- a two element array:
(object or class name) Class: the name of the class or an instance of
the object which contains the function to be called.
(string) Method: the name of the method that will be called.
- a string:
the name of the function that is available at global scope (not in a
class.
$sInclude - (string, optional): The path and file name of the include file
that contains the class or function to be called.
$aConfiguration - (array, optional): An associative array of call options
that will be used when sending the request from the client.
Examples:
$myFunction = array('alias', 'myClass', 'myMethod');
$myFunction = array('alias', &$myObject, 'myMethod');
$myFunction = array('myClass', 'myMethod');
$myFunction = array(&$myObject, 'myMethod');
$myFunction = 'myFunction';
$myUserFunction = new xajaxUserFunction($myFunction, 'myFile.inc.php', array(
'method' => 'get',
'mode' => 'synchronous'
));
$xajax->register(XAJAX_FUNCTION, $myUserFunction);
*/
function xajaxUserFunction($uf, $sInclude=NULL, $aConfiguration=array())
{
$this->sAlias = '';
$this->uf =& $uf;
$this->sInclude = $sInclude;
$this->aConfiguration = array();
foreach ($aConfiguration as $sKey => $sValue)
$this->configure($sKey, $sValue);
if (is_array($this->uf) && 2 < count($this->uf))
{
$this->sAlias = $this->uf[0];
$this->uf = array_slice($this->uf, 1);
}
//SkipDebug
if (is_array($this->uf) && 2 != count($this->uf))
trigger_error(
'Invalid function declaration for xajaxUserFunction.',
E_USER_ERROR
);
//EndSkipDebug
}
/*
Function: getName
Get the name of the function being referenced.
Returns:
string - the name of the function contained within this object.
*/
function getName()
{
// Do not use sAlias here!
if (is_array($this->uf))
return $this->uf[1];
return $this->uf;
}
/*
Function: configure
Call this to set call options for this instance.
*/
function configure($sName, $sValue)
{
if ('alias' == $sName)
$this->sAlias = $sValue;
else
$this->aConfiguration[$sName] = $sValue;
}
/*
Function: generateRequest
Constructs and returns a <xajaxRequest> object which is capable
of generating the javascript call to invoke this xajax enabled
function.
*/
function generateRequest($sXajaxPrefix)
{
$sAlias = $this->getName();
if (0 < strlen($this->sAlias))
$sAlias = $this->sAlias;
return new xajaxRequest("{$sXajaxPrefix}{$sAlias}");
}
/*
Function: generateClientScript
Called by the <xajaxPlugin> that is referencing this function
reference during the client script generation phase. This function
will generate the javascript function stub that is sent to the
browser on initial page load.
*/
function generateClientScript($sXajaxPrefix)
{
$sFunction = $this->getName();
$sAlias = $sFunction;
if (0 < strlen($this->sAlias))
$sAlias = $this->sAlias;
echo "{$sXajaxPrefix}{$sAlias} = function() { ";
echo "return xajax.request( ";
echo "{ xjxfun: '{$sFunction}' }, ";
echo "{ parameters: arguments";
$sSeparator = ", ";
foreach ($this->aConfiguration as $sKey => $sValue)
echo "{$sSeparator}{$sKey}: {$sValue}";
echo " } ); ";
echo "};\n";
}
/*
Function: call
Called by the <xajaxPlugin> that references this function during the
request processing phase. This function will call the specified
function, including an external file if needed and passing along
the specified arguments.
*/
function call($aArgs=array())
{
$objResponseManager =& xajaxResponseManager::getInstance();
if (NULL != $this->sInclude)
{
ob_start();
require_once $this->sInclude;
$sOutput = ob_get_clean();
//SkipDebug
if (0 < strlen($sOutput))
{
$sOutput = 'From include file: ' . $this->sInclude . ' => ' . $sOutput;
$objResponseManager->debug($sOutput);
}
//EndSkipDebug
}
$mFunction = $this->uf;
$objResponseManager->append(call_user_func_array($mFunction, $aArgs));
}
}
?>

View File

@ -0,0 +1,219 @@
<?php
/*
File: xajaxCallableObjectPlugin.inc.php
Contains the xajaxCallableObjectPlugin class
Title: xajaxCallableObjectPlugin class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxCallableObjectPlugin.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Constant: XAJAX_CALLABLE_OBJECT
Specifies that the item being registered via the <xajax->register> function is a
object who's methods will be callable from the browser.
*/
if (!defined ('XAJAX_CALLABLE_OBJECT')) define ('XAJAX_CALLABLE_OBJECT', 'callable object');
//SkipAIO
require dirname(__FILE__) . '/support/xajaxCallableObject.inc.php';
//EndSkipAIO
/*
Class: xajaxCallableObjectPlugin
*/
class xajaxCallableObjectPlugin extends xajaxRequestPlugin
{
/*
Array: aCallableObjects
*/
var $aCallableObjects;
/*
String: sXajaxPrefix
*/
var $sXajaxPrefix;
/*
String: sDefer
*/
var $sDefer;
var $bDeferScriptGeneration;
/*
String: sRequestedClass
*/
var $sRequestedClass;
/*
String: sRequestedMethod
*/
var $sRequestedMethod;
/*
Function: xajaxCallableObjectPlugin
*/
function xajaxCallableObjectPlugin()
{
$this->aCallableObjects = array();
$this->sXajaxPrefix = 'xajax_';
$this->sDefer = '';
$this->bDeferScriptGeneration = false;
$this->sRequestedClass = NULL;
$this->sRequestedMethod = NULL;
if (!empty($_GET['xjxcls'])) $this->sRequestedClass = $_GET['xjxcls'];
if (!empty($_GET['xjxmthd'])) $this->sRequestedMethod = $_GET['xjxmthd'];
if (!empty($_POST['xjxcls'])) $this->sRequestedClass = $_POST['xjxcls'];
if (!empty($_POST['xjxmthd'])) $this->sRequestedMethod = $_POST['xjxmthd'];
}
/*
Function: configure
*/
function configure($sName, $mValue)
{
if ('wrapperPrefix' == $sName) {
$this->sXajaxPrefix = $mValue;
} else if ('scriptDefferal' == $sName) {
if (true === $mValue) $this->sDefer = 'defer ';
else $this->sDefer = '';
} else if ('deferScriptGeneration' == $sName) {
if (true === $mValue || false === $mValue)
$this->bDeferScriptGeneration = $mValue;
else if ('deferred' === $mValue)
$this->bDeferScriptGeneration = $mValue;
}
}
/*
Function: register
*/
function register($aArgs)
{
if (1 < count($aArgs))
{
$sType = $aArgs[0];
if (XAJAX_CALLABLE_OBJECT == $sType)
{
$xco =& $aArgs[1];
//SkipDebug
if (false === is_object($xco))
{
trigger_error("To register a callable object, please provide an instance of the desired class.", E_USER_WARNING);
return false;
}
//EndSkipDebug
if (false === is_a($xco, 'xajaxCallableObject'))
$xco = new xajaxCallableObject($xco);
if (2 < count($aArgs))
if (is_array($aArgs[2]))
foreach ($aArgs[2] as $sKey => $aValue)
foreach ($aValue as $sName => $sValue)
$xco->configure($sKey, $sName, $sValue);
$this->aCallableObjects[] =& $xco;
return $xco->generateRequests($this->sXajaxPrefix);
}
}
return false;
}
/*
Function: generateClientScript
*/
function generateClientScript()
{
if (false === $this->bDeferScriptGeneration || 'deferred' === $this->bDeferScriptGeneration)
{
if (0 < count($this->aCallableObjects))
{
$sCrLf = "\n";
echo $sCrLf;
echo '<';
echo 'script type="text/javascript" ';
echo $this->sDefer;
echo 'charset="UTF-8">';
echo $sCrLf;
echo '/* <';
echo '![CDATA[ */';
echo $sCrLf;
foreach(array_keys($this->aCallableObjects) as $sKey)
$this->aCallableObjects[$sKey]->generateClientScript($this->sXajaxPrefix);
echo '/* ]]> */';
echo $sCrLf;
echo '<';
echo '/script>';
echo $sCrLf;
}
}
}
/*
Function: canProcessRequest
*/
function canProcessRequest()
{
if (NULL == $this->sRequestedClass)
return false;
if (NULL == $this->sRequestedMethod)
return false;
return true;
}
/*
Function: processRequest
*/
function processRequest()
{
if (NULL == $this->sRequestedClass)
return false;
if (NULL == $this->sRequestedMethod)
return false;
$objArgumentManager =& xajaxArgumentManager::getInstance();
$aArgs = $objArgumentManager->process();
foreach (array_keys($this->aCallableObjects) as $sKey)
{
$xco =& $this->aCallableObjects[$sKey];
if ($xco->isClass($this->sRequestedClass))
{
if ($xco->hasMethod($this->sRequestedMethod))
{
$xco->call($this->sRequestedMethod, $aArgs);
return true;
}
}
}
return 'Invalid request for a callable object.';
}
}
$objPluginManager =& xajaxPluginManager::getInstance();
$objPluginManager->registerPlugin(new xajaxCallableObjectPlugin(), 102);

View File

@ -0,0 +1,352 @@
<?php
/*
File: xajaxDefaultIncludePlugin.inc.php
Contains the default script include plugin class.
Title: xajax default script include plugin class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxDefaultIncludePlugin.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Class: xajaxIncludeClientScript
Generates the SCRIPT tags necessary to 'include' the xajax javascript
library on the browser.
This is called when the page is first loaded.
*/
class xajaxIncludeClientScriptPlugin extends xajaxRequestPlugin
{
var $sJsURI;
var $aJsFiles;
var $sDefer;
var $sRequestURI;
var $sStatusMessages;
var $sWaitCursor;
var $sVersion;
var $sDefaultMode;
var $sDefaultMethod;
var $bDebug;
var $bVerboseDebug;
var $nScriptLoadTimeout;
var $bUseUncompressedScripts;
var $bDeferScriptGeneration;
var $sLanguage;
var $nResponseQueueSize;
function xajaxIncludeClientScriptPlugin()
{
$this->sJsURI = '';
$this->aJsFiles = array();
$this->sDefer = '';
$this->sRequestURI = '';
$this->sStatusMessages = 'false';
$this->sWaitCursor = 'true';
$this->sVersion = 'unknown';
$this->sDefaultMode = 'asynchronous';
$this->sDefaultMethod = 'POST'; // W3C: Method is case sensitive
$this->bDebug = false;
$this->bVerboseDebug = false;
$this->nScriptLoadTimeout = 2000;
$this->bUseUncompressedScripts = false;
$this->bDeferScriptGeneration = false;
$this->sLanguage = null;
$this->nResponseQueueSize = null;
}
/*
Function: configure
*/
function configure($sName, $mValue)
{
if ('javascript URI' == $sName) {
$this->sJsURI = $mValue;
} else if ("javascript files" == $sName) {
$this->aJsFiles = $mValue;
} else if ("scriptDefferal" == $sName) {
if (true === $mValue) $this->sDefer = "defer ";
else $this->sDefer = "";
} else if ("requestURI" == $sName) {
$this->sRequestURI = $mValue;
} else if ("statusMessages" == $sName) {
if (true === $mValue) $this->sStatusMessages = "true";
else $this->sStatusMessages = "false";
} else if ("waitCursor" == $sName) {
if (true === $mValue) $this->sWaitCursor = "true";
else $this->sWaitCursor = "false";
} else if ("version" == $sName) {
$this->sVersion = $mValue;
} else if ("defaultMode" == $sName) {
if ("asynchronous" == $mValue || "synchronous" == $mValue)
$this->sDefaultMode = $mValue;
} else if ("defaultMethod" == $sName) {
if ("POST" == $mValue || "GET" == $mValue) // W3C: Method is case sensitive
$this->sDefaultMethod = $mValue;
} else if ("debug" == $sName) {
if (true === $mValue || false === $mValue)
$this->bDebug = $mValue;
} else if ("verboseDebug" == $sName) {
if (true === $mValue || false === $mValue)
$this->bVerboseDebug = $mValue;
} else if ("scriptLoadTimeout" == $sName) {
$this->nScriptLoadTimeout = $mValue;
} else if ("useUncompressedScripts" == $sName) {
if (true === $mValue || false === $mValue)
$this->bUseUncompressedScripts = $mValue;
} else if ('deferScriptGeneration' == $sName) {
if (true === $mValue || false === $mValue)
$this->bDeferScriptGeneration = $mValue;
else if ('deferred' == $mValue)
$this->bDeferScriptGeneration = $mValue;
} else if ('language' == $sName) {
$this->sLanguage = $mValue;
} else if ('responseQueueSize' == $sName) {
$this->nResponseQueueSize = $mValue;
}
}
/*
Function: generateClientScript
*/
function generateClientScript()
{
if (false === $this->bDeferScriptGeneration)
{
$this->printJavascriptConfig();
$this->printJavascriptInclude();
}
else if (true === $this->bDeferScriptGeneration)
{
$this->printJavascriptInclude();
}
else if ('deferred' == $this->bDeferScriptGeneration)
{
$this->printJavascriptConfig();
}
}
/*
Function: getJavascriptConfig
Generates the xajax settings that will be used by the xajax javascript
library when making requests back to the server.
Returns:
string - The javascript code necessary to configure the settings on
the browser.
*/
function getJavascriptConfig()
{
ob_start();
$this->printJavascriptConfig();
return ob_get_clean();
}
/*
Function: printJavascriptConfig
See <xajaxIncludeClientScriptPlugin::getJavascriptConfig>
*/
function printJavascriptConfig()
{
$sCrLf = "\n";
echo $sCrLf;
echo '<';
echo 'script type="text/javascript" ';
echo $this->sDefer;
echo 'charset="UTF-8">';
echo $sCrLf;
echo '/* <';
echo '![CDATA[ */';
echo $sCrLf;
echo 'try { if (undefined == xajax.config) xajax.config = {}; } catch (e) { xajax = {}; xajax.config = {}; };';
echo $sCrLf;
echo 'xajax.config.requestURI = "';
echo $this->sRequestURI;
echo '";';
echo $sCrLf;
echo 'xajax.config.statusMessages = ';
echo $this->sStatusMessages;
echo ';';
echo $sCrLf;
echo 'xajax.config.waitCursor = ';
echo $this->sWaitCursor;
echo ';';
echo $sCrLf;
echo 'xajax.config.version = "';
echo $this->sVersion;
echo '";';
echo $sCrLf;
echo 'xajax.config.legacy = false;';
echo $sCrLf;
echo 'xajax.config.defaultMode = "';
echo $this->sDefaultMode;
echo '";';
echo $sCrLf;
echo 'xajax.config.defaultMethod = "';
echo $this->sDefaultMethod;
echo '";';
if (false === (null === $this->nResponseQueueSize))
{
echo $sCrLf;
echo 'xajax.config.responseQueueSize = ';
echo $this->nResponseQueueSize;
echo ';';
}
echo $sCrLf;
echo '/* ]]> */';
echo $sCrLf;
echo '<';
echo '/script>';
echo $sCrLf;
}
/*
Function: getJavascriptInclude
Generates SCRIPT tags necessary to load the javascript libraries on
the browser.
sJsURI - (string): The relative or fully qualified PATH that will be
used to compose the URI to the specified javascript files.
aJsFiles - (array): List of javascript files to include.
Returns:
string - The SCRIPT tags that will cause the browser to load the
specified files.
*/
function getJavascriptInclude()
{
ob_start();
$this->printJavascriptInclude();
return ob_get_clean();
}
/*
Function: printJavascriptInclude
See <xajaxIncludeClientScriptPlugin::getJavascriptInclude>
*/
function printJavascriptInclude()
{
$aJsFiles = $this->aJsFiles;
$sJsURI = $this->sJsURI;
if (0 == count($aJsFiles)) {
$aJsFiles[] = array($this->_getScriptFilename('xajax_js/xajax_core.js'), 'xajax');
if (true === $this->bDebug)
$aJsFiles[] = array($this->_getScriptFilename('xajax_js/xajax_debug.js'), 'xajax.debug');
if (true === $this->bVerboseDebug)
$aJsFiles[] = array($this->_getScriptFilename('xajax_js/xajax_verbose.js'), 'xajax.debug.verbose');
if (null !== $this->sLanguage)
$aJsFiles[] = array($this->_getScriptFilename('xajax_js/xajax_lang_' . $this->sLanguage . '.js'), 'xajax');
}
if ($sJsURI != '' && substr($sJsURI, -1) != '/')
$sJsURI .= '/';
$sCrLf = "\n";
foreach ($aJsFiles as $aJsFile) {
echo '<';
echo 'script type="text/javascript" src="';
echo $sJsURI;
echo $aJsFile[0];
echo '" ';
echo $this->sDefer;
echo 'charset="UTF-8"><';
echo '/script>';
echo $sCrLf;
}
if (0 < $this->nScriptLoadTimeout) {
foreach ($aJsFiles as $aJsFile) {
echo '<';
echo 'script type="text/javascript" ';
echo $this->sDefer;
echo 'charset="UTF-8">';
echo $sCrLf;
echo '/* <';
echo '![CDATA[ */';
echo $sCrLf;
echo 'window.setTimeout(';
echo $sCrLf;
echo ' function() {';
echo $sCrLf;
echo ' var scriptExists = false;';
echo $sCrLf;
echo ' try { if (';
echo $aJsFile[1];
echo '.isLoaded) scriptExists = true; }';
echo $sCrLf;
echo ' catch (e) {}';
echo $sCrLf;
echo ' if (!scriptExists) {';
echo $sCrLf;
echo ' alert("Error: the ';
echo $aJsFile[1];
echo ' Javascript component could not be included. Perhaps the URL is incorrect?\nURL: ';
echo $sJsURI;
echo $aJsFile[0];
echo '");';
echo $sCrLf;
echo ' }';
echo $sCrLf;
echo ' }, ';
echo $this->nScriptLoadTimeout;
echo ');';
echo $sCrLf;
echo '/* ]]> */';
echo $sCrLf;
echo '<';
echo '/script>';
echo $sCrLf;
}
}
}
/*
Function: _getScriptFilename
Returns the name of the script file, based on the current settings.
sFilename - (string): The base filename.
Returns:
string - The filename as it should be specified in the script tags
on the browser.
*/
function _getScriptFilename($sFilename)
{
if ($this->bUseUncompressedScripts) {
return str_replace('.js', '_uncompressed.js', $sFilename);
}
return $sFilename;
}
}
/*
Register the xajaxIncludeClientScriptPlugin object with the xajaxPluginManager.
*/
$objPluginManager =& xajaxPluginManager::getInstance();
$objPluginManager->registerPlugin(new xajaxIncludeClientScriptPlugin(), 99);

View File

@ -0,0 +1,229 @@
<?php
/*
File: xajaxEventPlugin.inc.php
Contains the xajaxEventPlugin class
Title: xajaxEventPlugin class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxEventPlugin.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Constant: XAJAX_EVENT
Specifies that the item being registered via the <xajax->register> function
is an event.
Constant: XAJAX_EVENT_HANDLER
Specifies that the item being registered via the <xajax->register> function
is an event handler.
*/
if (!defined ('XAJAX_EVENT')) define ('XAJAX_EVENT', 'xajax event');
if (!defined ('XAJAX_EVENT_HANDLER')) define ('XAJAX_EVENT_HANDLER', 'xajax event handler');
//SkipAIO
require dirname(__FILE__) . '/support/xajaxEvent.inc.php';
//EndSkipAIO
/*
Class: xajaxEventPlugin
Plugin that adds server side event handling capabilities to xajax. Events can
be registered, then event handlers attached.
*/
class xajaxEventPlugin extends xajaxRequestPlugin
{
/*
Array: aEvents
*/
var $aEvents;
/*
String: sXajaxPrefix
*/
var $sXajaxPrefix;
/*
String: sEventPrefix
*/
var $sEventPrefix;
/*
String: sDefer
*/
var $sDefer;
var $bDeferScriptGeneration;
/*
String: sRequestedEvent
*/
var $sRequestedEvent;
/*
Function: xajaxEventPlugin
*/
function xajaxEventPlugin()
{
$this->aEvents = array();
$this->sXajaxPrefix = 'xajax_';
$this->sEventPrefix = 'event_';
$this->sDefer = '';
$this->bDeferScriptGeneration = false;
$this->sRequestedEvent = NULL;
if (isset($_GET['xjxevt'])) $this->sRequestedEvent = $_GET['xjxevt'];
if (isset($_POST['xjxevt'])) $this->sRequestedEvent = $_POST['xjxevt'];
}
/*
Function: configure
*/
function configure($sName, $mValue)
{
if ('wrapperPrefix' == $sName) {
$this->sXajaxPrefix = $mValue;
} else if ('eventPrefix' == $sName) {
$this->sEventPrefix = $mValue;
} else if ('scriptDefferal' == $sName) {
if (true === $mValue) $this->sDefer = 'defer ';
else $this->sDefer = '';
} else if ('deferScriptGeneration' == $sName) {
if (true === $mValue || false === $mValue)
$this->bDeferScriptGeneration = $mValue;
else if ('deferred' === $mValue)
$this->bDeferScriptGeneration = $mValue;
}
}
/*
Function: register
$sType - (string): type of item being registered
$sEvent - (string): the name of the event
$ufHandler - (function name or reference): a reference to the user function to call
$aConfiguration - (array): an array containing configuration options
*/
function register($aArgs)
{
if (1 < count($aArgs))
{
$sType = $aArgs[0];
if (XAJAX_EVENT == $sType)
{
$sEvent = $aArgs[1];
if (false === isset($this->aEvents[$sEvent]))
{
$xe = new xajaxEvent($sEvent);
if (2 < count($aArgs))
if (is_array($aArgs[2]))
foreach ($aArgs[2] as $sKey => $sValue)
$xe->configure($sKey, $sValue);
$this->aEvents[$sEvent] =& $xe;
return $xe->generateRequest($this->sXajaxPrefix, $this->sEventPrefix);
}
}
if (XAJAX_EVENT_HANDLER == $sType)
{
$sEvent = $aArgs[1];
if (isset($this->aEvents[$sEvent]))
{
if (isset($aArgs[2]))
{
$xuf =& $aArgs[2];
if (false === is_a($xuf, 'xajaxUserFunction'))
$xuf = new xajaxUserFunction($xuf);
$objEvent =& $this->aEvents[$sEvent];
$objEvent->addHandler($xuf);
return true;
}
}
}
}
return false;
}
/*
Function: generateClientScript
*/
function generateClientScript()
{
if (false === $this->bDeferScriptGeneration || 'deferred' === $this->bDeferScriptGeneration)
{
if (0 < count($this->aEvents))
{
echo "\n<script type='text/javascript' ";
echo $this->sDefer;
echo "charset='UTF-8'>\n";
echo "/* <![CDATA[ */\n";
foreach (array_keys($this->aEvents) as $sKey)
$this->aEvents[$sKey]->generateClientScript($this->sXajaxPrefix, $this->sEventPrefix);
echo "/* ]]> */\n";
echo "</script>\n";
}
}
}
/*
Function: canProcessRequest
*/
function canProcessRequest()
{
if (NULL == $this->sRequestedEvent)
return false;
return true;
}
/*
Function: processRequest
*/
function processRequest()
{
if (NULL == $this->sRequestedEvent)
return false;
$objArgumentManager =& xajaxArgumentManager::getInstance();
$aArgs = $objArgumentManager->process();
foreach (array_keys($this->aEvents) as $sKey)
{
$objEvent =& $this->aEvents[$sKey];
if ($objEvent->getName() == $this->sRequestedEvent)
{
$objEvent->fire($aArgs);
return true;
}
}
return 'Invalid event request received; no event was registered with this name.';
}
}
$objPluginManager =& xajaxPluginManager::getInstance();
$objPluginManager->registerPlugin(new xajaxEventPlugin(), 103);

View File

@ -0,0 +1,231 @@
<?php
/*
File: xajaxFunctionPlugin.inc.php
Contains the xajaxFunctionPlugin class
Title: xajaxFunctionPlugin class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxFunctionPlugin.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Constant: XAJAX_FUNCTION
Specifies that the item being registered via the <xajax->register> function
is a php function available at global scope, or a specific function from
an instance of an object.
*/
if (!defined ('XAJAX_FUNCTION')) define ('XAJAX_FUNCTION', 'function');
// require_once is necessary here as the xajaxEvent class will include this also
//SkipAIO
require_once dirname(__FILE__) . '/support/xajaxUserFunction.inc.php';
//EndSkipAIO
/*
Class: xajaxFunctionPlugin
*/
class xajaxFunctionPlugin extends xajaxRequestPlugin
{
/*
Array: aFunctions
An array of <xajaxUserFunction> object that are registered and
available via a <xajax.request> call.
*/
var $aFunctions;
/*
String: sXajaxPrefix
A configuration setting that is stored locally and used during
the client script generation phase.
*/
var $sXajaxPrefix;
/*
String: sDefer
Configuration option that can be used to request that the
javascript file is loaded after the page has been fully loaded.
*/
var $sDefer;
var $bDeferScriptGeneration;
/*
String: sRequestedFunction
This string is used to temporarily hold the name of the function
that is being requested (during the request processing phase).
Since canProcessRequest loads this value from the get or post
data, it is unnecessary to load it again.
*/
var $sRequestedFunction;
/*
Function: xajaxFunctionPlugin
Constructs and initializes the <xajaxFunctionPlugin>. The GET and POST
data is searched for xajax function call parameters. This will later
be used to determine if the request is for a registered function in
<xajaxFunctionPlugin->canProcessRequest>
*/
function xajaxFunctionPlugin()
{
$this->aFunctions = array();
$this->sXajaxPrefix = 'xajax_';
$this->sDefer = '';
$this->bDeferScriptGeneration = false;
$this->sRequestedFunction = NULL;
if (isset($_GET['xjxfun'])) $this->sRequestedFunction = $_GET['xjxfun'];
if (isset($_POST['xjxfun'])) $this->sRequestedFunction = $_POST['xjxfun'];
}
/*
Function: configure
Sets/stores configuration options used by this plugin.
*/
function configure($sName, $mValue)
{
if ('wrapperPrefix' == $sName) {
$this->sXajaxPrefix = $mValue;
} else if ('scriptDefferal' == $sName) {
if (true === $mValue) $this->sDefer = 'defer ';
else $this->sDefer = '';
} else if ('deferScriptGeneration' == $sName) {
if (true === $mValue || false === $mValue)
$this->bDeferScriptGeneration = $mValue;
else if ('deferred' === $mValue)
$this->bDeferScriptGeneration = $mValue;
}
}
/*
Function: register
Provides a mechanism for functions to be registered and made available to
the page via the javascript <xajax.request> call.
*/
function register($aArgs)
{
if (1 < count($aArgs))
{
$sType = $aArgs[0];
if (XAJAX_FUNCTION == $sType)
{
$xuf =& $aArgs[1];
if (false === is_a($xuf, 'xajaxUserFunction'))
$xuf = new xajaxUserFunction($xuf);
if (2 < count($aArgs))
if (is_array($aArgs[2]))
foreach ($aArgs[2] as $sName => $sValue)
$xuf->configure($sName, $sValue);
$this->aFunctions[] =& $xuf;
return $xuf->generateRequest($this->sXajaxPrefix);
}
}
return false;
}
/*
Function: generateClientScript
Called by the <xajaxPluginManager> during the client script generation
phase. This is used to generate a block of javascript code that will
contain function declarations that can be used on the browser through
javascript to initiate xajax requests.
*/
function generateClientScript()
{
if (false === $this->bDeferScriptGeneration || 'deferred' === $this->bDeferScriptGeneration)
{
if (0 < count($this->aFunctions))
{
echo "\n<script type='text/javascript' " . $this->sDefer . "charset='UTF-8'>\n";
echo "/* <![CDATA[ */\n";
foreach (array_keys($this->aFunctions) as $sKey)
$this->aFunctions[$sKey]->generateClientScript($this->sXajaxPrefix);
echo "/* ]]> */\n";
echo "</script>\n";
}
}
}
/*
Function: canProcessRequest
Determines whether or not the current request can be processed
by this plugin.
Returns:
boolean - True if the current request can be handled by this plugin;
false otherwise.
*/
function canProcessRequest()
{
if (NULL == $this->sRequestedFunction)
return false;
return true;
}
/*
Function: processRequest
Called by the <xajaxPluginManager> when a request needs to be
processed.
Returns:
mixed - True when the request has been processed successfully.
An error message when an error has occurred.
*/
function processRequest()
{
if (NULL == $this->sRequestedFunction)
return false;
$objArgumentManager =& xajaxArgumentManager::getInstance();
$aArgs = $objArgumentManager->process();
foreach (array_keys($this->aFunctions) as $sKey)
{
$xuf =& $this->aFunctions[$sKey];
if ($xuf->getName() == $this->sRequestedFunction)
{
$xuf->call($aArgs);
return true;
}
}
return 'Invalid function request received; no request processor found with this name.';
}
}
$objPluginManager =& xajaxPluginManager::getInstance();
$objPluginManager->registerPlugin(new xajaxFunctionPlugin(), 100);

View File

@ -0,0 +1,266 @@
<?php
/*
File: xajaxScriptPlugin.inc.php
Contains the xajaxScriptPlugin class declaration.
Title: xajaxScriptPlugin class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxScriptPlugin.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Class: xajaxScriptPlugin
Contains the code that can produce script and style data during deferred script
generation. This allows the xajax generated javascript and style sheet information
to be loaded via an external file reference instead of inlined into the page
source.
*/
class xajaxScriptPlugin extends xajaxRequestPlugin
{
/*
String: sRequest
*/
var $sRequest;
/*
String: sHash
*/
var $sHash;
/*
String: sRequestURI
*/
var $sRequestURI;
/*
Boolean: bDeferScriptGeneration
*/
var $bDeferScriptGeneration;
/*
Boolean: bValidateHash
*/
var $bValidateHash;
/*
Boolean: bWorking
*/
var $bWorking;
/*
Function: xajaxScriptPlugin
Construct and initialize the xajax script plugin object. During
initialization, this plugin will look for hash codes in the
GET data (parameters passed on the request URI) and store them
for later use.
*/
function xajaxScriptPlugin()
{
$this->sRequestURI = '';
$this->bDeferScriptGeneration = false;
$this->bValidateHash = true;
$this->bWorking = false;
$this->sRequest = '';
$this->sHash = null;
if (isset($_GET['xjxGenerateJavascript'])) {
$this->sRequest = 'script';
$this->sHash = $_GET['xjxGenerateJavascript'];
}
if (isset($_GET['xjxGenerateStyle'])) {
$this->sRequest = 'style';
$this->sHash = $_GET['xjxGenerateStyle'];
}
}
/*
Function: configure
Sets/stores configuration options used by this plugin. See also:
<xajax::configure>. This plugin will watch for and store the current
setting for the following configuration options:
- <requestURI> (string): The requestURI of the current script file.
- <deferScriptGeneration> (boolean): A flag that indicates whether
script deferral is in effect or not.
- <deferScriptValidateHash> (boolean): A flag that indicates whether
or not the script hash should be validated.
*/
function configure($sName, $mValue)
{
if ('requestURI' == $sName) {
$this->sRequestURI = $mValue;
} else if ('deferScriptGeneration' == $sName) {
if (true === $mValue || false === $mValue)
$this->bDeferScriptGeneration = $mValue;
} else if ('deferScriptValidateHash' == $sName) {
if (true === $mValue || false === $mValue)
$this->bValidateHash = $mValue;
}
}
/*
Function: generateClientScript
Called by the <xajaxPluginManager> when the text of the client script
(or style) declarations are needed.
This function will only output script or style information if the
request URI contained an appropriate hash code and script deferral
is in effect.
*/
function generateClientScript()
{
if ($this->bWorking)
return;
if (true === $this->bDeferScriptGeneration)
{
$this->bWorking = true;
$sQueryBase = '?';
if (0 < strpos($this->sRequestURI, '?'))
$sQueryBase = '&';
$aScripts = $this->_getSections('script');
if (0 < count($aScripts))
{
// echo "<!--" . print_r($aScripts, true) . "-->";
$sHash = md5(implode($aScripts));
$sQuery = $sQueryBase . "xjxGenerateJavascript=" . $sHash;
echo "\n<script type='text/javascript' src='" . $this->sRequestURI . $sQuery . "' charset='UTF-8'></script>\n";
}
$aStyles = $this->_getSections('style');
if (0 < count($aStyles))
{
// echo "<!--" . print_r($aStyles, true) . "-->";
$sHash = md5(implode($aStyles));
$sQuery = $sQueryBase . "xjxGenerateStyle=" . $sHash;
echo "\n<link href='" . $this->sRequestURI . $sQuery . "' rel='Stylesheet' />\n";
}
$this->bWorking = false;
}
}
/*
Function: canProcessRequest
Called by the <xajaxPluginManager> to determine if this plugin can
process the current request. This will return true when the
requestURI contains an appropriate hash code.
*/
function canProcessRequest()
{
return ('' != $this->sRequest);
}
function &_getSections($sType)
{
$objPluginManager =& xajaxPluginManager::getInstance();
$objPluginManager->configure('deferScriptGeneration', 'deferred');
$aSections = array();
// buffer output
ob_start();
$objPluginManager->generateClientScript();
$sScript = ob_get_clean();
// parse out blocks
$aParts = explode('</' . $sType . '>', $sScript);
foreach ($aParts as $sPart)
{
$aValues = explode('<' . $sType, $sPart, 2);
if (2 == count($aValues))
{
list($sJunk, $sPart) = $aValues;
$aValues = explode('>', $sPart, 2);
if (2 == count($aValues))
{
list($sJunk, $sPart) = $aValues;
if (0 < strlen($sPart))
$aSections[] = $sPart;
}
}
}
$objPluginManager->configure('deferScriptGeneration', $this->bDeferScriptGeneration);
return $aSections;
}
/*
Function: processRequest
Called by the <xajaxPluginManager> when the current request should be
processed. This plugin will generate the javascript or style sheet information
that would normally be output by the other xajax plugin objects, when script
deferral is in effect. If script deferral is disabled, this function returns
without performing any functions.
*/
function processRequest()
{
if ($this->canProcessRequest())
{
$aSections =& $this->_getSections($this->sRequest);
// echo "<!--" . print_r($aSections, true) . "-->";
// validate the hash
$sHash = md5(implode($aSections));
if (false == $this->bValidateHash || $sHash == $this->sHash)
{
$sType = 'text/javascript';
if ('style' == $this->sRequest)
$sType = 'text/css';
$objResponse = new xajaxCustomResponse($sType);
foreach ($aSections as $sSection)
$objResponse->append($sSection . "\n");
$objResponseManager =& xajaxResponseManager::getInstance();
$objResponseManager->append($objResponse);
header ('Expires: ' . gmdate('D, d M Y H:i:s', time() + (60*60*24)) . ' GMT');
return true;
}
return 'Invalid script or style request.';
trigger_error('Hash mismatch: ' . $this->sRequest . ': ' . $sHash . ' <==> ' . $this->sHash, E_USER_ERROR);
}
}
}
/*
Register the plugin with the xajax plugin manager.
*/
$objPluginManager =& xajaxPluginManager::getInstance();
$objPluginManager->registerPlugin(new xajaxScriptPlugin(), 9999);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,466 @@
<?php
/*
File: xajaxArgumentManager.inc.php
Contains the xajaxArgumentManager class
Title: xajaxArgumentManager class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxArgumentManager.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
if (!defined('XAJAX_METHOD_UNKNOWN')) define('XAJAX_METHOD_UNKNOWN', 0);
if (!defined('XAJAX_METHOD_GET')) define('XAJAX_METHOD_GET', 1);
if (!defined('XAJAX_METHOD_POST')) define('XAJAX_METHOD_POST', 2);
/*
Class: xajaxArgumentManager
This class processes the input arguments from the GET or POST data of
the request. If this is a request for the initial page load, no arguments
will be processed. During a xajax request, any arguments found in the
GET or POST will be converted to a PHP array.
*/
class xajaxArgumentManager
{
/*
Array: aArgs
An array of arguments received via the GET or POST parameter
xjxargs.
*/
var $aArgs;
/*
Boolean: bDecodeUTF8Input
A configuration option used to indicate whether input data should be
UTF8 decoded automatically.
*/
var $bDecodeUTF8Input;
/*
String: sCharacterEncoding
The character encoding in which the input data will be received.
*/
var $sCharacterEncoding;
/*
Integer: nMethod
Stores the method that was used to send the arguments from the client. Will
be one of: XAJAX_METHOD_UNKNOWN, XAJAX_METHOD_GET, XAJAX_METHOD_POST
*/
var $nMethod;
/*
Array: aSequence
Stores the decoding sequence table.
*/
var $aSequence;
/*
Function: convertStringToBool
Converts a string to a bool var.
Parameters:
$sValue - (string):
Returns:
(bool) : true / false
*/
function convertStringToBool($sValue)
{
if (0 == strcasecmp($sValue, 'true'))
return true;
if (0 == strcasecmp($sValue, 'false'))
return false;
if (is_numeric($sValue))
{
if (0 == $sValue)
return false;
return true;
}
return false;
}
function argumentStripSlashes(&$sArg)
{
if (false == is_string($sArg))
return;
$sArg = stripslashes($sArg);
}
function argumentDecodeXML(&$sArg)
{
if (false == is_string($sArg))
return;
if (0 == strlen($sArg))
return;
$nStackDepth = 0;
$aStack = array();
$aArg = array();
$nCurrent = 0;
$nLast = 0;
$aExpecting = array();
$nFound = 0;
list($aExpecting, $nFound) = $this->aSequence['start'];
$nLength = strlen($sArg);
$sKey = '';
$mValue = '';
while ($nCurrent < $nLength)
{
$bFound = false;
foreach ($aExpecting as $sExpecting => $nExpectedLength)
{
if ($sArg[$nCurrent] == $sExpecting[0])
{
if ($sExpecting == substr($sArg, $nCurrent, $nExpectedLength))
{
list($aExpecting, $nFound) = $this->aSequence[$sExpecting];
switch ($nFound)
{
case 3: // k
$sKey = '';
break;
case 4: // /k
$sKey = str_replace(
array('<'.'![CDATA[', ']]>'),
'',
substr($sArg, $nLast, $nCurrent - $nLast)
);
break;
case 5: // v
$mValue = '';
break;
case 6: // /v
if ($nLast < $nCurrent)
{
$mValue = str_replace(
array('<'.'![CDATA[', ']]>'),
'',
substr($sArg, $nLast, $nCurrent - $nLast)
);
$cType = substr($mValue, 0, 1);
$sValue = substr($mValue, 1);
switch ($cType) {
case 'S': $mValue = false === $sValue ? '' : $sValue; break;
case 'B': $mValue = $this->convertStringToBool($sValue); break;
case 'N': $mValue = floatval($sValue); break;
case '*': $mValue = null; break;
}
}
break;
case 7: // /e
$aArg[$sKey] = $mValue;
break;
case 1: // xjxobj
++$nStackDepth;
array_push($aStack, $aArg);
$aArg = array();
array_push($aStack, $sKey);
$sKey = '';
break;
case 8: // /xjxobj
if (1 < $nStackDepth) {
$mValue = $aArg;
$sKey = array_pop($aStack);
$aArg = array_pop($aStack);
--$nStackDepth;
} else {
$sArg = $aArg;
return;
}
break;
}
$nCurrent += $nExpectedLength;
$nLast = $nCurrent;
$bFound = true;
break;
}
}
}
if (false == $bFound)
{
if (0 == $nCurrent)
{
$sArg = str_replace(
array('<'.'![CDATA[', ']]>'),
'',
$sArg
);
$cType = substr($sArg, 0, 1);
$sValue = substr($sArg, 1);
switch ($cType) {
case 'S': $sArg = false === $sValue ? '' : $sValue; break;
case 'B': $sArg = $this->convertStringToBool($sValue); break;
case 'N': $sArg = floatval($sValue); break;
case '*': $sArg = null; break;
}
return;
}
// for larger arg data, performance may suffer using concatenation
// $sText .= $sArg[$nCurrent];
$nCurrent++;
}
}
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('ARGMGR:ERR:01')
. $sExpecting
. $objLanguageManager->getText('ARGMGR:ERR:02')
. $sArg
, E_USER_ERROR
);
}
function argumentDecodeUTF8_iconv(&$mArg)
{
if (is_array($mArg))
{
foreach (array_keys($mArg) as $sKey)
{
$sNewKey = $sKey;
$this->argumentDecodeUTF8_iconv($sNewKey);
if ($sNewKey != $sKey)
{
$mArg[$sNewKey] = $mArg[$sKey];
unset($mArg[$sKey]);
$sKey = $sNewKey;
}
$this->argumentDecodeUTF8_iconv($mArg[$sKey]);
}
}
else if (is_string($mArg))
$mArg = iconv("UTF-8", $this->sCharacterEncoding.'//TRANSLIT', $mArg);
}
function argumentDecodeUTF8_mb_convert_encoding(&$mArg)
{
if (is_array($mArg))
{
foreach (array_keys($mArg) as $sKey)
{
$sNewKey = $sKey;
$this->argumentDecodeUTF8_mb_convert_encoding($sNewKey);
if ($sNewKey != $sKey)
{
$mArg[$sNewKey] = $mArg[$sKey];
unset($mArg[$sKey]);
$sKey = $sNewKey;
}
$this->argumentDecodeUTF8_mb_convert_encoding($mArg[$sKey]);
}
}
else if (is_string($mArg))
$mArg = mb_convert_encoding($mArg, $this->sCharacterEncoding, "UTF-8");
}
function argumentDecodeUTF8_utf8_decode(&$mArg)
{
if (is_array($mArg))
{
foreach (array_keys($mArg) as $sKey)
{
$sNewKey = $sKey;
$this->argumentDecodeUTF8_utf8_decode($sNewKey);
if ($sNewKey != $sKey)
{
$mArg[$sNewKey] = $mArg[$sKey];
unset($mArg[$sKey]);
$sKey = $sNewKey;
}
$this->argumentDecodeUTF8_utf8_decode($mArg[$sKey]);
}
}
else if (is_string($mArg))
$mArg = utf8_decode($mArg);
}
/*
Constructor: xajaxArgumentManager
Initializes configuration settings to their default values and reads
the argument data from the GET or POST data.
*/
function xajaxArgumentManager()
{
$this->aArgs = array();
$this->bDecodeUTF8Input = false;
$this->sCharacterEncoding = 'UTF-8';
$this->nMethod = XAJAX_METHOD_UNKNOWN;
$this->aSequence = array(
'<'.'k'.'>' => array(array(
'<'.'/k'.'>' => 4
), 3),
'<'.'/k'.'>' => array(array(
'<'.'v'.'>' => 3,
'<'.'/e'.'>' => 4
), 4),
'<'.'v'.'>' => array(array(
'<'.'xjxobj'.'>' => 8,
'<'.'/v'.'>' => 4
), 5),
'<'.'/v'.'>' => array(array(
'<'.'/e'.'>' => 4,
'<'.'k'.'>' => 3
), 6),
'<'.'e'.'>' => array(array(
'<'.'k'.'>' => 3,
'<'.'v'.'>' => 3,
'<'.'/e'.'>' => 4
), 2),
'<'.'/e'.'>' => array(array(
'<'.'e'.'>' => 3,
'<'.'/xjxobj'.'>' => 9
), 7),
'<'.'xjxobj'.'>' => array(array(
'<'.'e'.'>' => 3,
'<'.'/xjxobj'.'>' => 9
), 1),
'<'.'/xjxobj'.'>' => array(array(
'<'.'/v'.'>' => 4
), 8),
'start' => array(array(
'<'.'xjxobj'.'>' => 8
), 9)
);
if (isset($_POST['xjxargs'])) {
$this->nMethod = XAJAX_METHOD_POST;
$this->aArgs = $_POST['xjxargs'];
} else if (isset($_GET['xjxargs'])) {
$this->nMethod = XAJAX_METHOD_GET;
$this->aArgs = $_GET['xjxargs'];
}
if (1 == get_magic_quotes_gpc())
array_walk($this->aArgs, array(&$this, 'argumentStripSlashes'));
array_walk($this->aArgs, array(&$this, 'argumentDecodeXML'));
}
/*
Function: getInstance
Returns:
object - A reference to an instance of this class. This function is
used to implement the singleton pattern.
*/
function &getInstance()
{
static $obj;
if (!$obj) {
$obj = new xajaxArgumentManager();
}
return $obj;
}
/*
Function: configure
Accepts configuration settings from the main <xajax> object.
Parameters:
The <xajaxArgumentManager> tracks the following configuration settings:
<decodeUTF8Input> - (boolean): See <xajaxArgumentManager->bDecodeUTF8Input>
<characterEncoding> - (string): See <xajaxArgumentManager->sCharacterEncoding>
*/
function configure($sName, $mValue)
{
if ('decodeUTF8Input' == $sName) {
if (true === $mValue || false === $mValue)
$this->bDecodeUTF8Input = $mValue;
} else if ('characterEncoding' == $sName) {
$this->sCharacterEncoding = $mValue;
}
}
/*
Function: getRequestMethod
Returns the method that was used to send the arguments from the client.
*/
function getRequestMethod()
{
return $this->nMethod;
}
/*
Function: process
Returns the array of arguments that were extracted and parsed from
the GET or POST data.
*/
function process()
{
if ($this->bDecodeUTF8Input)
{
$sFunction = '';
if (function_exists('iconv'))
$sFunction = "iconv";
else if (function_exists('mb_convert_encoding'))
$sFunction = "mb_convert_encoding";
else if ($this->sCharacterEncoding == "ISO-8859-1")
$sFunction = "utf8_decode";
else {
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('ARGMGR:ERR:03')
, E_USER_NOTICE
);
}
$mFunction = array(&$this, 'argumentDecodeUTF8_' . $sFunction);
array_walk($this->aArgs, $mFunction);
$this->bDecodeUTF8Input = false;
}
return $this->aArgs;
}
}

View File

@ -0,0 +1,389 @@
<?php
/*
File: xajaxCall.inc.php
Contains the xajaxCall class
Title: xajaxCall class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxCall.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Class: xajaxCall
Create a piece of javascript code that will invoke the <xajax.call>
function.
This class is deprecated and will be removed in future versions; please use
<xajaxRequest> instead.
*/
class xajaxCall {
/**#@+
* @access protected
*/
/*
String: sFunction
Required: The name of the xajax enabled function to call
*/
var $sFunction;
/*
String: sReturnValue
Required: The value to return once the <xajax.call> has
returned. (for asynchronous calls, this is immediate)
*/
var $sReturnValue;
/*
Array: aParameters
The associative array that will be used to store the parameters for this
call.
- key: The textual representation of the parameter.
- value: A boolean value indicating whether or not to use quotes around
this parameter.
*/
var $aParameters;
/*
String: sMode
The mode to use for the call
- 'synchronous'
- 'asynchronous'
*/
var $sMode;
/*
String: sRequestType
The request type that will be used for the call
- 'GET'
- 'POST'
*/
var $sRequestType;
/*
String: sResponseProcessor
The name of the javascript function that will be invoked
to handle the response.
*/
var $sResponseProcessor;
/*
String: sRequestURI
The URI for where this request will be sent.
*/
var $sRequestURI;
/*
String: sContentType
The content type to use for the request.
*/
var $sContentType;
/*
Constructor: xajaxCall
Initializes the xajaxCall object.
Parameters:
sFunction - (string): The name of the xajax enabled function
that will be invoked when this javascript code is executed
on the browser. This function name should match a PHP
function from your script.
*/
function xajaxCall($sFunction = '') {
$this->sFunction = $sFunction;
$this->aParameters = array();
$this->sMode = '';
$this->sRequestType = '';
$this->sResponseProcessor = '';
$this->sRequestURI = '';
$this->sContentType = '';
}
/*
Function: setFunction
Override the function name set in the constructor.
Parameters:
sFunction - (string): The name of the xajax enabled function
that will be invoked when this javascript code is executed
on the browser. This function name should match a PHP
function from your script.
Returns:
object : The <xajaxCall> object.
*/
function setFunction($sFunction) {
$this->sFunction = $sFunction;
return $this;
}
/*
Function: clearParameters
Clear the list of parameters being accumulated for this
call.
Returns:
object : The <xajaxCall> object.
*/
function clearParameters() {
$this->aParameters = array();
}
/*
Function: addParameter
Adds a parameter to the list that will be specified for the
request generated by this <xajaxCall> object.
Parameters:
sParameter - (string): The parameter value or name.
bUseQuotes - (boolean): Whether or not to put quotes around this value.
If you specify the name of a javascript variable, or provide a javascript
function call as a parameter, do not use quotes around the value.
Returns:
object : The <xajaxCall> object.
*/
function addParameter($sParameter, $bUseQuotes = true) {
$this->aParameters[] = array($sParameter, $bUseQuotes);
return $this;
}
/*
Function: addFormValuesParameter
Add a parameter value that is the result of calling <xajax.getFormValues>
for the specified form.
Parameters:
sFormID - (string): The id of the form for which you wish to return
the input values.
Returns:
object : The <xajaxCall> object.
*/
function addFormValuesParameter($sFormID) {
$this->aParameters[] = array('xajax.getFormValues("'.$sFormID.'")');
return $this;
}
/*
Function: setMode
Sets the mode that will be specified for this <xajax.call>
Parameters:
$sMode - (string): The mode to be set.
- 'synchronous'
- 'asynchronous'
Returns:
object : The <xajaxCall> object.
*/
function setMode($sMode) {
$this->sMode = $sMode;
return $this;
}
/*
Function: setRequestType
Sets the request type which will be specified for the
generated <xajax.call>.
Parameters:
- 'GET'
- 'POST'
Returns:
object : The <xajaxCall> object.
*/
function setRequestType($sRequestType) {
$this->sRequestType = $sRequestType;
return $this;
}
/*
Function: setResponseProcessor
Sets the name of the javascript function that will be used
to process this response. This is an advanced function, use
with caution.
Parameters:
Returns:
object : The <xajaxCall> object.
*/
function setResponseProcessor($sResponseProcessor) {
$this->sResponseProcessor = $sResponseProcessor;
return $this;
}
/*
Function: setRequestURI
Override the default URI with the specified one.
Parameters:
sRequestURI - (string): The URI that the generated request will be sent
to.
Returns:
object : The <xajaxCall> object.
*/
function setRequestURI($sRequestURI) {
$this->sRequestURI = $sRequestURI;
return $this;
}
/*
Function: setContentType
Sets the content type that will be used by the generated request.
Parameters:
Returns:
object : The <xajaxCall> object.
*/
function setContentType($sContentType) {
$this->sContentType = $sContentType;
}
/*
Function: setReturnValue
Sets the value that will be returned after the generated call.
Set to an empty string if no return value is desired.
Parameters:
Returns:
object : The <xajaxCall> object.
*/
function setReturnValue($sReturnValue) {
$this->sReturnValue = $sReturnValue;
}
/*
Function: generate
Construct a <xajax.call> statement in javascript that can be used
to make a xajax request with the parameters and settings previously
configured for this <xajaxCall> object.
The output from this function can be used as an event handler in your
javascript code.
Returns:
string - The javascript statement that will invoked the <xajax.call>
function on the browser, causing a xajax request to be sent to
the server.
*/
function generate() {
$output = 'xajax.call("';
$output .= $this->sFunction;
$output .= '", {';
$separator = '';
if (0 < count($this->aParameters)) {
$output .= 'parameters: [';
foreach ($this->aParameters as $aParameter) {
$output .= $separator;
$bUseQuotes = $aParameter[1];
if ($bUseQuotes)
$output .= '"';
$output .= $aParameter[0];
if ($bUseQuotes)
$output .= '"';
$separator = ',';
}
$output .= ']';
}
if (0 < strlen($this->sMode)) {
$output .= $separator;
$output .= 'mode:"';
$output .= $this->sMode;
$output .= '"';
$separator = ',';
}
if (0 < strlen($this->sRequestType)) {
$output .= $separator;
$output .= 'requestType:"';
$output .= $this->sRequestType;
$output .= '"';
$separator = ',';
}
if (0 < strlen($this->sResponseProcessor)) {
$output .= $separator;
$output .= 'responseProcessor:';
$output .= $this->sResponseProcessor;
$separator = ',';
}
if (0 < strlen($this->sRequestURI)) {
$output .= $separator;
$output .= 'requestURI:"';
$output .= $this->sRequestURI;
$output .= '"';
$separator = ',';
}
if (0 < strlen($this->sContentType)) {
$output .= $separator;
$output .= 'contentType:"';
$output .= $this->sContentType;
$output .= '"';
$separator = ',';
}
$output .= '}); ';
if (0 < strlen($this->sReturnValue)) {
$output .= 'return ';
$output .= $this->sReturnValue;
} else {
$output .= 'return false;';
}
return $output;
}
}

View File

@ -0,0 +1,148 @@
<?php
/*
Function: xajaxCompressFile
<xajax> will call this function internally to compress the javascript code for
more efficient delivery.
Parameters:
$sFile - (stirng): The file to be compressed.
*/
function xajaxCompressFile($sFile)
{
//remove windows cariage returns
$sFile = str_replace("\r",'',$sFile);
//array to store replaced literal strings
$literal_strings = array();
//explode the string into lines
$lines = explode("\n",$sFile);
//loop through all the lines, building a new string at the same time as removing literal strings
$clean = '';
$inComment = false;
$literal = '';
$inQuote = false;
$escaped = false;
$quoteChar = '';
$iLen = count($lines);
for($i=0; $i<$iLen; ++$i)
{
$line = $lines[$i];
$inNormalComment = false;
//loop through line's characters and take out any literal strings, replace them with ___i___ where i is the index of this string
$jLen = strlen($line);
for($j=0; $j<$jLen; ++$j)
{
$c = substr($line,$j,1);
$d = substr($line,$j,2);
//look for start of quote
if(!$inQuote && !$inComment)
{
//is this character a quote or a comment
if(($c=='"' || $c=="'") && !$inComment && !$inNormalComment)
{
$inQuote = true;
$inComment = false;
$escaped = false;
$quoteChar = $c;
$literal = $c;
}
else if($d=="/*" && !$inNormalComment)
{
$inQuote = false;
$inComment = true;
$escaped = false;
$quoteChar = $d;
$literal = $d;
$j++;
}
else if($d=="//") //ignore string markers that are found inside comments
{
$inNormalComment = true;
}
else
{
if (!$inNormalComment)
$clean .= $c;
}
}
else //allready in a string so find end quote
{
if($c == $quoteChar && !$escaped && !$inComment)
{
$inQuote = false;
$literal .= $c;
//subsitute in a marker for the string
$clean .= "___" . count($literal_strings) . "___";
//push the string onto our array
array_push($literal_strings,$literal);
}
else if($inComment && $d=="*/")
{
$inComment = false;
$literal .= $d;
++$j;
}
else if($c == "\\" && !$escaped)
$escaped = true;
else
$escaped = false;
$literal .= $c;
}
}
if($inComment) $literal .= "\n";
$clean .= "\n";
}
//explode the clean string into lines again
$lines = explode("\n",$clean);
//now process each line at a time
$iLen = count($lines);
for($i=0; $i<$iLen; ++$i)
{
$line = $lines[$i];
//remove comments
$line = preg_replace("/\/\/(.*)/","",$line);
//strip leading and trailing whitespace
$line = trim($line);
//remove all whitespace with a single space
$line = preg_replace("/\s+/"," ",$line);
//remove any whitespace that occurs after/before an operator
$line = preg_replace("/\s*([!\}\{;,&=\|\-\+\*\/\)\(:])\s*/","\\1",$line);
$lines[$i] = $line;
}
//implode the lines
$sFile = implode("\n",$lines);
//make sure there is a max of 1 \n after each line
$sFile = preg_replace("/[\n]+/","\n",$sFile);
//strip out line breaks that immediately follow a semi-colon
$sFile = preg_replace("/;\n/",";",$sFile);
//curly brackets aren't on their own
$sFile = preg_replace("/[\n]*\{[\n]*/","{",$sFile);
//finally loop through and replace all the literal strings:
$iLen = count($literal_strings);
for($i=0; $i<$iLen; ++$i)
$sFile = str_replace('___'.$i.'___',$literal_strings[$i],$sFile);
return $sFile;
}

View File

@ -0,0 +1,682 @@
<?php
/*
File: xajaxControl.inc.php
Contains the base class for all controls.
Title: xajaxControl class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxControl.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Constant: XAJAX_HTML_CONTROL_DOCTYPE_FORMAT
Defines the doctype of the current document; this will effect how the HTML is formatted
when the html control library is used to construct html documents and fragments. This can
be one of the following values:
'XHTML' - (default) Typical effects are that certain elements are closed with '/>'
'HTML' - Typical differences are that closing tags for certain elements cannot be '/>'
*/
if (false == defined('XAJAX_HTML_CONTROL_DOCTYPE_FORMAT')) define('XAJAX_HTML_CONTROL_DOCTYPE_FORMAT', 'XHTML');
/*
Constant: XAJAX_HTML_CONTROL_DOCTYPE_VERSION
*/
if (false == defined('XAJAX_HTML_CONTROL_DOCTYPE_VERSION')) define('XAJAX_HTML_CONTROL_DOCTYPE_VERSION', '1.0');
/*
Constant: XAJAX_HTML_CONTROL_DOCTYPE_VALIDATION
*/
if (false == defined('XAJAX_HTML_CONTROL_DOCTYPE_VALIDATION')) define('XAJAX_HTML_CONTROL_DOCTYPE_VALIDATION', 'TRANSITIONAL');
/*
Class: xajaxControl
The base class for all xajax enabled controls. Derived classes will generate the
HTML and javascript code that will be sent to the browser via <xajaxControl->printHTML>
or sent to the browser in a <xajaxResponse> via <xajaxControl->getHTML>.
*/
class xajaxControl
{
/*
String: sTag
*/
var $sTag;
/*
Boolean: sEndTag
'required' - (default) Indicates the control must have a full end tag
'optional' - The control may have an abbr. begin tag or a full end tag
'forbidden' - The control must have an abbr. begin tag and no end tag
*/
var $sEndTag;
/*
Array: aAttributes
An associative array of attributes that will be used in the generation
of the HMTL code for this control.
*/
var $aAttributes;
/*
Array: aEvents
An associative array of events that will be assigned to this control. Each
event declaration will include a reference to a <xajaxRequest> object; it's
script will be extracted using <xajaxRequest->printScript> or
<xajaxRequest->getScript>.
*/
var $aEvents;
/*
String: sClass
Contains a declaration of the class of this control. %inline controls do not
need to be indented, %block controls should be indented.
*/
var $sClass;
/*
Function: xajaxControl
Parameters:
$aConfiguration - (array): An associative array that contains a variety
of configuration options for this <xajaxControl> object.
Note:
This array may contain the following entries:
'attributes' - (array): An associative array containing attributes
that will be passed to the <xajaxControl->setAttribute> function.
'children' - (array): An array of <xajaxControl> derived objects that
will be the children of this control.
*/
function xajaxControl($sTag, $aConfiguration=array())
{
$this->sTag = $sTag;
$this->clearAttributes();
if (isset($aConfiguration['attributes']))
if (is_array($aConfiguration['attributes']))
foreach ($aConfiguration['attributes'] as $sKey => $sValue)
$this->setAttribute($sKey, $sValue);
$this->clearEvents();
if (isset($aConfiguration['event']))
call_user_func_array(array(&$this, 'setEvent'), $aConfiguration['event']);
else if (isset($aConfiguration['events']))
if (is_array($aConfiguration['events']))
foreach ($aConfiguration['events'] as $aEvent)
call_user_func_array(array(&$this, 'setEvent'), $aEvent);
$this->sClass = '%block';
$this->sEndTag = 'forbidden';
}
/*
Function: getClass
Returns the *adjusted* class of the element
*/
function getClass()
{
return $this->sClass;
}
/*
Function: clearAttributes
Removes all attributes assigned to this control.
*/
function clearAttributes()
{
$this->aAttributes = array();
}
/*
Function: setAttribute
Call to set various control specific attributes to be included in the HTML
script that is returned when <xajaxControl->printHTML> or <xajaxControl->getHTML>
is called.
Parameters:
$sName - (string): The attribute name to set the value.
$sValue - (string): The value to be set.
*/
function setAttribute($sName, $sValue)
{
//SkipDebug
if (class_exists('clsValidator'))
{
$objValidator =& clsValidator::getInstance();
if (false == $objValidator->attributeValid($this->sTag, $sName)) {
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:IAERR:01')
. $sName
. $objLanguageManager->getText('XJXCTL:IAERR:02')
. $this->sTag
. $objLanguageManager->getText('XJXCTL:IAERR:03')
, E_USER_ERROR
);
}
}
//EndSkipDebug
$this->aAttributes[$sName] = $sValue;
}
/*
Function: getAttribute
Call to obtain the value currently associated with the specified attribute
if set.
Parameters:
sName - (string): The name of the attribute to be returned.
Returns:
mixed : The value associated with the attribute, or null.
*/
function getAttribute($sName)
{
if (false == isset($this->aAttributes[$sName]))
return null;
return $this->aAttributes[$sName];
}
/*
Function: clearEvents
Clear the events that have been associated with this object.
*/
function clearEvents()
{
$this->aEvents = array();
}
/*
Function: setEvent
Call this function to assign a <xajaxRequest> object as the handler for
the specific DOM event. The <xajaxRequest->printScript> function will
be called to generate the javascript for this request.
Parameters:
sEvent - (string): A string containing the name of the event to be assigned.
objRequest - (xajaxRequest object): The <xajaxRequest> object to be associated
with the specified event.
aParameters - (array, optional): An array containing parameter declarations
that will be passed to this <xajaxRequest> object just before the javascript
is generated.
sBeforeRequest - (string, optional): a string containing a snippet of javascript code
to execute prior to calling the xajaxRequest function
sAfterRequest - (string, optional): a string containing a snippet of javascript code
to execute after calling the xajaxRequest function
*/
function setEvent($sEvent, &$objRequest, $aParameters=array(), $sBeforeRequest='', $sAfterRequest='; return false;')
{
//SkipDebug
if (false == is_a($objRequest, 'xajaxRequest')) {
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:IRERR:01')
. $this->backtrace()
, E_USER_ERROR
);
}
if (class_exists('clsValidator')) {
$objValidator =& clsValidator::getInstance();
if (false == $objValidator->attributeValid($this->sTag, $sEvent)) {
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:IEERR:01')
. $sEvent
. $objLanguageManager->getText('XJXCTL:IEERR:02')
. $this->sTag
. $objLanguageManager->getText('XJXCTL:IEERR:03')
, E_USER_ERROR
);
}
}
//EndSkipDebug
$this->aEvents[$sEvent] = array(
&$objRequest,
$aParameters,
$sBeforeRequest,
$sAfterRequest
);
}
/*
Function: getHTML
Generates and returns the HTML representation of this control and
it's children.
Returns:
string : The HTML representation of this control.
*/
function getHTML($bFormat=false)
{
ob_start();
if ($bFormat)
$this->printHTML();
else
$this->printHTML(false);
return ob_get_clean();
}
/*
Function: printHTML
Generates and prints the HTML representation of this control and
it's children.
Returns:
string : The HTML representation of this control.
*/
function printHTML($sIndent='')
{
//SkipDebug
if (class_exists('clsValidator'))
{
$objValidator =& clsValidator::getInstance();
$sMissing = '';
if (false == $objValidator->checkRequiredAttributes($this->sTag, $this->aAttributes, $sMissing)) {
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:MAERR:01')
. $sMissing
. $objLanguageManager->getText('XJXCTL:MAERR:02')
. $this->sTag
. $objLanguageManager->getText('XJXCTL:MAERR:03')
, E_USER_ERROR
);
}
}
//EndSkipDebug
$sClass = $this->getClass();
if ('%inline' != $sClass)
// this odd syntax is necessary to detect request for no formatting
if (false === (false === $sIndent))
echo $sIndent;
echo '<';
echo $this->sTag;
echo ' ';
$this->_printAttributes();
$this->_printEvents();
if ('forbidden' == $this->sEndTag)
{
if ('HTML' == XAJAX_HTML_CONTROL_DOCTYPE_FORMAT)
echo '>';
else if ('XHTML' == XAJAX_HTML_CONTROL_DOCTYPE_FORMAT)
echo '/>';
if ('%inline' != $sClass)
// this odd syntax is necessary to detect request for no formatting
if (false === (false === $sIndent))
echo "\n";
return;
}
else if ('optional' == $this->sEndTag)
{
echo '/>';
if ('%inline' == $sClass)
// this odd syntax is necessary to detect request for no formatting
if (false === (false === $sIndent))
echo "\n";
return;
}
//SkipDebug
else
{
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:IETERR:01')
. $this->backtrace()
, E_USER_ERROR
);
}
//EndSkipDebug
}
function _printAttributes()
{
// NOTE: Special case here: disabled='false' does not work in HTML; does work in javascript
foreach ($this->aAttributes as $sKey => $sValue)
if ('disabled' != $sKey || 'false' != $sValue)
echo "{$sKey}='{$sValue}' ";
}
function _printEvents()
{
foreach (array_keys($this->aEvents) as $sKey)
{
$aEvent =& $this->aEvents[$sKey];
$objRequest =& $aEvent[0];
$aParameters = $aEvent[1];
$sBeforeRequest = $aEvent[2];
$sAfterRequest = $aEvent[3];
foreach ($aParameters as $aParameter)
{
$nParameter = $aParameter[0];
$sType = $aParameter[1];
$sValue = $aParameter[2];
$objRequest->setParameter($nParameter, $sType, $sValue);
}
$objRequest->useDoubleQuote();
echo "{$sKey}='{$sBeforeRequest}";
$objRequest->printScript();
echo "{$sAfterRequest}' ";
}
}
function backtrace()
{
// debug_backtrace was added to php in version 4.3.0
// version_compare was added to php in version 4.0.7
if (0 <= version_compare(PHP_VERSION, '4.3.0'))
return '<div><div>Backtrace:</div><pre>'
. print_r(debug_backtrace(), true)
. '</pre></div>';
return '';
}
}
/*
Class: xajaxControlContainer
This class is used as the base class for controls that will contain
other child controls.
*/
class xajaxControlContainer extends xajaxControl
{
/*
Array: aChildren
An array of child controls.
*/
var $aChildren;
/*
Boolean: sChildClass
Will contain '%inline' if all children are class = '%inline', '%block' if all children are '%block' or
'%flow' if both '%inline' and '%block' elements are detected.
*/
var $sChildClass;
/*
Function: xajaxControlContainer
Called to construct and configure this control.
Parameters:
aConfiguration - (array): See <xajaxControl->xajaxControl> for more
information.
*/
function xajaxControlContainer($sTag, $aConfiguration=array())
{
xajaxControl::xajaxControl($sTag, $aConfiguration);
$this->clearChildren();
if (isset($aConfiguration['child']))
$this->addChild($aConfiguration['child']);
else if (isset($aConfiguration['children']))
$this->addChildren($aConfiguration['children']);
$this->sEndTag = 'required';
}
/*
Function: getClass
Returns the *adjusted* class of the element
*/
function getClass()
{
$sClass = xajaxControl::getClass();
if (0 < count($this->aChildren) && '%flow' == $sClass)
return $this->getContentClass();
else if (0 == count($this->aChildren) || '%inline' == $sClass || '%block' == $sClass)
return $sClass;
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:ICERR:01')
. $this->backtrace()
, E_USER_ERROR
);
}
/*
Function: getContentClass
Returns the *adjusted* class of the content (children) of this element
*/
function getContentClass()
{
$sClass = '';
foreach (array_keys($this->aChildren) as $sKey)
{
if ('' == $sClass)
$sClass = $this->aChildren[$sKey]->getClass();
else if ($sClass != $this->aChildren[$sKey]->getClass())
return '%flow';
}
if ('' == $sClass)
return '%inline';
return $sClass;
}
/*
Function: clearChildren
Clears the list of child controls associated with this control.
*/
function clearChildren()
{
$this->sChildClass = '%inline';
$this->aChildren = array();
}
/*
Function: addChild
Adds a control to the array of child controls. Child controls
must be derived from <xajaxControl>.
*/
function addChild(&$objControl)
{
//SkipDebug
if (false == is_a($objControl, 'xajaxControl')) {
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:ICLERR:01')
. $this->backtrace()
, E_USER_ERROR
);
}
if (class_exists('clsValidator'))
{
$objValidator =& clsValidator::getInstance();
if (false == $objValidator->childValid($this->sTag, $objControl->sTag)) {
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:ICLERR:02')
. $objControl->sTag
. $objLanguageManager->getText('XJXCTL:ICLERR:03')
. $this->sTag
. $objLanguageManager->getText('XJXCTL:ICLERR:04')
. $this->backtrace()
, E_USER_ERROR
);
}
}
//EndSkipDebug
$this->aChildren[] =& $objControl;
}
function addChildren(&$aChildren)
{
//SkipDebug
if (false == is_array($aChildren)) {
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:ICHERR:01')
. $this->backtrace()
, E_USER_ERROR
);
}
//EndSkipDebug
foreach (array_keys($aChildren) as $sKey)
$this->addChild($aChildren[$sKey]);
}
function printHTML($sIndent='')
{
//SkipDebug
if (class_exists('clsValidator'))
{
$objValidator =& clsValidator::getInstance();
$sMissing = '';
if (false == $objValidator->checkRequiredAttributes($this->sTag, $this->aAttributes, $sMissing)) {
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXCTL:MRAERR:01')
. $sMissing
. $objLanguageManager->getText('XJXCTL:MRAERR:02')
. $this->sTag
. $objLanguageManager->getText('XJXCTL:MRAERR:03')
, E_USER_ERROR
);
}
}
//EndSkipDebug
$sClass = $this->getClass();
if ('%inline' != $sClass)
// this odd syntax is necessary to detect request for no formatting
if (false === (false === $sIndent))
echo $sIndent;
echo '<';
echo $this->sTag;
echo ' ';
$this->_printAttributes();
$this->_printEvents();
if (0 == count($this->aChildren))
{
if ('optional' == $this->sEndTag)
{
echo '/>';
if ('%inline' != $sClass)
// this odd syntax is necessary to detect request for no formatting
if (false === (false === $sIndent))
echo "\n";
return;
}
//SkipDebug
else if ('required' != $this->sEndTag)
trigger_error("Invalid end tag designation; should be optional or required.\n"
. $this->backtrace(),
E_USER_ERROR
);
//EndSkipDebug
}
echo '>';
$sContentClass = $this->getContentClass();
if ('%inline' != $sContentClass)
// this odd syntax is necessary to detect request for no formatting
if (false === (false === $sIndent))
echo "\n";
$this->_printChildren($sIndent);
if ('%inline' != $sContentClass)
// this odd syntax is necessary to detect request for no formatting
if (false === (false === $sIndent))
echo $sIndent;
echo '<' . '/';
echo $this->sTag;
echo '>';
if ('%inline' != $sClass)
// this odd syntax is necessary to detect request for no formatting
if (false === (false === $sIndent))
echo "\n";
}
function _printChildren($sIndent='')
{
if (false == is_a($this, 'clsDocument'))
// this odd syntax is necessary to detect request for no formatting
if (false === (false === $sIndent))
$sIndent .= "\t";
// children
foreach (array_keys($this->aChildren) as $sKey)
{
$objChild =& $this->aChildren[$sKey];
$objChild->printHTML($sIndent);
}
}
}

View File

@ -0,0 +1,188 @@
<?php
/*
File: xajaxLanguageManager.inc.php
Contains the code that manages the inclusion of alternate language support
files; so debug and error messages can be shown in a language other than
the default (english) language.
Title: xajaxLanguageManager class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxLanguageManager.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Class: xajaxLanguageManager
This class contains the default language (english) and the code used to supply
debug and error messages upon request; as well as the code used to load alternate
language text as requested via the <xajax::configure> function.
*/
class xajaxLanguageManager
{
/*
Array: aMessages
An array of the currently registered languages.
*/
var $aMessages;
/*
String: sLanguage
The currently configured language.
*/
var $sLanguage;
/*
Function: xajaxLanguageManager
Construct and initialize the one and only xajax language manager object.
*/
function xajaxLanguageManager()
{
$this->aMessages = array();
$this->aMessages['en'] = array(
'LOGHDR:01' => '** xajax Error Log - ',
'LOGHDR:02' => " **\n",
'LOGHDR:03' => "\n\n\n",
'LOGERR:01' => "** Logging Error **\n\nxajax was unable to write to the error log file:\n",
'LOGMSG:01' => "** PHP Error Messages: **",
'CMPRSJS:RDERR:01' => 'The xajax uncompressed Javascript file could not be found in the <b>',
'CMPRSJS:RDERR:02' => '</b> folder. Error ',
'CMPRSJS:WTERR:01' => 'The xajax compressed javascript file could not be written in the <b>',
'CMPRSJS:WTERR:02' => '</b> folder. Error ',
'CMPRSPHP:WTERR:01' => 'The xajax compressed file <b>',
'CMPRSPHP:WTERR:02' => '</b> could not be written to. Error ',
'CMPRSAIO:WTERR:01' => 'The xajax compressed file <b>',
'CMPRSAIO:WTERR:02' => '/xajaxAIO.inc.php</b> could not be written to. Error ',
'DTCTURI:01' => 'xajax Error: xajax failed to automatically identify your Request URI.',
'DTCTURI:02' => 'Please set the Request URI explicitly when you instantiate the xajax object.',
'ARGMGR:ERR:01' => 'Malformed object argument received: ',
'ARGMGR:ERR:02' => ' <==> ',
'ARGMGR:ERR:03' => 'The incoming xajax data could not be converted from UTF-8',
'XJXCTL:IAERR:01' => 'Invalid attribute [',
'XJXCTL:IAERR:02' => '] for element [',
'XJXCTL:IAERR:03' => '].',
'XJXCTL:IRERR:01' => 'Invalid request object passed to xajaxControl::setEvent',
'XJXCTL:IEERR:01' => 'Invalid attribute (event name) [',
'XJXCTL:IEERR:02' => '] for element [',
'XJXCTL:IEERR:03' => '].',
'XJXCTL:MAERR:01' => 'Missing required attribute [',
'XJXCTL:MAERR:02' => '] for element [',
'XJXCTL:MAERR:03' => '].',
'XJXCTL:IETERR:01' => "Invalid end tag designation; should be forbidden or optional.\n",
'XJXCTL:ICERR:01' => "Invalid class specified for html control; should be %inline, %block or %flow.\n",
'XJXCTL:ICLERR:01' => 'Invalid control passed to addChild; should be derived from xajaxControl.',
'XJXCTL:ICLERR:02' => 'Invalid control passed to addChild [',
'XJXCTL:ICLERR:03' => '] for element [',
'XJXCTL:ICLERR:04' => "].\n",
'XJXCTL:ICHERR:01' => 'Invalid parameter passed to xajaxControl::addChildren; should be array of xajaxControl objects',
'XJXCTL:MRAERR:01' => 'Missing required attribute [',
'XJXCTL:MRAERR:02' => '] for element [',
'XJXCTL:MRAERR:03' => '].',
'XJXPLG:GNERR:01' => 'Response plugin should override the getName function.',
'XJXPLG:PERR:01' => 'Response plugin should override the process function.',
'XJXPM:IPLGERR:01' => 'Attempt to register invalid plugin: ',
'XJXPM:IPLGERR:02' => ' should be derived from xajaxRequestPlugin or xajaxResponsePlugin.',
'XJXPM:MRMERR:01' => 'Failed to locate registration method for the following: ',
'XJXRSP:EDERR:01' => 'Passing character encoding to the xajaxResponse constructor is deprecated, instead use $xajax->configure("characterEncoding", ...);',
'XJXRSP:MPERR:01' => 'Invalid or missing plugin name detected in call to xajaxResponse::plugin',
'XJXRSP:CPERR:01' => "The \$sType parameter of addCreate has been deprecated. Use the addCreateInput() method instead.",
'XJXRSP:LCERR:01' => "The xajax response object could not load commands as the data provided was not a valid array.",
'XJXRSP:AKERR:01' => 'Invalid tag name encoded in array.',
'XJXRSP:IEAERR:01' => 'Improperly encoded array.',
'XJXRSP:NEAERR:01' => 'Non-encoded array detected.',
'XJXRSP:MBEERR:01' => 'The xajax response output could not be converted to HTML entities because the mb_convert_encoding function is not available',
'XJXRSP:MXRTERR' => 'Error: Cannot mix types in a single response.',
'XJXRSP:MXCTERR' => 'Error: Cannot mix content types in a single response.',
'XJXRSP:MXCEERR' => 'Error: Cannot mix character encodings in a single response.',
'XJXRSP:MXOEERR' => 'Error: Cannot mix output entities (true/false) in a single response.',
'XJXRM:IRERR' => 'An invalid response was returned while processing this request.',
'XJXRM:MXRTERR' => 'Error: You cannot mix response types while processing a single request: '
);
$this->sLanguage = 'en';
}
/*
Function: getInstance
Implements the singleton pattern: provides a single instance of the xajax
language manager object to all object which request it.
*/
function &getInstance()
{
static $obj;
if (!$obj) {
$obj = new xajaxLanguageManager();
}
return $obj;
}
/*
Function: configure
Called by the main xajax object as configuration options are set. See also:
<xajax::configure>. The <xajaxLanguageManager> tracks the following configuration
options.
Parameters:
- language (string, default 'en'): The currently selected language.
*/
function configure($sName, $mValue)
{
if ('language' == $sName) {
if ($mValue !== $this->sLanguage) {
$sFolder = dirname(__FILE__);
@include $sFolder . '/xajax_lang_' . $mValue . '.inc.php';
// require $sFolder . '/xajax_lang_' . $mValue . '.inc.php';
$this->sLanguage = $mValue;
}
}
}
/*
Function: register
Called to register an array of alternate language messages.
Parameters:
sLanguage - (string): the character code which represents the language being registered.
aMessages - (array): the array of translated debug and error messages
*/
function register($sLanguage, $aMessages) {
$this->aMessages[$sLanguage] = $aMessages;
}
/*
Function: getText
Called by the main xajax object and other objects during the initial page generation
or request processing phase to obtain language specific debug and error messages.
sMessage - (string): A code indicating the message text being requested.
*/
function getText($sMessage)
{
if (isset($this->aMessages[$this->sLanguage]))
if (isset($this->aMessages[$this->sLanguage][$sMessage]))
return $this->aMessages[$this->sLanguage][$sMessage];
return '(Unknown language or message identifier)'
. $this->sLanguage
. '::'
. $sMessage;
}
}

View File

@ -0,0 +1,191 @@
<?php
/*
File: xajaxPlugin.inc.php
Contains the xajaxPlugin class
Title: xajaxPlugin class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxPlugin.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Class: xajaxPlugin
The base class for all xajax plugins.
*/
class xajaxPlugin
{
}
/*
Class: xajaxRequestPlugin
The base class for all xajax request plugins.
Request plugins handle the registration, client script generation and processing of
xajax enabled requests. Each plugin should have a unique signature for both
the registration and processing of requests. During registration, the user will
specify a type which will allow the plugin to detect and handle it. During client
script generation, the plugin will generate a <xajax.request> stub with the
prescribed call options and request signature. During request processing, the
plugin will detect the signature generated previously and process the request
accordingly.
*/
class xajaxRequestPlugin extends xajaxPlugin
{
/*
Function: configure
Called by the <xajaxPluginManager> when a configuration setting is changing.
Plugins should store a local copy of the settings they wish to use during
registration, client script generation or request processing.
*/
function configure($sName, $mValue)
{
}
/*
Function: register
Called by the <xajaxPluginManager> when a user script when a function, event
or callable object is to be registered. Additional plugins may support other
registration types.
*/
function register($aArgs)
{
return false;
}
/*
Function: generateClientScript
Called by <xajaxPluginManager> when the page's HTML is being sent to the browser.
This allows each plugin to inject some script / style or other appropriate tags
into the HEAD of the document. Each block must be appropriately enclosed, meaning
javascript code must be enclosed in SCRIPT and /SCRIPT tags.
*/
function generateClientScript()
{
}
/*
Function: canProcessRequest
Called by the <xajaxPluginManager> when a request has been received to determine
if the request is for a xajax enabled function or for the initial page load.
*/
function canProcessRequest()
{
return false;
}
/*
Function: processRequest
Called by the <xajaxPluginManager> when a request is being processed. This
will only occur when <xajax> has determined that the current request is a valid
(registered) xajax enabled function via <xajax->canProcessRequest>.
Returns:
false
*/
function processRequest()
{
return false;
}
}
/*
Class: xajaxResponsePlugin
Base class for all xajax response plugins.
A response plugin provides additional services not already provided by the
<xajaxResponse> class with regard to sending response commands to the
client. In addition, a response command may send javascript to the browser
at page load to aid in the processing of it's response commands.
*/
class xajaxResponsePlugin extends xajaxPlugin
{
/*
Object: objResponse
A reference to the current <xajaxResponse> object that is being used
to build the response that will be sent to the client browser.
*/
var $objResponse;
/*
Function: setResponse
Called by the <xajaxResponse> object that is currently being used
to build the response that will be sent to the client browser.
Parameters:
objResponse - (object): A reference to the <xajaxResponse> object
*/
function setResponse(&$objResponse)
{
$this->objResponse =& $objResponse;
}
/*
Function: addCommand
Used internally to add a command to the response command list. This
will call <xajaxResponse->addPluginCommand> using the reference provided
in <xajaxResponsePlugin->setResponse>.
*/
function addCommand($aAttributes, $sData)
{
$this->objResponse->addPluginCommand($this, $aAttributes, $sData);
}
/*
Function: getName
Called by the <xajaxPluginManager> when the user script requests a plugin.
This name must match the plugin name requested in the called to
<xajaxResponse->plugin>.
*/
function getName()
{
//SkipDebug
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXPLG:GNERR:01')
, E_USER_ERROR
);
//EndSkipDebug
}
/*
Function: process
Called by <xajaxResponse> when a user script requests the service of a
response plugin. The parameters provided by the user will be used to
determine which response command and parameters will be sent to the
client upon completion of the xajax request process.
*/
function process()
{
//SkipDebug
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXPLG:PERR:01')
, E_USER_ERROR
);
//EndSkipDebug
}
}

View File

@ -0,0 +1,344 @@
<?php
/*
File: xajaxPluginManager.inc.php
Contains the xajax plugin manager.
Title: xajax plugin manager
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxPluginManager.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
//SkipAIO
require(dirname(__FILE__) . '/xajaxPlugin.inc.php');
//EndSkipAIO
/*
Class: xajaxPluginManager
*/
class xajaxPluginManager
{
/*
Array: aRequestPlugins
*/
var $aRequestPlugins;
/*
Array: aResponsePlugins
*/
var $aResponsePlugins;
/*
Array: aConfigurable
*/
var $aConfigurable;
/*
Array: aRegistrars
*/
var $aRegistrars;
/*
Array: aProcessors
*/
var $aProcessors;
/*
Array: aClientScriptGenerators
*/
var $aClientScriptGenerators;
/*
Function: xajaxPluginManager
Construct and initialize the one and only xajax plugin manager.
*/
function xajaxPluginManager()
{
$this->aRequestPlugins = array();
$this->aResponsePlugins = array();
$this->aConfigurable = array();
$this->aRegistrars = array();
$this->aProcessors = array();
$this->aClientScriptGenerators = array();
}
/*
Function: getInstance
Implementation of the singleton pattern: returns the one and only instance of the
xajax plugin manager.
Returns:
object : a reference to the one and only instance of the
plugin manager.
*/
function &getInstance()
{
static $obj;
if (!$obj) {
$obj = new xajaxPluginManager();
}
return $obj;
}
/*
Function: loadPlugins
Loads plugins from the folders specified.
Parameters:
$aFolders - (array): Array of folders to check for plugins
*/
function loadPlugins($aFolders)
{
foreach ($aFolders as $sFolder) {
if (is_dir($sFolder))
if ($handle = opendir($sFolder)) {
while (!(false === ($sName = readdir($handle)))) {
$nLength = strlen($sName);
if (8 < $nLength) {
$sFileName = substr($sName, 0, $nLength - 8);
$sExtension = substr($sName, $nLength - 8, 8);
if ('.inc.php' == $sExtension) {
require $sFolder . '/' . $sFileName . $sExtension;
}
}
}
closedir($handle);
}
}
}
/*
Function: _insertIntoArray
Inserts an entry into an array given the specified priority number.
If a plugin already exists with the given priority, the priority is
automatically incremented until a free spot is found. The plugin
is then inserted into the empty spot in the array.
Parameters:
$aPlugins - (array): Plugins array
$objPlugin - (object): A reference to an instance of a plugin.
$nPriority - (number): The desired priority, used to order
the plugins.
*/
function _insertIntoArray(&$aPlugins, &$objPlugin, $nPriority)
{
while (isset($aPlugins[$nPriority]))
$nPriority++;
$aPlugins[$nPriority] =& $objPlugin;
}
/*
Function: registerPlugin
Registers a plugin.
Parameters:
objPlugin - (object): A reference to an instance of a plugin.
Note:
Below is a table for priorities and their description:
0 thru 999: Plugins that are part of or extensions to the xajax core
1000 thru 8999: User created plugins, typically, these plugins don't care about order
9000 thru 9999: Plugins that generally need to be last or near the end of the plugin list
*/
function registerPlugin(&$objPlugin, $nPriority=1000)
{
if (is_a($objPlugin, 'xajaxRequestPlugin'))
{
$this->_insertIntoArray($this->aRequestPlugins, $objPlugin, $nPriority);
if (method_exists($objPlugin, 'register'))
$this->_insertIntoArray($this->aRegistrars, $objPlugin, $nPriority);
if (method_exists($objPlugin, 'canProcessRequest'))
if (method_exists($objPlugin, 'processRequest'))
$this->_insertIntoArray($this->aProcessors, $objPlugin, $nPriority);
}
else if (is_a($objPlugin, 'xajaxResponsePlugin'))
{
$this->aResponsePlugins[] =& $objPlugin;
}
else
{
//SkipDebug
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXPM:IPLGERR:01')
. get_class($objPlugin)
. $objLanguageManager->getText('XJXPM:IPLGERR:02')
, E_USER_ERROR
);
//EndSkipDebug
}
if (method_exists($objPlugin, 'configure'))
$this->_insertIntoArray($this->aConfigurable, $objPlugin, $nPriority);
if (method_exists($objPlugin, 'generateClientScript'))
$this->_insertIntoArray($this->aClientScriptGenerators, $objPlugin, $nPriority);
}
/*
Function: canProcessRequest
Calls each of the request plugins and determines if the
current request can be processed by one of them. If no processor identifies
the current request, then the request must be for the initial page load.
See <xajax->canProcessRequest> for more information.
*/
function canProcessRequest()
{
$bHandled = false;
$aKeys = array_keys($this->aProcessors);
sort($aKeys);
foreach ($aKeys as $sKey) {
$mResult = $this->aProcessors[$sKey]->canProcessRequest();
if (true === $mResult)
$bHandled = true;
else if (is_string($mResult))
return $mResult;
}
return $bHandled;
}
/*
Function: processRequest
Calls each of the request plugins to request that they process the
current request. If the plugin processes the request, it will
return true.
*/
function processRequest()
{
$bHandled = false;
$aKeys = array_keys($this->aProcessors);
sort($aKeys);
foreach ($aKeys as $sKey) {
$mResult = $this->aProcessors[$sKey]->processRequest();
if (true === $mResult)
$bHandled = true;
else if (is_string($mResult))
return $mResult;
}
return $bHandled;
}
/*
Function: configure
Call each of the request plugins passing along the configuration
setting specified.
Parameters:
sName - (string): The name of the configuration setting to set.
mValue - (mixed): The value to be set.
*/
function configure($sName, $mValue)
{
$aKeys = array_keys($this->aConfigurable);
sort($aKeys);
foreach ($aKeys as $sKey)
$this->aConfigurable[$sKey]->configure($sName, $mValue);
}
/*
Function: register
Call each of the request plugins and give them the opportunity to
handle the registration of the specified function, event or callable object.
Parameters:
$aArgs - (array) :
*/
function register($aArgs)
{
$aKeys = array_keys($this->aRegistrars);
sort($aKeys);
foreach ($aKeys as $sKey)
{
$objPlugin =& $this->aRegistrars[$sKey];
$mResult =& $objPlugin->register($aArgs);
if (is_a($mResult, 'xajaxRequest'))
return $mResult;
if (is_array($mResult))
return $mResult;
if (is_bool($mResult))
if (true === $mResult)
return true;
}
//SkipDebug
$objLanguageManager =& xajaxLanguageManager::getInstance();
trigger_error(
$objLanguageManager->getText('XJXPM:MRMERR:01')
. print_r($aArgs, true)
, E_USER_ERROR
);
//EndSkipDebug
}
/*
Function: generateClientScript
Call each of the request and response plugins giving them the
opportunity to output some javascript to the page being generated. This
is called only when the page is being loaded initially. This is not
called when processing a request.
*/
function generateClientScript()
{
$aKeys = array_keys($this->aClientScriptGenerators);
sort($aKeys);
foreach ($aKeys as $sKey)
$this->aClientScriptGenerators[$sKey]->generateClientScript();
}
/*
Function: getPlugin
Locate the specified response plugin by name and return
a reference to it if one exists.
Parameters:
$sName - (string): Name of the plugin.
Returns:
mixed : Returns plugin or false if not found.
*/
function &getPlugin($sName)
{
$aKeys = array_keys($this->aResponsePlugins);
sort($aKeys);
foreach ($aKeys as $sKey)
if (is_a($this->aResponsePlugins[$sKey], $sName))
return $this->aResponsePlugins[$sKey];
$bFailure = false;
return $bFailure;
}
}

View File

@ -0,0 +1,359 @@
<?php
/*
File: xajaxRequest.inc.php
Contains the xajaxRequest class
Title: xajaxRequest class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxRequest.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Constant: XAJAX_FORM_VALUES
Specifies that the parameter will consist of an array of form values.
*/
if (!defined ('XAJAX_FORM_VALUES')) define ('XAJAX_FORM_VALUES', 'get form values');
/*
Constant: XAJAX_INPUT_VALUE
Specifies that the parameter will contain the value of an input control.
*/
if (!defined ('XAJAX_INPUT_VALUE')) define ('XAJAX_INPUT_VALUE', 'get input value');
/*
Constant: XAJAX_CHECKED_VALUE
Specifies that the parameter will consist of a boolean value of a checkbox.
*/
if (!defined ('XAJAX_CHECKED_VALUE')) define ('XAJAX_CHECKED_VALUE', 'get checked value');
/*
Constant: XAJAX_ELEMENT_INNERHTML
Specifies that the parameter value will be the innerHTML value of the element.
*/
if (!defined ('XAJAX_ELEMENT_INNERHTML')) define ('XAJAX_ELEMENT_INNERHTML', 'get element innerHTML');
/*
Constant: XAJAX_QUOTED_VALUE
Specifies that the parameter will be a quoted value (string).
*/
if (!defined ('XAJAX_QUOTED_VALUE')) define ('XAJAX_QUOTED_VALUE', 'quoted value');
/*
Constant: XAJAX_JS_VALUE
Specifies that the parameter will be a non-quoted value (evaluated by the
browsers javascript engine at run time.
*/
if (!defined ('XAJAX_JS_VALUE')) define ('XAJAX_JS_VALUE', 'unquoted value');
/*
Class: xajaxRequest
Used to store and generate the client script necessary to invoke
a xajax request from the browser to the server script.
This object is typically generated by the <xajax->register> method
and can be used to quickly generate the javascript that is used
to initiate a xajax request to the registered function, object, event
or other xajax call.
*/
class xajaxRequest
{
/*
String: sName
The name of the function.
*/
var $sName;
/*
String: sQuoteCharacter
A string containing either a single or a double quote character
that will be used during the generation of the javascript for
this function. This can be set prior to calling <xajaxRequest->printScript>
*/
var $sQuoteCharacter;
/*
Array: aParameters
An array of parameters that will be used to populate the argument list
for this function when the javascript is output in <xajaxRequest->printScript>
*/
var $aParameters;
/*
Function: xajaxRequest
Construct and initialize this request.
sName - (string): The name of this request.
*/
function xajaxRequest($sName)
{
$this->aParameters = array();
$this->sQuoteCharacter = '"';
$this->sName = $sName;
}
/*
Function: useSingleQuote
Call this to instruct the request to use single quotes when generating
the javascript.
*/
function useSingleQuote()
{
$this->sQuoteCharacter = "'";
}
/*
Function: useDoubleQuote
Call this to instruct the request to use double quotes while generating
the javascript.
*/
function useDoubleQuote()
{
$this->sQuoteCharacter = '"';
}
/*
Function: clearParameters
Clears the parameter list associated with this request.
*/
function clearParameters()
{
$this->aParameters = array();
}
/*
Function: addParameter
Adds a parameter value to the parameter list for this request.
sType - (string): The type of the value to be used.
sValue - (string: The value to be used.
See Also:
See <xajaxRequest->setParameter> for details.
*/
function addParameter()
{
$aArgs = func_get_args();
if (1 < count($aArgs))
$this->setParameter(
count($this->aParameters),
$aArgs[0],
$aArgs[1]);
}
/*
Function: setParameter
Sets a specific parameter value.
Parameters:
nParameter - (number): The index of the parameter to set
sType - (string): The type of value
sValue - (string): The value as it relates to the specified type
Note:
Types should be one of the following <XAJAX_FORM_VALUES>, <XAJAX_QUOTED_VALUE>,
<XAJAX_JS_VALUE>, <XAJAX_INPUT_VALUE>, <XAJAX_CHECKED_VALUE>.
The value should be as follows:
<XAJAX_FORM_VALUES> - Use the ID of the form you want to process.
<XAJAX_QUOTED_VALUE> - The string data to be passed.
<XAJAX_JS_VALUE> - A string containing valid javascript (either a javascript
variable name that will be in scope at the time of the call or a
javascript function call whose return value will become the parameter.
*/
function setParameter()
{
$aArgs = func_get_args();
if (2 < count($aArgs))
{
$nParameter = $aArgs[0];
$sType = $aArgs[1];
if (XAJAX_FORM_VALUES == $sType)
{
$sFormID = $aArgs[2];
$this->aParameters[$nParameter] =
"xajax.getFormValues("
. $this->sQuoteCharacter
. $sFormID
. $this->sQuoteCharacter
. ")";
}
else if (XAJAX_INPUT_VALUE == $sType)
{
$sInputID = $aArgs[2];
$this->aParameters[$nParameter] =
"xajax.$("
. $this->sQuoteCharacter
. $sInputID
. $this->sQuoteCharacter
. ").value";
}
else if (XAJAX_CHECKED_VALUE == $sType)
{
$sCheckedID = $aArgs[2];
$this->aParameters[$nParameter] =
"xajax.$("
. $this->sQuoteCharacter
. $sCheckedID
. $this->sQuoteCharacter
. ").checked";
}
else if (XAJAX_ELEMENT_INNERHTML == $sType)
{
$sElementID = $aArgs[2];
$this->aParameters[$nParameter] =
"xajax.$("
. $this->sQuoteCharacter
. $sElementID
. $this->sQuoteCharacter
. ").innerHTML";
}
else if (XAJAX_QUOTED_VALUE == $sType)
{
$sValue = $aArgs[2];
$this->aParameters[$nParameter] =
$this->sQuoteCharacter
. $sValue
. $this->sQuoteCharacter;
}
else if (XAJAX_JS_VALUE == $sType)
{
$sValue = $aArgs[2];
$this->aParameters[$nParameter] = $sValue;
}
}
}
/*
Function: getScript
Returns a string representation of the script output (javascript) from
this request object. See also: <xajaxRequest::printScript>
*/
function getScript()
{
ob_start();
$this->printScript();
return ob_get_clean();
}
/*
Function: printScript
Generates a block of javascript code that can be used to invoke
the specified xajax request.
*/
function printScript()
{
echo $this->sName;
echo '(';
$sSeparator = '';
foreach ($this->aParameters as $sParameter)
{
echo $sSeparator;
echo $sParameter;
$sSeparator = ', ';
}
echo ')';
}
}
/*
Class: xajaxCustomRequest
This class extends the <xajaxRequest> class such that simple javascript
can be put in place of a xajax request to the server. The primary purpose
of this class is to provide simple scripting services to the <xajaxControl>
based objects, like <clsInput>, <clsTable> and <clsButton>.
*/
class xajaxCustomRequest extends xajaxRequest
{
/*
Array: aVariables;
*/
var $aVariables;
/*
String: sScript;
*/
var $sScript;
/*
Function: xajaxCustomRequest
Constructs and initializes an instance of the object.
Parameters:
sScript - (string): The javascript (template) that will be printed
upon request.
aVariables - (associative array, optional): An array of variable name,
value pairs that will be passed to <xajaxCustomRequest->setVariable>
*/
function xajaxCustomRequest($sScript)
{
$this->aVariables = array();
$this->sScript = $sScript;
}
/*
Function: clearVariables
Clears the array of variables that will be used to modify the script before
it is printed and sent to the client.
*/
function clearVariables()
{
$this->aVariables = array();
}
/*
Function: setVariable
Sets a value that will be used to modify the script before it is sent to
the browser. The <xajaxCustomRequest> object will perform a string
replace operation on each of the values set with this function.
Parameters:
$sName - (string): Variable name
$sValue - (string): Value
*/
function setVariable($sName, $sValue)
{
$this->aVariables[$sName] = $sValue;
}
/*
Function: printScript
*/
function printScript()
{
$sScript = $this->sScript;
foreach ($this->aVariables as $sKey => $sValue)
$sScript = str_replace($sKey, $sValue, $sScript);
echo $sScript;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,231 @@
<?php
/*
File: xajaxResponseManager.inc.php
Contains the xajaxResponseManager class
Title: xajaxResponseManager class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajaxResponseManager.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
/*
Class: xajaxResponseManager
This class stores and tracks the response that will be returned after
processing a request. The response manager represents a single point
of contact for working with <xajaxResponse> objects as well as
<xajaxCustomResponse> objects.
*/
class xajaxResponseManager
{
/*
Object: objResponse
The current response object that will be sent back to the browser
once the request processing phase is complete.
*/
var $objResponse;
/*
String: sCharacterEncoding
*/
var $sCharacterEncoding;
/*
Boolean: bOutputEntities
*/
var $bOutputEntities;
/*
Array: aDebugMessages
*/
var $aDebugMessages;
/*
Function: xajaxResponseManager
Construct and initialize the one and only xajaxResponseManager object.
*/
function xajaxResponseManager()
{
$this->objResponse = NULL;
$this->aDebugMessages = array();
}
/*
Function: getInstance
Implementation of the singleton pattern: provide a single instance of the <xajaxResponseManager>
to all who request it.
*/
function &getInstance()
{
static $obj;
if (!$obj) {
$obj = new xajaxResponseManager();
}
return $obj;
}
/*
Function: configure
Called by the xajax object when configuration options are set in the main script. Option
values are passed to each of the main xajax components and stored locally as needed. The
<xajaxResponseManager> will track the characterEncoding and outputEntities settings.
Parameters:
$sName - (string): Setting name
$mValue - (mixed): Value
*/
function configure($sName, $mValue)
{
if ('characterEncoding' == $sName)
{
$this->sCharacterEncoding = $mValue;
if (isset($this->objResponse))
$this->objResponse->setCharacterEncoding($this->sCharacterEncoding);
}
else if ('outputEntities' == $sName)
{
if (true === $mValue || false === $mValue)
{
$this->bOutputEntities = $mValue;
if (isset($this->objResponse))
$this->objResponse->setOutputEntities($this->bOutputEntities);
}
}
}
/*
Function: clear
Clear the current response. A new response will need to be appended
before the request processing is complete.
*/
function clear()
{
$this->objResponse = NULL;
}
/*
Function: append
Used, primarily internally, to append one response object onto the end of another. You can
append one xajaxResponse to the end of another, or append a xajaxCustomResponse onto the end of
another xajaxCustomResponse. However, you cannot append a standard response object onto the end
of a custom response and likewise, you cannot append a custom response onto the end of a standard
response.
Parameters:
$mResponse - (object): The new response object to be added to the current response object.
If no prior response has been appended, this response becomes the main response object to which other
response objects will be appended.
*/
function append($mResponse)
{
if (is_a($mResponse, 'xajaxResponse')) {
if (NULL == $this->objResponse) {
$this->objResponse = $mResponse;
} else if (is_a($this->objResponse, 'xajaxResponse')) {
if ($this->objResponse != $mResponse)
$this->objResponse->absorb($mResponse);
} else {
$objLanguageManager =& xajaxLanguageManager::getInstance();
$this->debug(
$objLanguageManager->getText('XJXRM:MXRTERR')
. get_class($this->objResponse)
. ')'
);
}
} else if (is_a($mResponse, 'xajaxCustomResponse')) {
if (NULL == $this->objResponse) {
$this->objResponse = $mResponse;
} else if (is_a($this->objResponse, 'xajaxCustomResponse')) {
if ($this->objResponse != $mResponse)
$this->objResponse->absorb($mResponse);
} else {
$objLanguageManager =& xajaxLanguageManager::getInstance();
$this->debug(
$objLanguageManager->getText('XJXRM:MXRTERR')
. get_class($this->objResponse)
. ')'
);
}
} else {
$objLanguageManager =& xajaxLanguageManager::getInstance();
$this->debug($objLanguageManager->getText('XJXRM:IRERR'));
}
}
/*
Function: debug
Appends a debug message on the end of the debug message queue. Debug messages
will be sent to the client with the normal response (if the response object supports
the sending of debug messages, see: <xajaxResponse>)
Parameters:
$sMessage - (string): The text of the debug message to be sent.
*/
function debug($sMessage)
{
$this->aDebugMessages[] = $sMessage;
}
/*
Function: send
Prints the response object to the output stream, thus sending the response to the client.
*/
function send()
{
if (NULL != $this->objResponse) {
foreach ($this->aDebugMessages as $sMessage)
$this->objResponse->debug($sMessage);
$this->aDebugMessages = array();
$this->objResponse->printOutput();
}
}
/*
Function: getCharacterEncoding
Called automatically by new response objects as they are constructed to obtain the
current character encoding setting. As the character encoding is changed, the <xajaxResponseManager>
will automatically notify the current response object since it would have been constructed
prior to the setting change, see <xajaxResponseManager::configure>.
*/
function getCharacterEncoding()
{
return $this->sCharacterEncoding;
}
/*
Function: getOutputEntities
Called automatically by new response objects as they are constructed to obtain the
current output entities setting. As the output entities setting is changed, the
<xajaxResponseManager> will automatically notify the current response object since it would
have been constructed prior to the setting change, see <xajaxResponseManager::configure>.
*/
function getOutputEntities()
{
return $this->bOutputEntities;
}
}

View File

@ -0,0 +1,88 @@
<?php
/*
File: xajax_lang_de.inc.php
Contains the debug and error messages output by xajax translated to German.
Title: xajax class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
Translations provided by: (Thank you!)
- mic <info@joomx.com>
- q_no
*/
/*
@package xajax
@version $Id: xajax_lang_de.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
//SkipAIO
$objLanguageManager =& xajaxLanguageManager::getInstance();
$objLanguageManager->register('de', array(
'LOGHDR:01' => '** xajax Fehler Protokoll - ',
'LOGHDR:02' => " **\n",
'LOGHDR:03' => "\n\n\n",
'LOGERR:01' => "** Protokolliere Fehler **\n\nxajax konnte den Fehler nicht in die Protokolldatei schreiben:\n",
'LOGMSG:01' => "** PHP Fehlermeldungen: **",
'CMPRSJS:RDERR:01' => 'Die unkomprimierte JavaScript-Datei konnte nicht gefunden werden im Verzeichnis: <b>',
'CMPRSJS:RDERR:02' => '</b>. Fehler ',
'CMPRSJS:WTERR:01' => 'Die komprimierte xajax JavaScript-Datei konnte nicht in das Verzeichnis <b>',
'CMPRSJS:WTERR:02' => '</b> geschrieben werden. Fehler ',
'CMPRSPHP:WTERR:01' => 'Die komprimierte xajax Datei <b>',
'CMPRSPHP:WTERR:02' => '</b> konnte nicht geschrieben werden. Fehler ',
'CMPRSAIO:WTERR:01' => 'Die komprimierte xajax Datei <b>',
'CMPRSAIO:WTERR:02' => '/xajaxAIO.inc.php</b> konnte nicht geschrieben werden. Fehler ',
'DTCTURI:01' => 'xajax Fehler: xajax konnte die Request URI nicht automatisch identifizieren.',
'DTCTURI:02' => 'Bitte setzen sie die Request URI explizit wenn sie die xajax Klasse instanziieren.',
'ARGMGR:ERR:01' => 'Fehlerhaftes Objekt erhalten: ',
'ARGMGR:ERR:02' => ' <==> ',
'ARGMGR:ERR:03' => 'Die erhaltenen xajax Daten konnte nicht aus UTF8 konvertiert werden.',
'XJXCTL:IAERR:01' => 'Ungültiges Attribut [',
'XJXCTL:IAERR:02' => '] für Element [',
'XJXCTL:IAERR:03' => '].',
'XJXCTL:IRERR:01' => 'Ungültiges Request-Objekt übergeben an xajaxControl::setEvent',
'XJXCTL:IEERR:01' => 'Ungültiges Attribut (event name) [',
'XJXCTL:IEERR:02' => '] für Element [',
'XJXCTL:IEERR:03' => '].',
'XJXCTL:MAERR:01' => 'Erforderliches Attribut fehlt [',
'XJXCTL:MAERR:02' => '] für Element [',
'XJXCTL:MAERR:03' => '].',
'XJXCTL:IETERR:01' => "Ungültiges End-Tag; Sollte 'forbidden' oder 'optional' sein.\n",
'XJXCTL:ICERR:01' => "Ungültige Klasse für html control angegeben.; Sollte %inline, %block oder %flow sein.\n",
'XJXCTL:ICLERR:01' => 'Ungültige Klasse (control) an addChild übergeben; Sollte abgeleitet sein von xajaxControl.',
'XJXCTL:ICLERR:02' => 'Ungültige Klasse (control) an addChild übergeben [',
'XJXCTL:ICLERR:03' => '] für Element [',
'XJXCTL:ICLERR:04' => "].\n",
'XJXCTL:ICHERR:01' => 'Ungültiger Parameter übergeben für xajaxControl::addChildren; Array aus xajaxControl Objekten erwartet.',
'XJXCTL:MRAERR:01' => 'Erforderliches Attribut fehlt [',
'XJXCTL:MRAERR:02' => '] für Element [',
'XJXCTL:MRAERR:03' => '].',
'XJXPLG:GNERR:01' => 'Response plugin sollte die Funktion getName überschreiben.',
'XJXPLG:PERR:01' => 'Response plugin sollte die process Funktion überschreiben.',
'XJXPM:IPLGERR:01' => 'Versuch ungültiges Plugin zu registrieren: : ',
'XJXPM:IPLGERR:02' => ' Ableitung von xajaxRequestPlugin oder xajaxResponsePlugin erwartet.',
'XJXPM:MRMERR:01' => 'Konnte die Registrierungsmethode nicht finden für: : ',
'XJXRSP:EDERR:01' => 'Die Angabe der Zeichensatzkodierung in der xajaxResponse ist veraltet. Die neue Funktion lautet: $xajax->configure("characterEncoding", ...);',
'XJXRSP:MPERR:01' => 'Ungültiger oder fehlender Pluginname festgestellt im Aufruf von xajaxResponse::plugin',
'XJXRSP:CPERR:01' => "Der Parameter \$sType in addCreate ist veraltet. Die neue Funktion lautet addCreateInput()",
'XJXRSP:LCERR:01' => "Das xajax response Objeckt konnte die Befehler nich verarbeiten, da kein gültiges Array übergeben wurde.",
'XJXRSP:AKERR:01' => 'Ungültiger Tag-Name im Array.',
'XJXRSP:IEAERR:01' => 'Ungeeignet kodiertes Array.',
'XJXRSP:NEAERR:01' => 'Nicht kodiertes Array festgestellt.',
'XJXRSP:MBEERR:01' => 'Die Ausgabe vonn xajax response konnte nicht in htmlentities umgewandelt werden, da die Funktion mb_convert_encoding nicht verfügbar ist.',
'XJXRSP:MXRTERR' => 'Fehler: Kann keine verschiedenen Typen in einer einzelnen Antwort verarbeiten.',
'XJXRSP:MXCTERR' => 'Fehler: Kann keine verschiedenen Content-Types in einer einzelnen Antwort verarbeiten.',
'XJXRSP:MXCEERR' => 'Fehler: Kann keine verschiedenen Zeichensatzkodierungen in einer einzelnen Antwort verarbeiten.',
'XJXRSP:MXOEERR' => 'Fehler: Kann keine output entities (true/false) in ener einzelnen Antwort verarbeiten.',
'XJXRM:IRERR' => 'Ungültige Antwort erhalten während der Ausführung der Anfrage.',
'XJXRM:MXRTERR' => 'Fehler: Kann kkeine verschiedenen reponse types benutzen während der Ausführung einer Anfrage: '
));
//EndSkipAIO

View File

@ -0,0 +1,79 @@
<?php
/*
File: xajax_lang_nl.inc.php
Contains the debug and error messages output by xajax translated to Dutch.
Title: xajax class
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
Translations provided by: (Thank you!)
- Jeffrey <walkingsoul@gmail.com>
*/
//SkipAIO
$objLanguageManager =& xajaxLanguageManager::getInstance();
$objLanguageManager->register('nl', array(
'LOGHDR:01' => '** xajax Foutmelding logboek - ',
'LOGHDR:02' => " **\n",
'LOGHDR:03' => "\n\n\n",
'LOGERR:01' => "** Logboek fouten **\n\nxajax was niet in staat om te schrijven naar het logboek:\n",
'LOGMSG:01' => "** PHP Foutmeldingen: **",
'CMPRSJS:RDERR:01' => 'Het xajax ongecomprimeerde Javascript bestand kon niet worden gevonden in de: <b>',
'CMPRSJS:RDERR:02' => '</b>. map. ',
'CMPRSJS:WTERR:01' => 'Het xajax gecomprimeerde Javascript bestand kon niet worden geschreven in de: <b>',
'CMPRSJS:WTERR:02' => '</b> map. Fout ',
'CMPRSPHP:WTERR:01' => 'Naar het xajax gecomprimeerde bestand <b>',
'CMPRSPHP:WTERR:02' => '</b> kon niet worden geschreven. Fout ',
'CMPRSAIO:WTERR:01' => 'Naar het xajax gecomprimeerde bestand <b>',
'CMPRSAIO:WTERR:02' => '/xajaxAIO.inc.php</b> kon niet worden geschreven. Fout ',
'DTCTURI:01' => 'xajax Fout: xajax kon de Request URI niet automatisch identificeren.',
'DTCTURI:02' => 'Alstublieft, specificeer de Request URI expliciet bij het initiëren van het xajax object.',
'ARGMGR:ERR:01' => 'Misvormd object argument ontvangen: ',
'ARGMGR:ERR:02' => ' <==> ',
'ARGMGR:ERR:03' => 'De binnenkomende xajax data kon niet wordt geconverteerd van UTF-8.',
'XJXCTL:IAERR:01' => 'Ongeldig attribuut [',
'XJXCTL:IAERR:02' => '] voor element [',
'XJXCTL:IAERR:03' => '].',
'XJXCTL:IRERR:01' => 'Ongeldige object aanvraag doorgegeven aan xajaxControl::setEvent',
'XJXCTL:IEERR:01' => 'Ongeldig attribuut (event name) [',
'XJXCTL:IEERR:02' => '] voor element [',
'XJXCTL:IEERR:03' => '].',
'XJXCTL:MAERR:01' => 'Ontbrekend attribuut [',
'XJXCTL:MAERR:02' => '] voor element [',
'XJXCTL:MAERR:03' => '].',
'XJXCTL:IETERR:01' => "Ongeldige eind-tag; zou 'forbidden' of 'optional' moeten zijn..\n",
'XJXCTL:ICERR:01' => "Ongeldige klasse gespecificeerd voor html control.; zou %inline, %block of %flow moeten zijn.\n",
'XJXCTL:ICLERR:01' => 'Ongeldige (control) doorgegeven aan addChild; Zou moeten worden afgeleid van xajaxControl.',
'XJXCTL:ICLERR:02' => 'Ongeldige (control) doorgegeven aan addChild [',
'XJXCTL:ICLERR:03' => '] voor element [',
'XJXCTL:ICLERR:04' => "].\n",
'XJXCTL:ICHERR:01' => 'Ongeldige parameter doorgegeven aan xajaxControl::addChildren; Array moet bestaan uit xajaxControl objecten.',
'XJXCTL:MRAERR:01' => 'Ontbrekend attribuut [',
'XJXCTL:MRAERR:02' => '] voor element [',
'XJXCTL:MRAERR:03' => '].',
'XJXPLG:GNERR:01' => 'Retourneer plugin zou de getName functie moeten overschrijven.',
'XJXPLG:PERR:01' => 'Retourneer plugin zou de proces functie moeten overschrijven.',
'XJXPM:IPLGERR:01' => 'Poging om ongeldige plugin te registreren: : ',
'XJXPM:IPLGERR:02' => ' afleiding moet komen van xajaxRequestPlugin of xajaxResponsePlugin.',
'XJXPM:MRMERR:01' => 'Localisatie van registratie methode faalde voor het volgende: : ',
'XJXRSP:EDERR:01' => 'Doorgeven van karakter decodering naar de xajaxResponse constructie is verouderd. De nieuwe functie luidt: $xajax->configure("characterEncoding", ...);',
'XJXRSP:MPERR:01' => 'Ongeldige of ontbrekende plugin naam gedetecteerd in een aanvraag naar xajaxResponse::plugin',
'XJXRSP:CPERR:01' => "De parameter \$sType in addCreate is verouderd.. De nieuwe functie luidt addCreateInput()",
'XJXRSP:LCERR:01' => "Het xajax antwoord object kon de commando's niet laden, gezien de meegegeven data geen geldige array is.",
'XJXRSP:AKERR:01' => 'Ongeldige ge-encodeerde tag naam in array',
'XJXRSP:IEAERR:01' => 'Ungeeignet kodiertes Array.',
'XJXRSP:NEAERR:01' => 'Niet gecodeerde array gedetecteerd.',
'XJXRSP:MBEERR:01' => 'De xajax output kon niet worden geconverteerd naar HTML entities, gezien mb_convert_encoding niet beschikbaar is.',
'XJXRSP:MXRTERR' => 'Fout: Kann keine verschiedenen Typen in einer einzelnen Antwort verarbeiten.',
'XJXRSP:MXCTERR' => 'Fout: Kan geen meerdere typen verwisselen in een enkele teruggave.',
'XJXRSP:MXCEERR' => 'Fout: Kan geen meerdere karakter decoderingen verwerken in een enkele teruggave.',
'XJXRSP:MXOEERR' => 'Fout: kan geen output entities (true/false) in een enkele teruggave verwerken.',
'XJXRM:IRERR' => 'Een ongeldig antwoord is geretourneerd tijdens het verwerken van deze aanvraag.',
'XJXRM:MXRTERR' => 'Fout: Kan geen meerdere typen verwisselen tijdens het verwerken van een enkele aanvraag: '
));
//EndSkipAIO

View File

@ -0,0 +1,411 @@
if('undefined'==typeof xajax)
xajax={};if('undefined'==typeof xajax.config)
xajax.config={};xajax.config.setDefault=function(option,defaultValue){if('undefined'==typeof xajax.config[option])
xajax.config[option]=defaultValue;}
xajax.config.setDefault('commonHeaders',{'If-Modified-Since':'Sat, 1 Jan 2000 00:00:00 GMT'
});xajax.config.setDefault('postHeaders',{});xajax.config.setDefault('getHeaders',{});xajax.config.setDefault('waitCursor',false);xajax.config.setDefault('statusMessages',false);xajax.config.setDefault('baseDocument',document);xajax.config.setDefault('requestURI',xajax.config.baseDocument.URL);xajax.config.setDefault('defaultMode','asynchronous');xajax.config.setDefault('defaultHttpVersion','HTTP/1.1');xajax.config.setDefault('defaultContentType','application/x-www-form-urlencoded');xajax.config.setDefault('defaultResponseDelayTime',1000);xajax.config.setDefault('defaultExpirationTime',10000);xajax.config.setDefault('defaultMethod','POST');xajax.config.setDefault('defaultRetry',5);xajax.config.setDefault('defaultReturnValue',false);xajax.config.setDefault('maxObjectDepth',20);xajax.config.setDefault('maxObjectSize',2000);xajax.config.setDefault('responseQueueSize',1000);xajax.config.status={update:function(){return{onRequest:function(){window.status='Sending Request...';},
onWaiting:function(){window.status='Waiting for Response...';},
onProcessing:function(){window.status='Processing...';},
onComplete:function(){window.status='Done.';}
}
},
dontUpdate:function(){return{onRequest:function(){},
onWaiting:function(){},
onProcessing:function(){},
onComplete:function(){}
}
}
}
xajax.config.cursor={update:function(){return{onWaiting:function(){if(xajax.config.baseDocument.body)
xajax.config.baseDocument.body.style.cursor='wait';},
onComplete:function(){xajax.config.baseDocument.body.style.cursor='auto';}
}
},
dontUpdate:function(){return{onWaiting:function(){},
onComplete:function(){}
}
}
}
xajax.tools={}
xajax.tools.$=function(sId){if(!sId)
return null;var oDoc=xajax.config.baseDocument;var obj=oDoc.getElementById(sId);if(obj)
return obj;if(oDoc.all)
return oDoc.all[sId];return obj;}
xajax.tools.arrayContainsValue=function(array,valueToCheck){var i=0;var l=array.length;while(i < l){if(array[i]==valueToCheck)
return true;++i;}
return false;}
xajax.tools.doubleQuotes=function(haystack){return haystack.replace(new RegExp("'",'g'),'"');}
xajax.tools.singleQuotes=function(haystack){return haystack.replace(new RegExp('"','g'),"'");}
xajax.tools._escape=function(data){if('undefined'==typeof data)
return data;if('string'!=typeof data)
return data;var needCDATA=false;if(encodeURIComponent(data)!=data){needCDATA=true;var segments=data.split('<![CDATA[');var segLen=segments.length;data=[];for(var i=0;i < segLen;++i){var segment=segments[i];var fragments=segment.split(']]>');var fragLen=fragments.length;segment='';for(var j=0;j < fragLen;++j){if(0!=j)
segment+=']]]]><![CDATA[>';segment+=fragments[j];}
if(0!=i)
data.push('<![]]><![CDATA[CDATA[');data.push(segment);}
data=data.join('');}
if(needCDATA)
data='<![CDATA['+data+']]>';return data;}
xajax.tools._objectToXML=function(obj,guard){var aXml=[];aXml.push('<xjxobj>');for(var key in obj){++guard.size;if(guard.maxSize < guard.size)
return aXml.join('');if('undefined'!=typeof obj[key]){if('constructor'==key)
continue;if('function'==typeof obj[key])
continue;aXml.push('<e><k>');var val=xajax.tools._escape(key);aXml.push(val);aXml.push('</k><v>');if('object'==typeof obj[key]){++guard.depth;if(guard.maxDepth > guard.depth){try{aXml.push(xajax.tools._objectToXML(obj[key],guard));}catch(e){}
}
--guard.depth;}else{var val=xajax.tools._escape(obj[key]);if('undefined'==typeof val||null==val){aXml.push('*');}else{var sType=typeof val;if('string'==sType)
aXml.push('S');else if('boolean'==sType)
aXml.push('B');else if('number'==sType)
aXml.push('N');aXml.push(val);}
}
aXml.push('</v></e>');}
}
aXml.push('</xjxobj>');return aXml.join('');}
xajax.tools._enforceDataType=function(value){value=new String(value);var type=value.substr(0,1);value=value.substr(1);if('*'==type)
value=null;else if('N'==type)
value=value-0;else if('B'==type)
value=!!value;return value;}
xajax.tools._nodeToObject=function(node){if(null==node)
return '';if('undefined'!=typeof node.nodeName){if('#cdata-section'==node.nodeName||'#text'==node.nodeName){var data='';do if(node.data)data+=node.data;while(node=node.nextSibling);return xajax.tools._enforceDataType(data);}else if('xjxobj'==node.nodeName){var key=null;var value=null;var data=new Array;var child=node.firstChild;while(child){if('e'==child.nodeName){var grandChild=child.firstChild;while(grandChild){if('k'==grandChild.nodeName)
key=xajax.tools._enforceDataType(grandChild.firstChild.data);else('v'==grandChild.nodeName)
value=xajax.tools._nodeToObject(grandChild.firstChild);grandChild=grandChild.nextSibling;}
if(null!=key){data[key]=value;key=value=null;}
}
child=child.nextSibling;}
return data;}
}
throw{code:10001,data:node.nodeName};}
xajax.tools.getRequestObject=function(){if('undefined'!=typeof XMLHttpRequest){xajax.tools.getRequestObject=function(){return new XMLHttpRequest();}
}else if('undefined'!=typeof ActiveXObject){xajax.tools.getRequestObject=function(){try{return new ActiveXObject('Msxml2.XMLHTTP.4.0');}catch(e){xajax.tools.getRequestObject=function(){try{return new ActiveXObject('Msxml2.XMLHTTP');}catch(e2){xajax.tools.getRequestObject=function(){return new ActiveXObject('Microsoft.XMLHTTP');}
return xajax.tools.getRequestObject();}
}
return xajax.tools.getRequestObject();}
}
}else if(window.createRequest){xajax.tools.getRequestObject=function(){return window.createRequest();}
}else{xajax.tools.getRequestObject=function(){throw{code:10002};}
}
return xajax.tools.getRequestObject();}
xajax.tools.getBrowserHTML=function(sValue){var oDoc=xajax.config.baseDocument;if(!oDoc.body)
return '';var elWorkspace=xajax.$('xajax_temp_workspace');if(!elWorkspace){elWorkspace=oDoc.createElement('div');elWorkspace.setAttribute('id','xajax_temp_workspace');elWorkspace.style.display='none';elWorkspace.style.visibility='hidden';oDoc.body.appendChild(elWorkspace);}
elWorkspace.innerHTML=sValue;var browserHTML=elWorkspace.innerHTML;elWorkspace.innerHTML='';return browserHTML;}
xajax.tools.willChange=function(element,attribute,newData){if('string'==typeof element)
element=xajax.$(element);if(element){var oldData;eval('oldData=element.'+attribute);return(newData!=oldData);}
return false;}
xajax.tools.getFormValues=function(parent){var submitDisabledElements=false;if(arguments.length > 1&&arguments[1]==true)
submitDisabledElements=true;var prefix='';if(arguments.length > 2)
prefix=arguments[2];if('string'==typeof parent)
parent=xajax.$(parent);var aFormValues={};if(parent)
if(parent.childNodes)
xajax.tools._getFormValues(aFormValues,parent.childNodes,submitDisabledElements,prefix);return aFormValues;}
xajax.tools._getFormValues=function(aFormValues,children,submitDisabledElements,prefix){var iLen=children.length;for(var i=0;i < iLen;++i){var child=children[i];if('undefined'!=typeof child.childNodes)
xajax.tools._getFormValues(aFormValues,child.childNodes,submitDisabledElements,prefix);xajax.tools._getFormValue(aFormValues,child,submitDisabledElements,prefix);}
}
xajax.tools._getFormValue=function(aFormValues,child,submitDisabledElements,prefix){if(!child.name)
return;if('PARAM'==child.tagName)return;if(child.disabled)
if(true==child.disabled)
if(false==submitDisabledElements)
return;if(prefix!=child.name.substring(0,prefix.length))
return;if(child.type)
if(child.type=='radio'||child.type=='checkbox')
if(false==child.checked)
return;var name=child.name;var values=[];if('select-multiple'==child.type){var jLen=child.length;for(var j=0;j < jLen;++j){var option=child.options[j];if(true==option.selected)
values.push(option.value);}
}else{values=child.value;}
var keyBegin=name.indexOf('[');if(0 <=keyBegin){var n=name;var k=n.substr(0,n.indexOf('['));var a=n.substr(n.indexOf('['));if(typeof aFormValues[k]=='undefined')
aFormValues[k]=[];var p=aFormValues;while(a.length!=0){var sa=a.substr(0,a.indexOf(']')+1);var lk=k;var lp=p;a=a.substr(a.indexOf(']')+1);p=p[k];k=sa.substr(1,sa.length-2);if(k==''){if('select-multiple'==child.type){k=lk;p=lp;}else{k=p.length;}
}
if(typeof p[k]=='undefined')
p[k]=[];}
p[k]=values;}else{aFormValues[name]=values;}
}
xajax.tools.stripOnPrefix=function(sEventName){sEventName=sEventName.toLowerCase();if(0==sEventName.indexOf('on'))
sEventName=sEventName.replace(/on/,'');return sEventName;}
xajax.tools.addOnPrefix=function(sEventName){sEventName=sEventName.toLowerCase();if(0!=sEventName.indexOf('on'))
sEventName='on'+sEventName;return sEventName;}
xajax.tools.xml={};xajax.tools.xml.parseAttributes=function(child,obj){var iLen=child.attributes.length;for(var i=0;i < iLen;++i){var attr=child.attributes[i];obj[attr.name]=attr.value;}
}
xajax.tools.xml.parseChildren=function(child,obj){obj.data='';if(0 < child.childNodes.length){if(1 < child.childNodes.length){var grandChild=child.firstChild;do{if('#cdata-section'==grandChild.nodeName||'#text'==grandChild.nodeName){obj.data+=grandChild.data;}
}while(grandChild=grandChild.nextSibling);}else{var grandChild=child.firstChild;if('xjxobj'==grandChild.nodeName){obj.data=xajax.tools._nodeToObject(grandChild);return;}else if('#cdata-section'==grandChild.nodeName||'#text'==grandChild.nodeName){obj.data=grandChild.data;}
}
}else if('undefined'!=typeof child.data){obj.data=child.data;}
obj.data=xajax.tools._enforceDataType(obj.data);}
xajax.tools.xml.processFragment=function(xmlNode,seq,oRet,oRequest){var xx=xajax;var xt=xx.tools;while(xmlNode){if('cmd'==xmlNode.nodeName){var obj={};obj.fullName='*unknown*';obj.sequence=seq;obj.request=oRequest;obj.context=oRequest.context;xt.xml.parseAttributes(xmlNode,obj);xt.xml.parseChildren(xmlNode,obj);xt.queue.push(xx.response,obj);}else if('xjxrv'==xmlNode.nodeName){oRet=xt._nodeToObject(xmlNode.firstChild);}else if('debugmsg'==xmlNode.nodeName){}else
throw{code:10004,data:xmlNode.nodeName}
++seq;xmlNode=xmlNode.nextSibling;}
return oRet;}
xajax.tools.queue={}
xajax.tools.queue.create=function(size){return{start:0,
size:size,
end:0,
commands:[],
timeout:null
}
}
xajax.tools.queue.retry=function(obj,count){var retries=obj.retries;if(retries){--retries;if(1 > retries)
return false;}else retries=count;obj.retries=retries;return true;}
xajax.tools.queue.rewind=function(theQ){if(0 < theQ.start)
--theQ.start;else
theQ.start=theQ.size;}
xajax.tools.queue.setWakeup=function(theQ,when){if(null!=theQ.timeout){clearTimeout(theQ.timeout);theQ.timeout=null;}
theQ.timout=setTimeout(function(){xajax.tools.queue.process(theQ);},when);}
xajax.tools.queue.process=function(theQ){if(null!=theQ.timeout){clearTimeout(theQ.timeout);theQ.timeout=null;}
var obj=xajax.tools.queue.pop(theQ);while(null!=obj){try{if(false==xajax.executeCommand(obj))
return false;}catch(e){}
delete obj;obj=xajax.tools.queue.pop(theQ);}
return true;}
xajax.tools.queue.push=function(theQ,obj){var next=theQ.end+1;if(next > theQ.size)
next=0;if(next!=theQ.start){theQ.commands[theQ.end]=obj;theQ.end=next;}else
throw{code:10003}
}
xajax.tools.queue.pushFront=function(theQ,obj){xajax.tools.queue.rewind(theQ);theQ.commands[theQ.start]=obj;}
xajax.tools.queue.pop=function(theQ){var next=theQ.start;if(next==theQ.end)
return null;next++;if(next > theQ.size)
next=0;var obj=theQ.commands[theQ.start];delete theQ.commands[theQ.start];theQ.start=next;return obj;}
xajax.responseProcessor={};xajax.responseProcessor.xml=function(oRequest){var xx=xajax;var xt=xx.tools;var xcb=xx.callback;var gcb=xcb.global;var lcb=oRequest.callback;var oRet=oRequest.returnValue;if(xt.arrayContainsValue(xx.responseSuccessCodes,oRequest.request.status)){xcb.execute([gcb,lcb],'onSuccess',oRequest);var seq=0;if(oRequest.request.responseXML){var responseXML=oRequest.request.responseXML;if(responseXML.documentElement){oRequest.status.onProcessing();var child=responseXML.documentElement.firstChild;oRet=xt.xml.processFragment(child,seq,oRet,oRequest);}
}
var obj={};obj.fullName='Response Complete';obj.sequence=seq;obj.request=oRequest;obj.context=oRequest.context;obj.cmd='rcmplt';xt.queue.push(xx.response,obj);if(null==xx.response.timeout)
xt.queue.process(xx.response);}else if(xt.arrayContainsValue(xx.responseRedirectCodes,oRequest.request.status)){xcb.execute([gcb,lcb],'onRedirect',oRequest);window.location=oRequest.request.getResponseHeader('location');xx.completeResponse(oRequest);}else if(xt.arrayContainsValue(xx.responseErrorsForAlert,oRequest.request.status)){xcb.execute([gcb,lcb],'onFailure',oRequest);xx.completeResponse(oRequest);}
return oRet;}
xajax.js={}
xajax.js.includeScriptOnce=function(command){command.fullName='includeScriptOnce';var fileName=command.data;var oDoc=xajax.config.baseDocument;var loadedScripts=oDoc.getElementsByTagName('script');var iLen=loadedScripts.length;for(var i=0;i < iLen;++i){var script=loadedScripts[i];if(script.src){if(0 <=script.src.indexOf(fileName))
return true;}
}
return xajax.js.includeScript(command);}
xajax.js.includeScript=function(command){command.fullName='includeScript';var oDoc=xajax.config.baseDocument;var objHead=oDoc.getElementsByTagName('head');var objScript=oDoc.createElement('script');objScript.src=command.data;if('undefined'==typeof command.type)objScript.type='text/javascript';else objScript.type=command.type;if('undefined'!=typeof command.type)objScript.setAttribute('id',command.elm_id);objHead[0].appendChild(objScript);return true;}
xajax.js.removeScript=function(command){command.fullName='removeScript';var fileName=command.data;var unload=command.unld;var oDoc=xajax.config.baseDocument;var loadedScripts=oDoc.getElementsByTagName('script');var iLen=loadedScripts.length;for(var i=0;i < iLen;++i){var script=loadedScripts[i];if(script.src){if(0 <=script.src.indexOf(fileName)){if('undefined'!=typeof unload){var args={};args.data=unload;args.context=window;xajax.js.execute(args);}
var parent=script.parentNode;parent.removeChild(script);}
}
}
return true;}
xajax.js.sleep=function(command){command.fullName='sleep';if(xajax.tools.queue.retry(command,command.prop)){xajax.tools.queue.setWakeup(xajax.response,100);return false;}
return true;}
xajax.js.confirmCommands=function(command){command.fullName='confirmCommands';var msg=command.data;var numberOfCommands=command.id;if(false==confirm(msg)){while(0 < numberOfCommands){xajax.tools.queue.pop(xajax.response);--numberOfCommands;}
}
return true;}
xajax.js.execute=function(args){args.fullName='execute Javascript';var returnValue=true;args.context.xajaxDelegateCall=function(){eval(args.data);}
args.context.xajaxDelegateCall();return returnValue;}
xajax.js.waitFor=function(args){args.fullName='waitFor';var bResult=false;var cmdToEval='bResult = (';cmdToEval+=args.data;cmdToEval+=');';try{args.context.xajaxDelegateCall=function(){eval(cmdToEval);}
args.context.xajaxDelegateCall();}catch(e){}
if(false==bResult){if(xajax.tools.queue.retry(args,args.prop)){xajax.tools.queue.setWakeup(xajax.response,100);return false;}
}
return true;}
xajax.js.call=function(args){args.fullName='call js function';var parameters=args.data;var scr=new Array();scr.push(args.func);scr.push('(');if('undefined'!=typeof parameters){if('object'==typeof parameters){var iLen=parameters.length;if(0 < iLen){scr.push('parameters[0]');for(var i=1;i < iLen;++i)
scr.push(', parameters['+i+']');}
}
}
scr.push(');');args.context.xajaxDelegateCall=function(){eval(scr.join(''));}
args.context.xajaxDelegateCall();return true;}
xajax.js.setFunction=function(args){args.fullName='setFunction';var code=new Array();code.push(args.func);code.push(' = function(');if('object'==typeof args.prop){var separator='';for(var m in args.prop){code.push(separator);code.push(args.prop[m]);separator=',';}
}else code.push(args.prop);code.push(') { ');code.push(args.data);code.push(' }');args.context.xajaxDelegateCall=function(){eval(code.join(''));}
args.context.xajaxDelegateCall();return true;}
xajax.js.wrapFunction=function(args){args.fullName='wrapFunction';var code=new Array();code.push(args.func);code.push(' = xajax.js.makeWrapper(');code.push(args.func);code.push(', args.prop, args.data, args.type, args.context);');args.context.xajaxDelegateCall=function(){eval(code.join(''));}
args.context.xajaxDelegateCall();return true;}
xajax.js.makeWrapper=function(origFun,args,codeBlocks,returnVariable,context){var originalCall='';if(0 < returnVariable.length){originalCall+=returnVariable;originalCall+=' = ';}
var originalCall='origFun(';originalCall+=args;originalCall+='); ';var code='wrapper = function(';code+=args;code+=') { ';if(0 < returnVariable.length){code+=' var ';code+=returnVariable;code+=' = null;';}
var separator='';var bLen=codeBlocks.length;for(var b=0;b < bLen;++b){code+=separator;code+=codeBlocks[b];separator=originalCall;}
if(0 < returnVariable.length){code+=' return ';code+=returnVariable;code+=';';}
code+=' } ';var wrapper=null;context.xajaxDelegateCall=function(){eval(code);}
context.xajaxDelegateCall();return wrapper;}
xajax.dom={}
xajax.dom.assign=function(element,property,data){if('string'==typeof element)
element=xajax.$(element);switch(property){case 'innerHTML':
element.innerHTML=data;break;case 'outerHTML':
if('undefined'==typeof element.outerHTML){var r=xajax.config.baseDocument.createRange();r.setStartBefore(element);var df=r.createContextualFragment(data);element.parentNode.replaceChild(df,element);}else element.outerHTML=data;break;default:
if(xajax.tools.willChange(element,property,data))
eval('element.'+property+' = data;');break;}
return true;}
xajax.dom.append=function(element,property,data){if('string'==typeof element)
element=xajax.$(element);eval('element.'+property+' += data;');return true;}
xajax.dom.prepend=function(element,property,data){if('string'==typeof element)
element=xajax.$(element);eval('element.'+property+' = data + element.'+property);return true;}
xajax.dom.replace=function(element,sAttribute,aData){var sSearch=aData['s'];var sReplace=aData['r'];if(sAttribute=='innerHTML')
sSearch=xajax.tools.getBrowserHTML(sSearch);if('string'==typeof element)
element=xajax.$(element);eval('var txt = element.'+sAttribute);var bFunction=false;if('function'==typeof txt){txt=txt.join('');bFunction=true;}
var start=txt.indexOf(sSearch);if(start >-1){var newTxt=[];while(start >-1){var end=start+sSearch.length;newTxt.push(txt.substr(0,start));newTxt.push(sReplace);txt=txt.substr(end,txt.length-end);start=txt.indexOf(sSearch);}
newTxt.push(txt);newTxt=newTxt.join('');if(bFunction){eval('element.'+sAttribute+'=newTxt;');}else if(xajax.tools.willChange(element,sAttribute,newTxt)){eval('element.'+sAttribute+'=newTxt;');}
}
return true;}
xajax.dom.remove=function(element){if('string'==typeof element)
element=xajax.$(element);if(element&&element.parentNode&&element.parentNode.removeChild)
element.parentNode.removeChild(element);return true;}
xajax.dom.create=function(objParent,sTag,sId){if('string'==typeof objParent)
objParent=xajax.$(objParent);var target=xajax.config.baseDocument.createElement(sTag);target.setAttribute('id',sId);if(objParent)
objParent.appendChild(target);return true;}
xajax.dom.insert=function(objSibling,sTag,sId){if('string'==typeof objSibling)
objSibling=xajax.$(objSibling);var target=xajax.config.baseDocument.createElement(sTag);target.setAttribute('id',sId);objSibling.parentNode.insertBefore(target,objSibling);return true;}
xajax.dom.insertAfter=function(objSibling,sTag,sId){if('string'==typeof objSibling)
objSibling=xajax.$(objSibling);var target=xajax.config.baseDocument.createElement(sTag);target.setAttribute('id',sId);objSibling.parentNode.insertBefore(target,objSibling.nextSibling);return true;}
xajax.dom.contextAssign=function(args){args.fullName='context assign';var code=[];code.push('this.');code.push(args.prop);code.push(' = data;');code=code.join('');args.context.xajaxDelegateCall=function(data){eval(code);}
args.context.xajaxDelegateCall(args.data);return true;}
xajax.dom.contextAppend=function(args){args.fullName='context append';var code=[];code.push('this.');code.push(args.prop);code.push(' += data;');code=code.join('');args.context.xajaxDelegateCall=function(data){eval(code);}
args.context.xajaxDelegateCall(args.data);return true;}
xajax.dom.contextPrepend=function(args){args.fullName='context prepend';var code=[];code.push('this.');code.push(args.prop);code.push(' = data + this.');code.push(args.prop);code.push(';');code=code.join('');args.context.xajaxDelegateCall=function(data){eval(code);}
args.context.xajaxDelegateCall(args.data);return true;}
xajax.css={}
xajax.css.add=function(fileName,media){var oDoc=xajax.config.baseDocument;var oHeads=oDoc.getElementsByTagName('head');var oHead=oHeads[0];var oLinks=oHead.getElementsByTagName('link');var found=false;var iLen=oLinks.length;for(var i=0;i < iLen&&false==found;++i)
if(0 <=oLinks[i].href.indexOf(fileName)&&oLinks[i].media==media)
found=true;if(false==found){var oCSS=oDoc.createElement('link');oCSS.rel='stylesheet';oCSS.type='text/css';oCSS.href=fileName;oCSS.media=media;oHead.appendChild(oCSS);}
return true;}
xajax.css.remove=function(fileName,media){var oDoc=xajax.config.baseDocument;var oHeads=oDoc.getElementsByTagName('head');var oHead=oHeads[0];var oLinks=oHead.getElementsByTagName('link');var i=0;while(i < oLinks.length)
if(0 <=oLinks[i].href.indexOf(fileName)&&oLinks[i].media==media)
oHead.removeChild(oLinks[i]);else++i;return true;}
xajax.css.waitForCSS=function(args){var oDocSS=xajax.config.baseDocument.styleSheets;var ssEnabled=[];var iLen=oDocSS.length;for(var i=0;i < iLen;++i){ssEnabled[i]=0;try{ssEnabled[i]=oDocSS[i].cssRules.length;}catch(e){try{ssEnabled[i]=oDocSS[i].rules.length;}catch(e){}
}
}
var ssLoaded=true;var iLen=ssEnabled.length;for(var i=0;i < iLen;++i)
if(0==ssEnabled[i])
ssLoaded=false;if(false==ssLoaded){if(xajax.tools.queue.retry(args,args.prop)){xajax.tools.queue.setWakeup(xajax.response,10);return false;}
}
return true;}
xajax.forms={}
xajax.forms.getInput=function(type,name,id){if('undefined'==typeof window.addEventListener){xajax.forms.getInput=function(type,name,id){return xajax.config.baseDocument.createElement('<input type="'+type+'" name="'+name+'" id="'+id+'">');}
}else{xajax.forms.getInput=function(type,name,id){var oDoc=xajax.config.baseDocument;var Obj=oDoc.createElement('input');Obj.setAttribute('type',type);Obj.setAttribute('name',name);Obj.setAttribute('id',id);return Obj;}
}
return xajax.forms.getInput(type,name,id);}
xajax.forms.createInput=function(command){command.fullName='createInput';var objParent=command.id;var sType=command.type;var sName=command.data;var sId=command.prop;if('string'==typeof objParent)
objParent=xajax.$(objParent);var target=xajax.forms.getInput(sType,sName,sId);if(objParent&&target){objParent.appendChild(target);}
return true;}
xajax.forms.insertInput=function(command){command.fullName='insertInput';var objSibling=command.id;var sType=command.type;var sName=command.data;var sId=command.prop;if('string'==typeof objSibling)
objSibling=xajax.$(objSibling);var target=xajax.forms.getInput(sType,sName,sId);if(target&&objSibling&&objSibling.parentNode)
objSibling.parentNode.insertBefore(target,objSibling);return true;}
xajax.forms.insertInputAfter=function(command){command.fullName='insertInputAfter';var objSibling=command.id;var sType=command.type;var sName=command.data;var sId=command.prop;if('string'==typeof objSibling)
objSibling=xajax.$(objSibling);var target=xajax.forms.getInput(sType,sName,sId);if(target&&objSibling&&objSibling.parentNode)
objSibling.parentNode.insertBefore(target,objSibling.nextSibling);return true;}
xajax.events={}
xajax.events.setEvent=function(command){command.fullName='addEvent';var element=command.id;var sEvent=command.prop;var code=command.data;if('string'==typeof element)
element=xajax.$(element);sEvent=xajax.tools.addOnPrefix(sEvent);code=xajax.tools.doubleQuotes(code);eval('element.'+sEvent+' = function() { '+code+'; }');return true;}
xajax.events.addHandler=function(element,sEvent,fun){if(window.addEventListener){xajax.events.addHandler=function(command){command.fullName='addHandler';var element=command.id;var sEvent=command.prop;var fun=command.data;if('string'==typeof element)
element=xajax.$(element);sEvent=xajax.tools.stripOnPrefix(sEvent);eval('element.addEventListener("'+sEvent+'", '+fun+', false);');return true;}
}else{xajax.events.addHandler=function(command){command.fullName='addHandler';var element=command.id;var sEvent=command.prop;var fun=command.data;if('string'==typeof element)
element=xajax.$(element);sEvent=xajax.tools.addOnPrefix(sEvent);eval('element.attachEvent("'+sEvent+'", '+fun+', false);');return true;}
}
return xajax.events.addHandler(element,sEvent,fun);}
xajax.events.removeHandler=function(element,sEvent,fun){if(window.removeEventListener){xajax.events.removeHandler=function(command){command.fullName='removeHandler';var element=command.id;var sEvent=command.prop;var fun=command.data;if('string'==typeof element)
element=xajax.$(element);sEvent=xajax.tools.stripOnPrefix(sEvent);eval('element.removeEventListener("'+sEvent+'", '+fun+', false);');return true;}
}else{xajax.events.removeHandler=function(command){command.fullName='removeHandler';var element=command.id;var sEvent=command.prop;var fun=command.data;if('string'==typeof element)
element=xajax.$(element);sEvent=xajax.tools.addOnPrefix(sEvent);eval('element.detachEvent("'+sEvent+'", '+fun+', false);');return true;}
}
return xajax.events.removeHandler(element,sEvent,fun);}
xajax.callback={}
xajax.callback.create=function(){var xx=xajax;var xc=xx.config;var xcb=xx.callback;var oCB={}
oCB.timers={};oCB.timers.onResponseDelay=xcb.setupTimer(
(arguments.length > 0)
? arguments[0]
:xc.defaultResponseDelayTime);oCB.timers.onExpiration=xcb.setupTimer(
(arguments.length > 1)
? arguments[1]
:xc.defaultExpirationTime);oCB.onRequest=null;oCB.onResponseDelay=null;oCB.onExpiration=null;oCB.beforeResponseProcessing=null;oCB.onFailure=null;oCB.onRedirect=null;oCB.onSuccess=null;oCB.onComplete=null;return oCB;}
xajax.callback.setupTimer=function(iDelay){return{timer:null,delay:iDelay};}
xajax.callback.clearTimer=function(oCallback,sFunction){if('undefined'!=typeof oCallback.timers){if('undefined'!=typeof oCallback.timers[sFunction]){clearTimeout(oCallback.timers[sFunction].timer);}
}else if('object'==typeof oCallback){var iLen=oCallback.length;for(var i=0;i < iLen;++i)
xajax.callback.clearTimer(oCallback[i],sFunction);}
}
xajax.callback.execute=function(oCallback,sFunction,args){if('undefined'!=typeof oCallback[sFunction]){var func=oCallback[sFunction];if('function'==typeof func){if('undefined'!=typeof oCallback.timers[sFunction]){oCallback.timers[sFunction].timer=setTimeout(function(){func(args);},oCallback.timers[sFunction].delay);}
else{func(args);}
}
}else if('object'==typeof oCallback){var iLen=oCallback.length;for(var i=0;i < iLen;++i)
xajax.callback.execute(oCallback[i],sFunction,args);}
}
xajax.callback.global=xajax.callback.create();xajax.response=xajax.tools.queue.create(xajax.config.responseQueueSize);xajax.responseSuccessCodes=['0','200'];xajax.responseErrorsForAlert=['400','401','402','403','404','500','501','502','503'];xajax.responseRedirectCodes=['301','302','307'];if('undefined'==typeof xajax.command)
xajax.command={};xajax.command.create=function(sequence,request,context){var newCmd={};newCmd.cmd='*';newCmd.fullName='* unknown command name *';newCmd.sequence=sequence;newCmd.request=request;newCmd.context=context;return newCmd;}
if('undefined'==typeof xajax.command.handler)
xajax.command.handler={};if('undefined'==typeof xajax.command.handler.handlers)
xajax.command.handler.handlers=[];xajax.command.handler.register=function(shortName,func){xajax.command.handler.handlers[shortName]=func;}
xajax.command.handler.unregister=function(shortName){var func=xajax.command.handler.handlers[shortName];delete xajax.command.handler.handlers[shortName];return func;}
xajax.command.handler.isRegistered=function(command){var shortName=command.cmd;if(xajax.command.handler.handlers[shortName])
return true;return false;}
xajax.command.handler.call=function(command){var shortName=command.cmd;return xajax.command.handler.handlers[shortName](command);}
xajax.command.handler.register('rcmplt',function(args){xajax.completeResponse(args.request);return true;});xajax.command.handler.register('css',function(args){args.fullName='includeCSS';if('undefined'==typeof args.media)
args.media='screen';return xajax.css.add(args.data,args.media);});xajax.command.handler.register('rcss',function(args){args.fullName='removeCSS';if('undefined'==typeof args.media)
args.media='screen';return xajax.css.remove(args.data,args.media);});xajax.command.handler.register('wcss',function(args){args.fullName='waitForCSS';return xajax.css.waitForCSS(args);});xajax.command.handler.register('as',function(args){args.fullName='assign/clear';try{return xajax.dom.assign(args.target,args.prop,args.data);}catch(e){}
return true;});xajax.command.handler.register('ap',function(args){args.fullName='append';return xajax.dom.append(args.target,args.prop,args.data);});xajax.command.handler.register('pp',function(args){args.fullName='prepend';return xajax.dom.prepend(args.target,args.prop,args.data);});xajax.command.handler.register('rp',function(args){args.fullName='replace';return xajax.dom.replace(args.id,args.prop,args.data);});xajax.command.handler.register('rm',function(args){args.fullName='remove';return xajax.dom.remove(args.id);});xajax.command.handler.register('ce',function(args){args.fullName='create';return xajax.dom.create(args.id,args.data,args.prop);});xajax.command.handler.register('ie',function(args){args.fullName='insert';return xajax.dom.insert(args.id,args.data,args.prop);});xajax.command.handler.register('ia',function(args){args.fullName='insertAfter';return xajax.dom.insertAfter(args.id,args.data,args.prop);});xajax.command.handler.register('c:as',xajax.dom.contextAssign);xajax.command.handler.register('c:ap',xajax.dom.contextAppend);xajax.command.handler.register('c:pp',xajax.dom.contextPrepend);xajax.command.handler.register('s',xajax.js.sleep);xajax.command.handler.register('ino',xajax.js.includeScriptOnce);xajax.command.handler.register('in',xajax.js.includeScript);xajax.command.handler.register('rjs',xajax.js.removeScript);xajax.command.handler.register('wf',xajax.js.waitFor);xajax.command.handler.register('js',xajax.js.execute);xajax.command.handler.register('jc',xajax.js.call);xajax.command.handler.register('sf',xajax.js.setFunction);xajax.command.handler.register('wpf',xajax.js.wrapFunction);xajax.command.handler.register('al',function(args){args.fullName='alert';alert(args.data);return true;});xajax.command.handler.register('cc',xajax.js.confirmCommands);xajax.command.handler.register('ci',xajax.forms.createInput);xajax.command.handler.register('ii',xajax.forms.insertInput);xajax.command.handler.register('iia',xajax.forms.insertInputAfter);xajax.command.handler.register('ev',xajax.events.setEvent);xajax.command.handler.register('ah',xajax.events.addHandler);xajax.command.handler.register('rh',xajax.events.removeHandler);xajax.command.handler.register('dbg',function(args){args.fullName='debug message';return true;});xajax.initializeRequest=function(oRequest){var xx=xajax;var xc=xx.config;oRequest.append=function(opt,def){if('undefined'!=typeof this[opt]){for(var itmName in def)
if('undefined'==typeof this[opt][itmName])
this[opt][itmName]=def[itmName];}else this[opt]=def;}
oRequest.append('commonHeaders',xc.commonHeaders);oRequest.append('postHeaders',xc.postHeaders);oRequest.append('getHeaders',xc.getHeaders);oRequest.set=function(option,defaultValue){if('undefined'==typeof this[option])
this[option]=defaultValue;}
oRequest.set('statusMessages',xc.statusMessages);oRequest.set('waitCursor',xc.waitCursor);oRequest.set('mode',xc.defaultMode);oRequest.set('method',xc.defaultMethod);oRequest.set('URI',xc.requestURI);oRequest.set('httpVersion',xc.defaultHttpVersion);oRequest.set('contentType',xc.defaultContentType);oRequest.set('retry',xc.defaultRetry);oRequest.set('returnValue',xc.defaultReturnValue);oRequest.set('maxObjectDepth',xc.maxObjectDepth);oRequest.set('maxObjectSize',xc.maxObjectSize);oRequest.set('context',window);var xcb=xx.callback;var gcb=xcb.global;var lcb=xcb.create();lcb.take=function(frm,opt){if('undefined'!=typeof frm[opt]){lcb[opt]=frm[opt];lcb.hasEvents=true;}
delete frm[opt];}
lcb.take(oRequest,'onRequest');lcb.take(oRequest,'onResponseDelay');lcb.take(oRequest,'onExpiration');lcb.take(oRequest,'beforeResponseProcessing');lcb.take(oRequest,'onFailure');lcb.take(oRequest,'onRedirect');lcb.take(oRequest,'onSuccess');lcb.take(oRequest,'onComplete');if('undefined'!=typeof oRequest.callback){if(lcb.hasEvents)
oRequest.callback=[oRequest.callback,lcb];}else
oRequest.callback=lcb;oRequest.status=(oRequest.statusMessages)
? xc.status.update()
:xc.status.dontUpdate();oRequest.cursor=(oRequest.waitCursor)
? xc.cursor.update()
:xc.cursor.dontUpdate();oRequest.method=oRequest.method.toUpperCase();if('GET'!=oRequest.method)
oRequest.method='POST';oRequest.requestRetry=oRequest.retry;oRequest.append('postHeaders',{'content-type':oRequest.contentType
});delete oRequest['append'];delete oRequest['set'];delete oRequest['take'];if('undefined'==typeof oRequest.URI)
throw{code:10005}
}
xajax.processParameters=function(oRequest){var xx=xajax;var xt=xx.tools;var rd=[];var separator='';for(var sCommand in oRequest.functionName){if('constructor'!=sCommand){rd.push(separator);rd.push(sCommand);rd.push('=');rd.push(encodeURIComponent(oRequest.functionName[sCommand]));separator='&';}
}
var dNow=new Date();rd.push('&xjxr=');rd.push(dNow.getTime());delete dNow;if(oRequest.parameters){var i=0;var iLen=oRequest.parameters.length;while(i < iLen){var oVal=oRequest.parameters[i];if('object'==typeof oVal&&null!=oVal){try{var oGuard={};oGuard.depth=0;oGuard.maxDepth=oRequest.maxObjectDepth;oGuard.size=0;oGuard.maxSize=oRequest.maxObjectSize;oVal=xt._objectToXML(oVal,oGuard);}catch(e){oVal='';}
rd.push('&xjxargs[]=');oVal=encodeURIComponent(oVal);rd.push(oVal);++i;}else{rd.push('&xjxargs[]=');oVal=xt._escape(oVal);if('undefined'==typeof oVal||null==oVal){rd.push('*');}else{var sType=typeof oVal;if('string'==sType)
rd.push('S');else if('boolean'==sType)
rd.push('B');else if('number'==sType)
rd.push('N');oVal=encodeURIComponent(oVal);rd.push(oVal);}
++i;}
}
}
oRequest.requestURI=oRequest.URI;if('GET'==oRequest.method){oRequest.requestURI+=oRequest.requestURI.indexOf('?')==-1 ? '?':'&';oRequest.requestURI+=rd.join('');rd=[];}
oRequest.requestData=rd.join('');}
xajax.prepareRequest=function(oRequest){var xx=xajax;var xt=xx.tools;oRequest.request=xt.getRequestObject();oRequest.setRequestHeaders=function(headers){if('object'==typeof headers){for(var optionName in headers)
this.request.setRequestHeader(optionName,headers[optionName]);}
}
oRequest.setCommonRequestHeaders=function(){this.setRequestHeaders(this.commonHeaders);}
oRequest.setPostRequestHeaders=function(){this.setRequestHeaders(this.postHeaders);}
oRequest.setGetRequestHeaders=function(){this.setRequestHeaders(this.getHeaders);}
if('asynchronous'==oRequest.mode){oRequest.request.onreadystatechange=function(){if(oRequest.request.readyState!=4)
return;xajax.responseReceived(oRequest);}
oRequest.finishRequest=function(){return this.returnValue;}
}else{oRequest.finishRequest=function(){return xajax.responseReceived(oRequest);}
}
if('undefined'!=typeof oRequest.userName&&'undefined'!=typeof oRequest.password){oRequest.open=function(){this.request.open(
this.method,
this.requestURI,
'asynchronous'==this.mode,
oRequest.userName,
oRequest.password);}
}else{oRequest.open=function(){this.request.open(
this.method,
this.requestURI,
'asynchronous'==this.mode);}
}
if('POST'==oRequest.method){oRequest.applyRequestHeaders=function(){this.setCommonRequestHeaders();try{this.setPostRequestHeaders();}catch(e){this.method='GET';this.requestURI+=this.requestURI.indexOf('?')==-1 ? '?':'&';this.requestURI+=this.requestData;this.requestData='';if(0==this.requestRetry)this.requestRetry=1;throw e;}
}
}else{oRequest.applyRequestHeaders=function(){this.setCommonRequestHeaders();this.setGetRequestHeaders();}
}
}
xajax.request=function(){var numArgs=arguments.length;if(0==numArgs)
return false;var oRequest={}
if(1 < numArgs)
oRequest=arguments[1];oRequest.functionName=arguments[0];var xx=xajax;xx.initializeRequest(oRequest);xx.processParameters(oRequest);while(0 < oRequest.requestRetry){try{--oRequest.requestRetry;xx.prepareRequest(oRequest);return xx.submitRequest(oRequest);}catch(e){xajax.callback.execute(
[xajax.callback.global,oRequest.callback],
'onFailure',oRequest);if(0==oRequest.requestRetry)
throw e;}
}
}
xajax.call=function(){var numArgs=arguments.length;if(0==numArgs)
return false;var oRequest={}
if(1 < numArgs)
oRequest=arguments[1];oRequest.functionName={xjxfun:arguments[0]};var xx=xajax;xx.initializeRequest(oRequest);xx.processParameters(oRequest);while(0 < oRequest.requestRetry){try{--oRequest.requestRetry;xx.prepareRequest(oRequest);return xx.submitRequest(oRequest);}catch(e){xajax.callback.execute(
[xajax.callback.global,oRequest.callback],
'onFailure',oRequest);if(0==oRequest.requestRetry)
throw e;}
}
}
xajax.submitRequest=function(oRequest){oRequest.status.onRequest();var xcb=xajax.callback;var gcb=xcb.global;var lcb=oRequest.callback;xcb.execute([gcb,lcb],'onResponseDelay',oRequest);xcb.execute([gcb,lcb],'onExpiration',oRequest);xcb.execute([gcb,lcb],'onRequest',oRequest);oRequest.open();oRequest.applyRequestHeaders();oRequest.cursor.onWaiting();oRequest.status.onWaiting();xajax._internalSend(oRequest);return oRequest.finishRequest();}
xajax._internalSend=function(oRequest){oRequest.request.send(oRequest.requestData);}
xajax.abortRequest=function(oRequest){oRequest.aborted=true;oRequest.request.abort();xajax.completeResponse(oRequest);}
xajax.responseReceived=function(oRequest){var xx=xajax;var xcb=xx.callback;var gcb=xcb.global;var lcb=oRequest.callback;if(oRequest.aborted)
return;xcb.clearTimer([gcb,lcb],'onExpiration');xcb.clearTimer([gcb,lcb],'onResponseDelay');xcb.execute([gcb,lcb],'beforeResponseProcessing',oRequest);var fProc=xx.getResponseProcessor(oRequest);if('undefined'==typeof fProc){xcb.execute([gcb,lcb],'onFailure',oRequest);xx.completeResponse(oRequest);return;}
return fProc(oRequest);}
xajax.getResponseProcessor=function(oRequest){var fProc;if('undefined'==typeof oRequest.responseProcessor){var cTyp=oRequest.request.getResponseHeader('content-type');if(cTyp){if(0 <=cTyp.indexOf('text/xml')){fProc=xajax.responseProcessor.xml;}
}
}else fProc=oRequest.responseProcessor;return fProc;}
xajax.executeCommand=function(command){if(xajax.command.handler.isRegistered(command)){if(command.id)
command.target=xajax.$(command.id);if(false==xajax.command.handler.call(command)){xajax.tools.queue.pushFront(xajax.response,command);return false;}
}
return true;}
xajax.completeResponse=function(oRequest){xajax.callback.execute(
[xajax.callback.global,oRequest.callback],
'onComplete',oRequest);oRequest.cursor.onComplete();oRequest.status.onComplete();delete oRequest['functionName'];delete oRequest['requestURI'];delete oRequest['requestData'];delete oRequest['requestRetry'];delete oRequest['request'];delete oRequest['set'];delete oRequest['open'];delete oRequest['setRequestHeaders'];delete oRequest['setCommonRequestHeaders'];delete oRequest['setPostRequestHeaders'];delete oRequest['setGetRequestHeaders'];delete oRequest['applyRequestHeaders'];delete oRequest['finishRequest'];delete oRequest['status'];delete oRequest['cursor'];}
xajax.$=xajax.tools.$;xajax.getFormValues=xajax.tools.getFormValues;xajax.isLoaded=true;xjx={}
xjx.$=xajax.tools.$;xjx.getFormValues=xajax.tools.getFormValues;xjx.call=xajax.call;xjx.request=xajax.request;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,117 @@
try{if('undefined'==typeof xajax)
throw{name:'SequenceError',message:'Error: xajax core was not detected, debug module disabled.'}
if('undefined'==typeof xajax.debug)
xajax.debug={}
xajax.debug.workId='xajaxWork'+new Date().getTime();xajax.debug.windowSource='about:blank';xajax.debug.windowID='xajax_debug_'+xajax.debug.workId;if('undefined'==typeof xajax.debug.windowStyle)
xajax.debug.windowStyle=
'width=800,'+
'height=600,'+
'scrollbars=yes,'+
'resizable=yes,'+
'status=yes';if('undefined'==typeof xajax.debug.windowTemplate)
xajax.debug.windowTemplate=
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'+
'<html><head>'+
'<title>xajax debug output</title>'+
'<style type="text/css">'+
'/* <![CDATA[ */'+
'.debugEntry { margin: 3px; padding: 3px; border-top: 1px solid #999999; } '+
'.debugDate { font-weight: bold; margin: 2px; } '+
'.debugText { margin: 2px; } '+
'.warningText { margin: 2px; font-weight: bold; } '+
'.errorText { margin: 2px; font-weight: bold; color: #ff7777; }'+
'/* ]]> */'+
'</style>'+
'</head><body>'+
'<h2>xajax debug output</h2>'+
'<div id="debugTag"></div>'+
'</body></html>';xajax.debug.text=[];xajax.debug.text[100]='WARNING: ';xajax.debug.text[101]='ERROR: ';xajax.debug.text[102]='XAJAX DEBUG MESSAGE:\n';xajax.debug.text[103]='...\n[LONG RESPONSE]\n...';xajax.debug.text[104]='SENDING REQUEST';xajax.debug.text[105]='SENT [';xajax.debug.text[106]=' bytes]';xajax.debug.text[107]='CALLING: ';xajax.debug.text[108]='URI: ';xajax.debug.text[109]='INITIALIZING REQUEST';xajax.debug.text[110]='PROCESSING PARAMETERS [';xajax.debug.text[111]=']';xajax.debug.text[112]='NO PARAMETERS TO PROCESS';xajax.debug.text[113]='PREPARING REQUEST';xajax.debug.text[114]='STARTING XAJAX CALL (deprecated: use xajax.request instead)';xajax.debug.text[115]='STARTING XAJAX REQUEST';xajax.debug.text[116]='No response processor is available to process the response from the server.\n';xajax.debug.text[117]='.\nCheck for error messages from the server.';xajax.debug.text[118]='RECEIVED [status: ';xajax.debug.text[119]=', size: ';xajax.debug.text[120]=' bytes, time: ';xajax.debug.text[121]='ms]:\n';xajax.debug.text[122]='The server returned the following HTTP status: ';xajax.debug.text[123]='\nRECEIVED:\n';xajax.debug.text[124]='The server returned a redirect to:<br />';xajax.debug.text[125]='DONE [';xajax.debug.text[126]='ms]';xajax.debug.text[127]='INITIALIZING REQUEST OBJECT';xajax.debug.exceptions=[];xajax.debug.exceptions[10001]='Invalid response XML: The response contains an unknown tag: {data}.';xajax.debug.exceptions[10002]='GetRequestObject: XMLHttpRequest is not available, xajax is disabled.';xajax.debug.exceptions[10003]='Queue overflow: Cannot push object onto queue because it is full.';xajax.debug.exceptions[10004]='Invalid response XML: The response contains an unexpected tag or text: {data}.';xajax.debug.exceptions[10005]='Invalid request URI: Invalid or missing URI; autodetection failed; please specify a one explicitly.';xajax.debug.exceptions[10006]='Invalid response command: Malformed response command received.';xajax.debug.exceptions[10007]='Invalid response command: Command [{data}] is not a known command.';xajax.debug.exceptions[10008]='Element with ID [{data}] not found in the document.';xajax.debug.exceptions[10009]='Invalid request: Missing function name parameter.';xajax.debug.exceptions[10010]='Invalid request: Missing function object parameter.';xajax.debug.getExceptionText=function(e){if('undefined'!=typeof e.code){if('undefined'!=typeof xajax.debug.exceptions[e.code]){var msg=xajax.debug.exceptions[e.code];if('undefined'!=typeof e.data){msg.replace('{data}',e.data);}
return msg;}
}else if('undefined'!=typeof e.name){var msg=e.name;if('undefined'!=typeof e.message){msg+=': ';msg+=e.message;}
return msg;}
return 'An unknown error has occurred.';}
xajax.debug.writeMessage=function(text,prefix,cls){try{var xd=xajax.debug;if('undefined'==typeof xd.window||true==xd.window.closed){xd.window=window.open(xd.windowSource,xd.windowID,xd.windowStyle);if("about:blank"==xd.windowSource)
xd.window.document.write(xd.windowTemplate);}
var xdw=xd.window;var xdwd=xdw.document;if('undefined'==typeof prefix)
prefix='';if('undefined'==typeof cls)
cls='debugText';text=xajax.debug.prepareDebugText(text);var debugTag=xdwd.getElementById('debugTag');var debugEntry=xdwd.createElement('div');var debugDate=xdwd.createElement('span');var debugText=xdwd.createElement('pre');debugDate.innerHTML=new Date().toString();debugText.innerHTML=prefix+text;debugEntry.appendChild(debugDate);debugEntry.appendChild(debugText);debugTag.insertBefore(debugEntry,debugTag.firstChild);try{debugEntry.className='debugEntry';debugDate.className='debugDate';debugText.className=cls;}catch(e){}
}catch(e){if(text.length > 1000)text=text.substr(0,1000)+xajax.debug.text[102];alert(xajax.debug.text[102]+text);}
}
xajax.debug.prepareDebugText=function(text){try{text=text.replace(/&/g,'&amp;')
.replace(/</g,'&lt;')
.replace(/>/g,'&gt;')
.replace(/\n/g,'<br />');return text;}catch(e){xajax.debug.stringReplace=function(haystack,needle,newNeedle){var segments=haystack.split(needle);haystack='';for(var i=0;i < segments.length;++i){if(0!=i)
haystack+=newNeedle;haystack+=segments[i];}
return haystack;}
xajax.debug.prepareDebugText=function(text){text=xajax.debug.stringReplace(text,'&','&amp;');text=xajax.debug.stringReplace(text,'<','&lt;');text=xajax.debug.stringReplace(text,'>','&gt;');text=xajax.debug.stringReplace(text,'\n','<br />');return text;}
xajax.debug.prepareDebugText(text);}
}
xajax.debug.executeCommand=xajax.executeCommand;xajax.executeCommand=function(args){try{if('undefined'==typeof args.cmd)
throw{code:10006};if(false==xajax.command.handler.isRegistered(args))
throw{code:10007,data:args.cmd};return xajax.debug.executeCommand(args);}catch(e){var msg='ExecuteCommand (';if('undefined'!=typeof args.sequence){msg+='#';msg+=args.sequence;msg+=', ';}
if('undefined'!=typeof args.cmdFullName){msg+='"';msg+=args.cmdFullName;msg+='"';}
msg+='):\n';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');}
return true;}
xajax.debug.parseAttributes=xajax.parseAttributes;xajax.parseAttributes=function(child,obj){try{xajax.debug.parseAttributes(child,obj);}catch(e){var msg='ParseAttributes:\n';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');}
}
xajax.debug.commandHandler=xajax.command.handler.unregister('dbg');xajax.command.handler.register('dbg',function(args){args.cmdFullName='debug message';xajax.debug.writeMessage(args.data,xajax.debug.text[100],'warningText');return xajax.debug.commandHandler(args);});xajax.debug.$=xajax.tools.$;xajax.tools.$=function(sId){try{var returnValue=xajax.debug.$(sId);if('object'!=typeof returnValue)
throw{code:10008};}
catch(e){var msg='$:';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[100],'warningText');}
return returnValue;}
xajax.debug._objectToXML=xajax.tools._objectToXML;xajax.tools._objectToXML=function(obj,guard){try{if(0==guard.size){var msg='OBJECT TO XML: maxDepth = ';msg+=guard.maxDepth;msg+=', maxSize = ';msg+=guard.maxSize;xajax.debug.writeMessage(msg);}
var r=xajax.debug._objectToXML(obj,guard);if(0==guard.depth){var msg='OBJECT TO XML: size = ';msg+=guard.size;xajax.debug.writeMessage(msg);}
return r;}catch(e){var msg='ObjectToXML: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');}
return '';}
xajax.debug._internalSend=xajax._internalSend;xajax._internalSend=function(oRequest){try{xajax.debug.writeMessage(xajax.debug.text[104]);xajax.debug.writeMessage(
xajax.debug.text[105]+
oRequest.requestData.length+
xajax.debug.text[106]
);oRequest.beginDate=new Date();xajax.debug._internalSend(oRequest);}catch(e){var msg='InternalSend: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');throw e;}
}
xajax.debug.submitRequest=xajax.submitRequest;xajax.submitRequest=function(oRequest){var msg=oRequest.method;msg+=': ';text=decodeURIComponent(oRequest.requestData);text=text.replace(new RegExp('&xjx','g'),'\n&xjx');text=text.replace(new RegExp('<xjxobj>','g'),'\n<xjxobj>');text=text.replace(new RegExp('<e>','g'),'\n<e>');text=text.replace(new RegExp('</xjxobj>','g'),'\n</xjxobj>\n');msg+=text;xajax.debug.writeMessage(msg);msg=xajax.debug.text[107];var separator='\n';for(var mbr in oRequest.functionName){msg+=separator;msg+=mbr;msg+=': ';msg+=oRequest.functionName[mbr];separator='\n';}
msg+=separator;msg+=xajax.debug.text[108];msg+=separator;msg+=oRequest.URI;xajax.debug.writeMessage(msg);try{return xajax.debug.submitRequest(oRequest);}catch(e){xajax.debug.writeMessage(e.message);if(0 < oRequest.retry)
throw e;}
}
xajax.debug.initializeRequest=xajax.initializeRequest;xajax.initializeRequest=function(oRequest){try{var msg=xajax.debug.text[109];xajax.debug.writeMessage(msg);return xajax.debug.initializeRequest(oRequest);}catch(e){var msg='InitializeRequest: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');throw e;}
}
xajax.debug.processParameters=xajax.processParameters;xajax.processParameters=function(oRequest){try{if('undefined'!=typeof oRequest.parameters){var msg=xajax.debug.text[110];msg+=oRequest.parameters.length;msg+=xajax.debug.text[111];xajax.debug.writeMessage(msg);}else{var msg=xajax.debug.text[112];xajax.debug.writeMessage(msg);}
return xajax.debug.processParameters(oRequest);}catch(e){var msg='ProcessParameters: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');throw e;}
}
xajax.debug.prepareRequest=xajax.prepareRequest;xajax.prepareRequest=function(oRequest){try{var msg=xajax.debug.text[113];xajax.debug.writeMessage(msg);return xajax.debug.prepareRequest(oRequest);}catch(e){var msg='PrepareRequest: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');throw e;}
}
xajax.debug.call=xajax.call;xajax.call=function(){try{xajax.debug.writeMessage(xajax.debug.text[114]);var numArgs=arguments.length;if(0==numArgs)
throw{code:10009};var functionName=arguments[0];var oOptions={}
if(1 < numArgs)
oOptions=arguments[1];oOptions.debugging=true;return xajax.debug.call(functionName,oOptions);}catch(e){var msg='Call: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');throw e;}
}
xajax.debug.request=xajax.request;xajax.request=function(){try{xajax.debug.writeMessage(xajax.debug.text[115]);var numArgs=arguments.length;if(0==numArgs)
throw{code:10010};var oFunction=arguments[0];var oOptions={}
if(1 < numArgs)
oOptions=arguments[1];oOptions.debugging=true;return xajax.debug.request(oFunction,oOptions);}catch(e){var msg='Request: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');throw e;}
}
xajax.debug.getResponseProcessor=xajax.getResponseProcessor;xajax.getResponseProcessor=function(oRequest){try{var fProc=xajax.debug.getResponseProcessor(oRequest);if('undefined'==typeof fProc){var msg=xajax.debug.text[116];try{var contentType=oRequest.request.getResponseHeader('content-type');msg+="Content-Type: ";msg+=contentType;if('text/html'==contentType){msg+=xajax.debug.text[117];}
}catch(e){}
xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');}
return fProc;}catch(e){var msg='GetResponseProcessor: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');throw e;}
}
xajax.debug.responseReceived=xajax.responseReceived;xajax.responseReceived=function(oRequest){var xx=xajax;var xt=xx.tools;var xd=xx.debug;var oRet;try{var status=oRequest.request.status;if(xt.arrayContainsValue(xx.responseSuccessCodes,status)){var packet=oRequest.request.responseText;packet=packet.replace(new RegExp('<cmd','g'),'\n<cmd');packet=packet.replace(new RegExp('<xjx>','g'),'\n<xjx>');packet=packet.replace(new RegExp('<xjxobj>','g'),'\n<xjxobj>');packet=packet.replace(new RegExp('<e>','g'),'\n<e>');packet=packet.replace(new RegExp('</xjxobj>','g'),'\n</xjxobj>\n');packet=packet.replace(new RegExp('</xjx>','g'),'\n</xjx>');oRequest.midDate=new Date();var msg=xajax.debug.text[118];msg+=oRequest.request.status;msg+=xajax.debug.text[119];msg+=packet.length;msg+=xajax.debug.text[120];msg+=(oRequest.midDate-oRequest.beginDate);msg+=xajax.debug.text[121];msg+=packet;xd.writeMessage(msg);}else if(xt.arrayContainsValue(xx.responseErrorsForAlert,status)){var msg=xajax.debug.text[122];msg+=status;msg+=xajax.debug.text[123];msg+=oRequest.request.responseText;xd.writeMessage(msg,xajax.debug.text[101],'errorText');}else if(xt.arrayContainsValue(xx.responseRedirectCodes,status)){var msg=xajax.debug.text[124];msg+=oRequest.request.getResponseHeader('location');xd.writeMessage(msg);}
oRet=xd.responseReceived(oRequest);}catch(e){var msg='ResponseReceived: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xd.writeMessage(msg,xajax.debug.text[101],'errorText');}
return oRet;}
xajax.debug.completeResponse=xajax.completeResponse;xajax.completeResponse=function(oRequest){try{var returnValue=xajax.debug.completeResponse(oRequest);oRequest.endDate=new Date();var msg=xajax.debug.text[125];msg+=(oRequest.endDate-oRequest.beginDate);msg+=xajax.debug.text[126];xajax.debug.writeMessage(msg);return returnValue;}catch(e){var msg='CompleteResponse: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');throw e;}
}
xajax.debug.getRequestObject=xajax.tools.getRequestObject;xajax.tools.getRequestObject=function(){try{xajax.debug.writeMessage(xajax.debug.text[127]);return xajax.debug.getRequestObject();}catch(e){var msg='GetRequestObject: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');throw e;}
}
if(xajax.dom.assign){xajax.debug.assign=xajax.dom.assign;xajax.dom.assign=function(element,property,data){try{return xajax.debug.assign(element,property,data);}catch(e){var msg='xajax.dom.assign: ';msg+=xajax.debug.getExceptionText(e);msg+='\n';msg+='Eval: element.';msg+=property;msg+=' = data;\n';xajax.debug.writeMessage(msg,xajax.debug.text[101],'errorText');}
return true;}
}
if(xajax.tools){if(xajax.tools.queue){if(xajax.tools.queue.retry){if('undefined'==typeof xajax.debug.tools)
xajax.debug.tools={};if('undefined'==typeof xajax.debug.tools.queue)
xajax.debug.tools.queue={};xajax.debug.tools.queue.retry=xajax.tools.queue.retry;xajax.tools.queue.retry=function(obj,count){if(xajax.debug.tools.queue.retry(obj,count))
return true;if(obj.cmd&&'s'==obj.cmd)
return false;xajax.debug.writeMessage('Retry count exceeded.');return false;}
}
}
}
xajax.debug.isLoaded=true;xjx={}
xjx.$=xajax.tools.$;xjx.getFormValues=xajax.tools.getFormValues;xjx.call=xajax.call;xjx.request=xajax.request;xajax.$=xajax.tools.$;xajax.getFormValues=xajax.tools.getFormValues;}catch(e){alert(e.name+': '+e.message);}

View File

@ -0,0 +1,883 @@
/*
File: xajax_debug.js
This optional file contains the debugging module for use with xajax. If
you include this module after the standard <xajax_core.js> module, you
will receive debugging messages, including errors, that occur during
the processing of your xajax requests.
Title: xajax debugging module
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajax_debug_uncompressed.js 327 2007-02-28 16:55:26Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
try
{
/*
Class: xajax.debug
This object contains the variables and functions used to display process state
messages and to trap error conditions and report them to the user via
a secondary browser window or alert messages as necessary.
*/
if ('undefined' == typeof xajax)
throw { name: 'SequenceError', message: 'Error: xajax core was not detected, debug module disabled.' }
if ('undefined' == typeof xajax.debug)
xajax.debug = {}
/*
String: xajax.debug.workId
Stores a 'unique' identifier for this session so that an existing debugging
window can be detected, else one will be created.
*/
xajax.debug.workId = 'xajaxWork'+ new Date().getTime();
/*
String: xajax.debug.windowSource
The default URL that is given to the debugging window upon creation.
*/
xajax.debug.windowSource = 'about:blank';
/*
String: xajax.debug.windowID
A 'unique' name used to identify the debugging window that is attached
to this xajax session.
*/
xajax.debug.windowID = 'xajax_debug_'+xajax.debug.workId;
/*
String: windowStyle
The parameters that will be used to create the debugging window.
*/
if ('undefined' == typeof xajax.debug.windowStyle)
xajax.debug.windowStyle =
'width=800,' +
'height=600,' +
'scrollbars=yes,' +
'resizable=yes,' +
'status=yes';
/*
String: windowTemplate
The HTML template and CSS style information used to populate the
debugging window upon creation.
*/
if ('undefined' == typeof xajax.debug.windowTemplate)
xajax.debug.windowTemplate =
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">' +
'<html><head>' +
'<title>xajax debug output</title>' +
'<style type="text/css">' +
'/* <![CDATA[ */' +
'.debugEntry { margin: 3px; padding: 3px; border-top: 1px solid #999999; } ' +
'.debugDate { font-weight: bold; margin: 2px; } ' +
'.debugText { margin: 2px; } ' +
'.warningText { margin: 2px; font-weight: bold; } ' +
'.errorText { margin: 2px; font-weight: bold; color: #ff7777; }' +
'/* ]]> */' +
'</style>' +
'</head><body>' +
'<h2>xajax debug output</h2>' +
'<div id="debugTag"></div>' +
'</body></html>';
/*
Object: window
A reference to the debugging window, once constructed, where messages will
be displayed throughout the request process. This is constructed internally
as needed.
*/
/*
Array: xajax.debug.text
*/
xajax.debug.text = [];
xajax.debug.text[100] = 'WARNING: ';
xajax.debug.text[101] = 'ERROR: ';
xajax.debug.text[102] = 'XAJAX DEBUG MESSAGE:\n';
xajax.debug.text[103] = '...\n[LONG RESPONSE]\n...';
xajax.debug.text[104] = 'SENDING REQUEST';
xajax.debug.text[105] = 'SENT [';
xajax.debug.text[106] = ' bytes]';
xajax.debug.text[107] = 'CALLING: ';
xajax.debug.text[108] = 'URI: ';
xajax.debug.text[109] = 'INITIALIZING REQUEST';
xajax.debug.text[110] = 'PROCESSING PARAMETERS [';
xajax.debug.text[111] = ']';
xajax.debug.text[112] = 'NO PARAMETERS TO PROCESS';
xajax.debug.text[113] = 'PREPARING REQUEST';
xajax.debug.text[114] = 'STARTING XAJAX CALL (deprecated: use xajax.request instead)';
xajax.debug.text[115] = 'STARTING XAJAX REQUEST';
xajax.debug.text[116] = 'No response processor is available to process the response from the server.\n';
xajax.debug.text[117] = '.\nCheck for error messages from the server.';
xajax.debug.text[118] = 'RECEIVED [status: ';
xajax.debug.text[119] = ', size: ';
xajax.debug.text[120] = ' bytes, time: ';
xajax.debug.text[121] = 'ms]:\n';
xajax.debug.text[122] = 'The server returned the following HTTP status: ';
xajax.debug.text[123] = '\nRECEIVED:\n';
xajax.debug.text[124] = 'The server returned a redirect to:<br />';
xajax.debug.text[125] = 'DONE [';
xajax.debug.text[126] = 'ms]';
xajax.debug.text[127] = 'INITIALIZING REQUEST OBJECT';
/*
Array: xajax.debug.exceptions
*/
xajax.debug.exceptions = [];
xajax.debug.exceptions[10001] = 'Invalid response XML: The response contains an unknown tag: {data}.';
xajax.debug.exceptions[10002] = 'GetRequestObject: XMLHttpRequest is not available, xajax is disabled.';
xajax.debug.exceptions[10003] = 'Queue overflow: Cannot push object onto queue because it is full.';
xajax.debug.exceptions[10004] = 'Invalid response XML: The response contains an unexpected tag or text: {data}.';
xajax.debug.exceptions[10005] = 'Invalid request URI: Invalid or missing URI; autodetection failed; please specify a one explicitly.';
xajax.debug.exceptions[10006] = 'Invalid response command: Malformed response command received.';
xajax.debug.exceptions[10007] = 'Invalid response command: Command [{data}] is not a known command.';
xajax.debug.exceptions[10008] = 'Element with ID [{data}] not found in the document.';
xajax.debug.exceptions[10009] = 'Invalid request: Missing function name parameter.';
xajax.debug.exceptions[10010] = 'Invalid request: Missing function object parameter.';
/*
Function: xajax.debug.getExceptionText
Parameters:
e - (object): Exception
*/
xajax.debug.getExceptionText = function(e) {
if ('undefined' != typeof e.code) {
if ('undefined' != typeof xajax.debug.exceptions[e.code]) {
var msg = xajax.debug.exceptions[e.code];
if ('undefined' != typeof e.data) {
msg.replace('{data}', e.data);
}
return msg;
}
} else if ('undefined' != typeof e.name) {
var msg = e.name;
if ('undefined' != typeof e.message) {
msg += ': ';
msg += e.message;
}
return msg;
}
return 'An unknown error has occurred.';
}
/*
Function: xajax.debug.writeMessage
Output a debug message to the debug window if available or send to an
alert box. If the debug window has not been created, attempt to
create it.
Parameters:
text - (string): The text to output.
prefix - (string): The prefix to use; this is prepended onto the
message; it should indicate the type of message (warning, error)
cls - (stirng): The className that will be applied to the message;
invoking a style from the CSS provided in
<xajax.debug.windowTemplate>. Should be one of the following:
- warningText
- errorText
*/
xajax.debug.writeMessage = function(text, prefix, cls) {
try {
var xd = xajax.debug;
if ('undefined' == typeof xd.window || true == xd.window.closed) {
xd.window = window.open(xd.windowSource, xd.windowID, xd.windowStyle);
if ("about:blank" == xd.windowSource)
xd.window.document.write(xd.windowTemplate);
}
var xdw = xd.window;
var xdwd = xdw.document;
if ('undefined' == typeof prefix)
prefix = '';
if ('undefined' == typeof cls)
cls = 'debugText';
text = xajax.debug.prepareDebugText(text);
var debugTag = xdwd.getElementById('debugTag');
var debugEntry = xdwd.createElement('div');
var debugDate = xdwd.createElement('span');
var debugText = xdwd.createElement('pre');
debugDate.innerHTML = new Date().toString();
debugText.innerHTML = prefix + text;
debugEntry.appendChild(debugDate);
debugEntry.appendChild(debugText);
debugTag.insertBefore(debugEntry, debugTag.firstChild);
// don't allow 'style' issues to hinder the debug output
try {
debugEntry.className = 'debugEntry';
debugDate.className = 'debugDate';
debugText.className = cls;
} catch (e) {
}
} catch (e) {
if (text.length > 1000) text = text.substr(0,1000) + xajax.debug.text[102];
alert(xajax.debug.text[102] + text);
}
}
/*
Function: xajax.debug.prepareDebugText
Convert special characters to their HTML equivellents so they
will show up in the <xajax.debug.window>.
Parameters:
text - (string): Debug text
*/
xajax.debug.prepareDebugText = function(text) {
try {
text = text.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/\n/g, '<br />');
return text;
} catch (e) {
xajax.debug.stringReplace = function(haystack, needle, newNeedle) {
var segments = haystack.split(needle);
haystack = '';
for (var i = 0; i < segments.length; ++i) {
if (0 != i)
haystack += newNeedle;
haystack += segments[i];
}
return haystack;
}
xajax.debug.prepareDebugText = function(text) {
text = xajax.debug.stringReplace(text, '&', '&amp;');
text = xajax.debug.stringReplace(text, '<', '&lt;');
text = xajax.debug.stringReplace(text, '>', '&gt;');
text = xajax.debug.stringReplace(text, '\n', '<br />');
return text;
}
xajax.debug.prepareDebugText(text);
}
}
/*
Function: xajax.debug.executeCommand
Catch any exceptions that are thrown by a response command handler
and display a message in the debugger.
This is a wrapper function which surrounds the standard
<xajax.executeCommand> function.
*/
xajax.debug.executeCommand = xajax.executeCommand;
xajax.executeCommand = function(args) {
try {
if ('undefined' == typeof args.cmd)
throw { code: 10006 };
if (false == xajax.command.handler.isRegistered(args))
throw { code: 10007, data: args.cmd };
return xajax.debug.executeCommand(args);
} catch(e) {
var msg = 'ExecuteCommand (';
if ('undefined' != typeof args.sequence) {
msg += '#';
msg += args.sequence;
msg += ', ';
}
if ('undefined' != typeof args.cmdFullName) {
msg += '"';
msg += args.cmdFullName;
msg += '"';
}
msg += '):\n';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
}
return true;
}
/*
Function: xajax.parseAttributes
Catch any exception thrown during the parsing of response
command attributes and display an appropriate debug message.
This is a wrapper around the standard <xajax.parseAttributes>
function.
Parameters:
child - (object): Childnode
obj - (object): Object
*/
xajax.debug.parseAttributes = xajax.parseAttributes;
xajax.parseAttributes = function(child, obj) {
try {
xajax.debug.parseAttributes(child, obj);
} catch(e) {
var msg = 'ParseAttributes:\n';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
}
}
xajax.debug.commandHandler = xajax.command.handler.unregister('dbg');
xajax.command.handler.register('dbg', function(args) {
args.cmdFullName = 'debug message';
xajax.debug.writeMessage(args.data, xajax.debug.text[100], 'warningText');
return xajax.debug.commandHandler(args);
});
/*
Function: xajax.tools.$
Catch any exceptions thrown while attempting to locate an
HTML element by it's unique name.
This is a wrapper around the standard <xajax.tools.$> function.
Parameters:
sId - (string): Element ID or name
*/
xajax.debug.$ = xajax.tools.$;
xajax.tools.$ = function(sId) {
try {
var returnValue = xajax.debug.$(sId);
if ('object' != typeof returnValue)
throw { code: 10008 };
}
catch (e) {
var msg = '$:';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[100], 'warningText');
}
return returnValue;
}
/*
Function: xajax.tools._objectToXML
Generate a message indicating that a javascript object is
being converted to xml. Indicate the max depth and size. Then
display the size of the object upon completion. Catch any
exceptions thrown during the conversion process.
This is a wrapper around the standard <xajax.tools._objectToXML>
function.
Parameters:
obj - (object):
guard - (object):
*/
xajax.debug._objectToXML = xajax.tools._objectToXML;
xajax.tools._objectToXML = function(obj, guard) {
try {
if (0 == guard.size) {
var msg = 'OBJECT TO XML: maxDepth = ';
msg += guard.maxDepth;
msg += ', maxSize = ';
msg += guard.maxSize;
xajax.debug.writeMessage(msg);
}
var r = xajax.debug._objectToXML(obj, guard);
if (0 == guard.depth) {
var msg = 'OBJECT TO XML: size = ';
msg += guard.size;
xajax.debug.writeMessage(msg);
}
return r;
} catch(e) {
var msg = 'ObjectToXML: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
}
return '';
}
/*
Function: xajax._internalSend
Generate a message indicating that the xajax request is
about the be sent to the server.
This is a wrapper around the standard <xajax._internalSend>
function.
*/
xajax.debug._internalSend = xajax._internalSend;
xajax._internalSend = function(oRequest) {
try {
xajax.debug.writeMessage(xajax.debug.text[104]);
xajax.debug.writeMessage(
xajax.debug.text[105] +
oRequest.requestData.length +
xajax.debug.text[106]
);
oRequest.beginDate = new Date();
xajax.debug._internalSend(oRequest);
} catch (e) {
var msg = 'InternalSend: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
throw e;
}
}
/*
Function: xajax.submitRequest
Generate a message indicating that a request is ready to be
submitted; providing the URL and the function being invoked.
Catch any exceptions thrown and display a message.
This is a wrapper around the standard <xajax.submitRequest>
function.
*/
xajax.debug.submitRequest = xajax.submitRequest;
xajax.submitRequest = function(oRequest) {
var msg = oRequest.method;
msg += ': ';
text = decodeURIComponent(oRequest.requestData);
text = text.replace(new RegExp('&xjx', 'g'), '\n&xjx');
text = text.replace(new RegExp('<xjxobj>', 'g'), '\n<xjxobj>');
text = text.replace(new RegExp('<e>', 'g'), '\n<e>');
text = text.replace(new RegExp('</xjxobj>', 'g'), '\n</xjxobj>\n');
msg += text;
xajax.debug.writeMessage(msg);
msg = xajax.debug.text[107];
var separator = '\n';
for (var mbr in oRequest.functionName) {
msg += separator;
msg += mbr;
msg += ': ';
msg += oRequest.functionName[mbr];
separator = '\n';
}
msg += separator;
msg += xajax.debug.text[108];
msg += separator;
msg += oRequest.URI;
xajax.debug.writeMessage(msg);
try {
return xajax.debug.submitRequest(oRequest);
} catch (e) {
xajax.debug.writeMessage(e.message);
if (0 < oRequest.retry)
throw e;
}
}
/*
Function: xajax.initializeRequest
Generate a message indicating that the request object is
being initialized.
This is a wrapper around the standard <xajax.initializeRequest>
function.
*/
xajax.debug.initializeRequest = xajax.initializeRequest;
xajax.initializeRequest = function(oRequest) {
try {
var msg = xajax.debug.text[109];
xajax.debug.writeMessage(msg);
return xajax.debug.initializeRequest(oRequest);
} catch (e) {
var msg = 'InitializeRequest: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
throw e;
}
}
/*
Function: xajax.processParameters
Generate a message indicating that the request object is
being populated with the parameters provided.
This is a wrapper around the standard <xajax.processParameters>
function.
*/
xajax.debug.processParameters = xajax.processParameters;
xajax.processParameters = function(oRequest) {
try {
if ('undefined' != typeof oRequest.parameters) {
var msg = xajax.debug.text[110];
msg += oRequest.parameters.length;
msg += xajax.debug.text[111];
xajax.debug.writeMessage(msg);
} else {
var msg = xajax.debug.text[112];
xajax.debug.writeMessage(msg);
}
return xajax.debug.processParameters(oRequest);
} catch (e) {
var msg = 'ProcessParameters: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
throw e;
}
}
/*
Function: xajax.prepareRequest
Generate a message indicating that the request is being
prepared. This may occur more than once for a request
if it errors and a retry is attempted.
This is a wrapper around the standard <xajax.prepareRequest>
*/
xajax.debug.prepareRequest = xajax.prepareRequest;
xajax.prepareRequest = function(oRequest) {
try {
var msg = xajax.debug.text[113];
xajax.debug.writeMessage(msg);
return xajax.debug.prepareRequest(oRequest);
} catch (e) {
var msg = 'PrepareRequest: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
throw e;
}
}
/*
Function: xajax.call
Validates that a function name was provided, generates a message
indicating that a xajax call is starting and sets a flag in the
request object indicating that debugging is enabled for this call.
This is a wrapper around the standard <xajax.call> function.
*/
xajax.debug.call = xajax.call;
xajax.call = function() {
try {
xajax.debug.writeMessage(xajax.debug.text[114]);
var numArgs = arguments.length;
if (0 == numArgs)
throw { code: 10009 };
var functionName = arguments[0];
var oOptions = {}
if (1 < numArgs)
oOptions = arguments[1];
oOptions.debugging = true;
return xajax.debug.call(functionName, oOptions);
} catch (e) {
var msg = 'Call: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
throw e;
}
}
/*
Function: xajax.request
Validates that a function name was provided, generates a message
indicating that a xajax request is starting and sets a flag in the
request object indicating that debugging is enabled for this request.
This is a wrapper around the standard <xajax.request> function.
*/
xajax.debug.request = xajax.request;
xajax.request = function() {
try {
xajax.debug.writeMessage(xajax.debug.text[115]);
var numArgs = arguments.length;
if (0 == numArgs)
throw { code: 10010 };
var oFunction = arguments[0];
var oOptions = {}
if (1 < numArgs)
oOptions = arguments[1];
oOptions.debugging = true;
return xajax.debug.request(oFunction, oOptions);
} catch (e) {
var msg = 'Request: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
throw e;
}
}
/*
Function: xajax.getResponseProcessor
Generate an error message when no reponse processor is available
to process the type of response returned from the server.
This is a wrapper around the standard <xajax.getResponseProcessor>
function.
*/
xajax.debug.getResponseProcessor = xajax.getResponseProcessor;
xajax.getResponseProcessor = function(oRequest) {
try {
var fProc = xajax.debug.getResponseProcessor(oRequest);
if ('undefined' == typeof fProc) {
var msg = xajax.debug.text[116];
try {
var contentType = oRequest.request.getResponseHeader('content-type');
msg += "Content-Type: ";
msg += contentType;
if ('text/html' == contentType) {
msg += xajax.debug.text[117];
}
} catch (e) {
}
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
}
return fProc;
} catch (e) {
var msg = 'GetResponseProcessor: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
throw e;
}
}
/*
Function: xajax.responseReceived
Generate a message indicating that a response has been received
from the server; provide some statistical data regarding the
response and the response time.
Catch any exceptions that are thrown during the processing of
the response and generate a message.
This is a wrapper around the standard <xajax.responseReceived>
function.
*/
xajax.debug.responseReceived = xajax.responseReceived;
xajax.responseReceived = function(oRequest) {
var xx = xajax;
var xt = xx.tools;
var xd = xx.debug;
var oRet;
try {
var status = oRequest.request.status;
if (xt.arrayContainsValue(xx.responseSuccessCodes, status)) {
var packet = oRequest.request.responseText;
packet = packet.replace(new RegExp('<cmd', 'g'), '\n<cmd');
packet = packet.replace(new RegExp('<xjx>', 'g'), '\n<xjx>');
packet = packet.replace(new RegExp('<xjxobj>', 'g'), '\n<xjxobj>');
packet = packet.replace(new RegExp('<e>', 'g'), '\n<e>');
packet = packet.replace(new RegExp('</xjxobj>', 'g'), '\n</xjxobj>\n');
packet = packet.replace(new RegExp('</xjx>', 'g'), '\n</xjx>');
oRequest.midDate = new Date();
var msg = xajax.debug.text[118];
msg += oRequest.request.status;
msg += xajax.debug.text[119];
msg += packet.length;
msg += xajax.debug.text[120];
msg += (oRequest.midDate - oRequest.beginDate);
msg += xajax.debug.text[121];
msg += packet;
xd.writeMessage(msg);
} else if (xt.arrayContainsValue(xx.responseErrorsForAlert, status)) {
var msg = xajax.debug.text[122];
msg += status;
msg += xajax.debug.text[123];
msg += oRequest.request.responseText;
xd.writeMessage(msg, xajax.debug.text[101], 'errorText');
} else if (xt.arrayContainsValue(xx.responseRedirectCodes, status)) {
var msg = xajax.debug.text[124];
msg += oRequest.request.getResponseHeader('location');
xd.writeMessage(msg);
}
oRet = xd.responseReceived(oRequest);
} catch (e) {
var msg = 'ResponseReceived: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xd.writeMessage(msg, xajax.debug.text[101], 'errorText');
}
return oRet;
}
/*
Function: xajax.completeResponse
Generate a message indicating that the request has completed
and provide some statistics regarding the request and response.
This is a wrapper around the standard <xajax.completeResponse>
function.
*/
xajax.debug.completeResponse = xajax.completeResponse;
xajax.completeResponse = function(oRequest) {
try {
var returnValue = xajax.debug.completeResponse(oRequest);
oRequest.endDate = new Date();
var msg = xajax.debug.text[125];
msg += (oRequest.endDate - oRequest.beginDate);
msg += xajax.debug.text[126];
xajax.debug.writeMessage(msg);
return returnValue;
} catch (e) {
var msg = 'CompleteResponse: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
throw e;
}
}
/*
Function: xajax.tools.getRequestObject
Generate a message indicating that the request object is
being initialized.
Catch any exceptions that are thrown during the process or
initializing a new request object.
This is a wrapper around the standard <xajax.getRequestObject>
function.
*/
xajax.debug.getRequestObject = xajax.tools.getRequestObject;
xajax.tools.getRequestObject = function() {
try {
xajax.debug.writeMessage(xajax.debug.text[127]);
return xajax.debug.getRequestObject();
} catch (e) {
var msg = 'GetRequestObject: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
throw e;
}
}
/*
Function: xajax.dom.assign
Catch any exceptions thrown during the assignment and
display an error message.
This is a wrapper around the standard <xajax.dom.assign>
function.
*/
if (xajax.dom.assign) {
xajax.debug.assign = xajax.dom.assign;
xajax.dom.assign = function(element, property, data) {
try {
return xajax.debug.assign(element, property, data);
} catch (e) {
var msg = 'xajax.dom.assign: ';
msg += xajax.debug.getExceptionText(e);
msg += '\n';
msg += 'Eval: element.';
msg += property;
msg += ' = data;\n';
xajax.debug.writeMessage(msg, xajax.debug.text[101], 'errorText');
}
return true;
}
}
/*
Function: xajax.tools.queue.retry
*/
if (xajax.tools) {
if (xajax.tools.queue) {
if (xajax.tools.queue.retry) {
if ('undefined' == typeof xajax.debug.tools)
xajax.debug.tools = {};
if ('undefined' == typeof xajax.debug.tools.queue)
xajax.debug.tools.queue = {};
xajax.debug.tools.queue.retry = xajax.tools.queue.retry;
xajax.tools.queue.retry = function(obj, count) {
if (xajax.debug.tools.queue.retry(obj, count))
return true;
// no 'exceeded' message for sleep command
if (obj.cmd && 's' == obj.cmd)
return false;
xajax.debug.writeMessage('Retry count exceeded.');
return false;
}
}
}
}
/*
Boolean: xajax.debug.isLoaded
true - indicates that the debugging module is loaded
*/
xajax.debug.isLoaded = true;
/*
Section: Redefine shortcuts.
Must redefine these shortcuts so they point to the new debug (wrapper) versions:
- <xjx.$>
- <xjx.getFormValues>
- <xjx.call>
Must redefine these shortcuts as well:
- <xajax.$>
- <xajax.getFormValues>
*/
xjx = {}
xjx.$ = xajax.tools.$;
xjx.getFormValues = xajax.tools.getFormValues;
xjx.call = xajax.call;
xjx.request = xajax.request;
xajax.$ = xajax.tools.$;
xajax.getFormValues = xajax.tools.getFormValues;
} catch (e) {
alert(e.name + ': ' + e.message);
}

View File

@ -0,0 +1,10 @@
if('undefined'!=typeof xajax.debug){xajax.debug.text=[];xajax.debug.text[100]='ПРЕДУПРЕЖДЕНИЕ: ';xajax.debug.text[101]='ГРЕШКА: ';xajax.debug.text[102]='XAJAX ДЕБЪГ СЪОБЩЕНИЕ:\n';xajax.debug.text[103]='...\n[ДЪЛЪГ ОТГОВОР]\n...';xajax.debug.text[104]='ИЗПРАЩАНЕ НА ЗАЯВКИ';xajax.debug.text[105]='ИЗПРАТЕНИ [';xajax.debug.text[106]=' байта]';xajax.debug.text[107]='ИЗВИКВАНЕ: ';xajax.debug.text[108]='Адрес: ';xajax.debug.text[109]='ИНИЦИАЛИЗИРАНЕ НА ЗАЯВКАТА';xajax.debug.text[110]='ОБРАБОТВАНЕ НА ПАРАМЕТРИТЕ [';xajax.debug.text[111]=']';xajax.debug.text[112]='НЯМА ПАРАМЕТРИ ЗА ОБРАБОТВАНЕ';xajax.debug.text[113]='ПОДГОТВЯВАНЕ НА ЗАЯВКАТА';xajax.debug.text[114]='СТАРТИРАНЕ НА XAJAX ПОВИКВАНЕТО (остаряло: вместо това използвай xajax.request)';xajax.debug.text[115]='СТАРТИРАНЕ НА XAJAX ЗАЯВКАТА';xajax.debug.text[116]='Няма регистрирани функции, които да обработят заявката ви на сървъра!\n';xajax.debug.text[117]='.\nПровери за съобщения за грешки на сървъра.';xajax.debug.text[118]='ПОЛУЧЕНИ [статус: ';xajax.debug.text[119]=', размер: ';xajax.debug.text[120]=' байта, време: ';xajax.debug.text[121]='мсек]:\n';xajax.debug.text[122]='Сървъра върна следния HTTP статус: ';xajax.debug.text[123]='\nПОЛУЧЕНИ:\n';xajax.debug.text[124]='Сървъра върна пренасочване към:<br />';xajax.debug.text[125]='ГОТОВО [';xajax.debug.text[126]='мсек]';xajax.debug.text[127]='ИНИЦИАЛИЗИРАНЕ НА ОБЕКТА НА ЗАЯВКАТА';xajax.debug.exceptions=[];xajax.debug.exceptions[10001]='Невалиден XML отговор: Отговора съдържа непознат таг: {data}.';xajax.debug.exceptions[10002]='GetRequestObject: Няма XMLHttpRequest, xajax е изключен.';xajax.debug.exceptions[10003]='Препълване на опашката: Обекта не може да бъде сложен на опашката, защото тя е пълна.';xajax.debug.exceptions[10004]='Невалиден XML отговор: Отговора съдържа неочакван таг или текст: {data}.';xajax.debug.exceptions[10005]='Невалиден адрес: Невалиден или липсващ адрес; автоматичното откриване неуспешнп; please specify a one explicitly.';xajax.debug.exceptions[10006]='Невалидна команда в отговора: Получена беше невалидна команда като отговор.';xajax.debug.exceptions[10007]='Невалидна команда в отговора: Командата [{data}] е непозната.';xajax.debug.exceptions[10008]='Елемент с ID [{data}] не беше намерен в документа.';xajax.debug.exceptions[10009]='Невалидна заявка: Параметъра с името на функцията липсва.';xajax.debug.exceptions[10010]='Невалидна заявка: Липсва обекта на функцията.';}
if('undefined'!=typeof xajax.config){if('undefined'!=typeof xajax.config.status){xajax.config.status.update=function(){return{onRequest:function(){window.status='Изпращане на заявка...';},
onWaiting:function(){window.status='Изчакване на отговор...';},
onProcessing:function(){window.status='Изпълнение...';},
onComplete:function(){window.status='Готово.';}
}
}
}
}

View File

@ -0,0 +1,81 @@
/**
* translation for: xajax v.x.x
* @version: 1.0.0
* @author: mic <info@joomx.com>
* @copyright xajax project
* @license GNU/GPL
* @package xajax x.x.x
* @since v.x.x.x
* save as UTF-8
*/
if ('undefined' != typeof xajax.debug) {
/*
Array: text
*/
xajax.debug.text = [];
xajax.debug.text[100] = 'ПРЕДУПРЕЖДЕНИЕ: ';
xajax.debug.text[101] = 'ГРЕШКА: ';
xajax.debug.text[102] = 'XAJAX ДЕБЪГ СЪОБЩЕНИЕ:\n';
xajax.debug.text[103] = '...\n[ДЪЛЪГ ОТГОВОР]\n...';
xajax.debug.text[104] = 'ИЗПРАЩАНЕ НА ЗАЯВКИ';
xajax.debug.text[105] = 'ИЗПРАТЕНИ [';
xajax.debug.text[106] = ' байта]';
xajax.debug.text[107] = 'ИЗВИКВАНЕ: ';
xajax.debug.text[108] = 'Адрес: ';
xajax.debug.text[109] = 'ИНИЦИАЛИЗИРАНЕ НА ЗАЯВКАТА';
xajax.debug.text[110] = 'ОБРАБОТВАНЕ НА ПАРАМЕТРИТЕ [';
xajax.debug.text[111] = ']';
xajax.debug.text[112] = 'НЯМА ПАРАМЕТРИ ЗА ОБРАБОТВАНЕ';
xajax.debug.text[113] = 'ПОДГОТВЯВАНЕ НА ЗАЯВКАТА';
xajax.debug.text[114] = 'СТАРТИРАНЕ НА XAJAX ПОВИКВАНЕТО (остаряло: вместо това използвай xajax.request)';
xajax.debug.text[115] = 'СТАРТИРАНЕ НА XAJAX ЗАЯВКАТА';
xajax.debug.text[116] = 'Няма регистрирани функции, които да обработят заявката ви на сървъра!\n';
xajax.debug.text[117] = '.\nПровери за съобщения за грешки на сървъра.';
xajax.debug.text[118] = 'ПОЛУЧЕНИ [статус: ';
xajax.debug.text[119] = ', размер: ';
xajax.debug.text[120] = ' байта, време: ';
xajax.debug.text[121] = 'мсек]:\n';
xajax.debug.text[122] = 'Сървъра върна следния HTTP статус: ';
xajax.debug.text[123] = '\nПОЛУЧЕНИ:\n';
xajax.debug.text[124] = 'Сървъра върна пренасочване към:<br />';
xajax.debug.text[125] = 'ГОТОВО [';
xajax.debug.text[126] = 'мсек]';
xajax.debug.text[127] = 'ИНИЦИАЛИЗИРАНЕ НА ОБЕКТА НА ЗАЯВКАТА';
xajax.debug.exceptions = [];
xajax.debug.exceptions[10001] = 'Невалиден XML отговор: Отговора съдържа непознат таг: {data}.';
xajax.debug.exceptions[10002] = 'GetRequestObject: Няма XMLHttpRequest, xajax е изключен.';
xajax.debug.exceptions[10003] = 'Препълване на опашката: Обекта не може да бъде сложен на опашката, защото тя е пълна.';
xajax.debug.exceptions[10004] = 'Невалиден XML отговор: Отговора съдържа неочакван таг или текст: {data}.';
xajax.debug.exceptions[10005] = 'Невалиден адрес: Невалиден или липсващ адрес; автоматичното откриване неуспешнп; please specify a one explicitly.';
xajax.debug.exceptions[10006] = 'Невалидна команда в отговора: Получена беше невалидна команда като отговор.';
xajax.debug.exceptions[10007] = 'Невалидна команда в отговора: Командата [{data}] е непозната.';
xajax.debug.exceptions[10008] = 'Елемент с ID [{data}] не беше намерен в документа.';
xajax.debug.exceptions[10009] = 'Невалидна заявка: Параметъра с името на функцията липсва.';
xajax.debug.exceptions[10010] = 'Невалидна заявка: Липсва обекта на функцията.';
}
if ('undefined' != typeof xajax.config) {
if ('undefined' != typeof xajax.config.status) {
/*
Object: update
*/
xajax.config.status.update = function() {
return {
onRequest: function() {
window.status = 'Изпращане на заявка...';
},
onWaiting: function() {
window.status = 'Изчакване на отговор...';
},
onProcessing: function() {
window.status = 'Изпълнение...';
},
onComplete: function() {
window.status = 'Готово.';
}
}
}
}
}

View File

@ -0,0 +1,9 @@
if('undefined'!=typeof xajax.debug){xajax.debug.text=[];xajax.debug.text[100]='WARNUNG: ';xajax.debug.text[101]='FEHLER: ';xajax.debug.text[102]='XAJAX FEHLERSUCHE NACHRICHT:\n';xajax.debug.text[103]='...\n[UMGFANGREICHE ANTWORT]\n...';xajax.debug.text[104]='SENDE ANFRAGE';xajax.debug.text[105]='GESENDET [';xajax.debug.text[106]=' bytes]';xajax.debug.text[107]='STARTE AUFRUF: ';xajax.debug.text[108]='URI: ';xajax.debug.text[109]='BEGINNE ANFRAGE';xajax.debug.text[110]='PARAMETER IN BEARBEITUNG [';xajax.debug.text[111]=']';xajax.debug.text[112]='KEINE PARAMETER ZU VERARBEITEN';xajax.debug.text[113]='BEREITE REQUEST VOR';xajax.debug.text[114]='BEGINNE XAJAX CALL (veraltet: verwendet stattdessen xajax.request)';xajax.debug.text[115]='BEGINNE XAJAX ANFRAGE';xajax.debug.text[116]='Die vom Server erhaltenen Daten konnten nicht verarbeitet werden.\n';xajax.debug.text[117]='.\nPrüfe auf Fehlermeldungen des Servers.';xajax.debug.text[118]='ERHALTEN [status: ';xajax.debug.text[119]=', Größe: ';xajax.debug.text[120]=' bytes, Zeit: ';xajax.debug.text[121]='ms]:\n';xajax.debug.text[122]='Der Server hat folgenden HTTP-Status zurück gesendet: ';xajax.debug.text[123]='\nERHALTEN:\n';xajax.debug.text[124]='Der Server lieferte einen Redirect nach:<br />';xajax.debug.text[125]='ABGESCHLOSSEN [';xajax.debug.text[126]='ms]';xajax.debug.text[127]='INITIALISIERE REQUEST OBJEKT';xajax.debug.exceptions=[];xajax.debug.exceptions[10001]='Ungültige XML-Antwort: die Antwort enthält ein ungültiges Tag: {data}.';xajax.debug.exceptions[10002]='GetRequestObject: XMLHttpRequest ist nicht verfügbar, XajaX ist nicht verfügbar.';xajax.debug.exceptions[10003]='Warteschleife-Überlauf: kann Objekt nicht an Warteschleife übergeben da diese voll ist.';xajax.debug.exceptions[10004]='Ungültige XML-Antwort: die Antwort enthält einen unerwarteten Tag oder Text: {data}.';xajax.debug.exceptions[10005]='Ungültige Request-URI: Ungültige oder Fehlende URI; Autoerkennung fehlgeschlagen; bitte nur eine einzige URI angeben.';xajax.debug.exceptions[10006]='Ungültiges Antwort-Befehl: Unvollständiges Objekt zurück erhalten.';xajax.debug.exceptions[10007]='Ungültiges Antwort-Befehl: Befehl [{data}] ist nicht bekannt.';xajax.debug.exceptions[10008]='Es konnte kein Element mit der ID [{data}] konnte im Dokument gefunden werden.';xajax.debug.exceptions[10009]='Ungültige Anfrage: Fehlender Funktionsparameter - name.';xajax.debug.exceptions[10010]='Ungültige Anfrage: Fehlender Funktionsparameter - object.';}
if('undefined'!=typeof xajax.config){if('undefined'!=typeof xajax.config.status){xajax.config.status.update=function(){return{onRequest:function(){window.status='Sende Anfrage...';},
onWaiting:function(){window.status='Warten auf Antwort...';},
onProcessing:function(){window.status='Verarbeitung...';},
onComplete:function(){window.status='Fertig.';}
}
}
}
}

View File

@ -0,0 +1,84 @@
/**
* translation for: xajax v.x.x
* @version: 1.0.0
* @author: mic <info@joomx.com>
* @copyright xajax project
* @license GNU/GPL
* @package xajax x.x.x
* @since v.x.x.x
* save as UTF-8
*/
if ('undefined' != typeof xajax.debug) {
/*
Array: text
*/
xajax.debug.text = [];
xajax.debug.text[100] = 'WARNUNG: ';
xajax.debug.text[101] = 'FEHLER: ';
xajax.debug.text[102] = 'XAJAX FEHLERSUCHE NACHRICHT:\n';
xajax.debug.text[103] = '...\n[UMGFANGREICHE ANTWORT]\n...';
xajax.debug.text[104] = 'SENDE ANFRAGE';
xajax.debug.text[105] = 'GESENDET [';
xajax.debug.text[106] = ' bytes]';
xajax.debug.text[107] = 'STARTE AUFRUF: ';
xajax.debug.text[108] = 'URI: ';
xajax.debug.text[109] = 'BEGINNE ANFRAGE';
xajax.debug.text[110] = 'PARAMETER IN BEARBEITUNG [';
xajax.debug.text[111] = ']';
xajax.debug.text[112] = 'KEINE PARAMETER ZU VERARBEITEN';
xajax.debug.text[113] = 'BEREITE REQUEST VOR';
xajax.debug.text[114] = 'BEGINNE XAJAX CALL (veraltet: verwendet stattdessen xajax.request)';
xajax.debug.text[115] = 'BEGINNE XAJAX ANFRAGE';
xajax.debug.text[116] = 'Die vom Server erhaltenen Daten konnten nicht verarbeitet werden.\n';
xajax.debug.text[117] = '.\nPrüfe auf Fehlermeldungen des Servers.';
xajax.debug.text[118] = 'ERHALTEN [status: ';
xajax.debug.text[119] = ', Größe: ';
xajax.debug.text[120] = ' bytes, Zeit: ';
xajax.debug.text[121] = 'ms]:\n';
xajax.debug.text[122] = 'Der Server hat folgenden HTTP-Status zurück gesendet: ';
xajax.debug.text[123] = '\nERHALTEN:\n';
xajax.debug.text[124] = 'Der Server lieferte einen Redirect nach:<br />';
xajax.debug.text[125] = 'ABGESCHLOSSEN [';
xajax.debug.text[126] = 'ms]';
xajax.debug.text[127] = 'INITIALISIERE REQUEST OBJEKT';
/*
Array: exceptions
*/
xajax.debug.exceptions = [];
xajax.debug.exceptions[10001] = 'Ungültige XML-Antwort: die Antwort enthält ein ungültiges Tag: {data}.';
xajax.debug.exceptions[10002] = 'GetRequestObject: XMLHttpRequest ist nicht verfügbar, XajaX ist nicht verfügbar.';
xajax.debug.exceptions[10003] = 'Warteschleife-Überlauf: kann Objekt nicht an Warteschleife übergeben da diese voll ist.';
xajax.debug.exceptions[10004] = 'Ungültige XML-Antwort: die Antwort enthält einen unerwarteten Tag oder Text: {data}.';
xajax.debug.exceptions[10005] = 'Ungültige Request-URI: Ungültige oder Fehlende URI; Autoerkennung fehlgeschlagen; bitte nur eine einzige URI angeben.';
xajax.debug.exceptions[10006] = 'Ungültiges Antwort-Befehl: Unvollständiges Objekt zurück erhalten.';
xajax.debug.exceptions[10007] = 'Ungültiges Antwort-Befehl: Befehl [{data}] ist nicht bekannt.';
xajax.debug.exceptions[10008] = 'Es konnte kein Element mit der ID [{data}] konnte im Dokument gefunden werden.';
xajax.debug.exceptions[10009] = 'Ungültige Anfrage: Fehlender Funktionsparameter - name.';
xajax.debug.exceptions[10010] = 'Ungültige Anfrage: Fehlender Funktionsparameter - object.';
}
if ('undefined' != typeof xajax.config) {
if ('undefined' != typeof xajax.config.status) {
/*
Object: update
*/
xajax.config.status.update = function() {
return {
onRequest: function() {
window.status = 'Sende Anfrage...';
},
onWaiting: function() {
window.status = 'Warten auf Antwort...';
},
onProcessing: function() {
window.status = 'Verarbeitung...';
},
onComplete: function() {
window.status = 'Fertig.';
}
}
}
}
}

View File

@ -0,0 +1,10 @@
if('undefined'!=typeof xajax.debug){xajax.debug.text=[];xajax.debug.text[100]='ALERTA: ';xajax.debug.text[101]='ERROR: ';xajax.debug.text[102]='MENSAJE XAJAX DEBUG:\n';xajax.debug.text[103]='...\n[RESPUESTA LARGA]\n...';xajax.debug.text[104]='ENVIANDO PETICION';xajax.debug.text[105]='ENVIADO [';xajax.debug.text[106]=' bytes]';xajax.debug.text[107]='LLAMADA: ';xajax.debug.text[108]='URI: ';xajax.debug.text[109]='INICIALIZANDO PETICION';xajax.debug.text[110]='PROCESANDO PARAMETROS [';xajax.debug.text[111]=']';xajax.debug.text[112]='NO HAY PARAMETROS A PROCESAR';xajax.debug.text[113]='PREPARANDO PETICION';xajax.debug.text[114]='INICIANDO XAJAX CALL (En desuso: use xajax.request)';xajax.debug.text[115]='INICIANDO XAJAX REQUEST';xajax.debug.text[116]='Ningún procesador de respuesta esta disponible para tratar la respuesta del servidor.\n';xajax.debug.text[117]='.\nRevisa mensajes de error del servidor.';xajax.debug.text[118]='RECIBIDO [status: ';xajax.debug.text[119]=', size: ';xajax.debug.text[120]=' bytes, time: ';xajax.debug.text[121]='ms]:\n';xajax.debug.text[122]='El servidor retorno el siguiente estado HTTP: ';xajax.debug.text[123]='\nRECIBIDO:\n';xajax.debug.text[124]='El servidor retorno una redireccion a:<br />';xajax.debug.text[125]='HECHO [';xajax.debug.text[126]='ms]';xajax.debug.text[127]='INICIALIZANDO PETICION OBJETO';xajax.debug.exceptions=[];xajax.debug.exceptions[10001]='Invalid response XML: La respuesta contiene una etiqueta desconocida: {data}.';xajax.debug.exceptions[10002]='GetRequestObject: XMLHttpRequest no disponible, xajax esta deshabilitado.';xajax.debug.exceptions[10003]='Queue overflow: No se puede colocar objeto en cola porque esta llena.';xajax.debug.exceptions[10004]='Invalid response XML: La respuesta contiene una etiqueta o texto inesperado: {data}.';xajax.debug.exceptions[10005]='Invalid request URI: URI invalida o perdida; autodeteccion fallida; por favor especifica una explicitamente.';xajax.debug.exceptions[10006]='Invalid response command: Orden de respuesta mal formado recibido.';xajax.debug.exceptions[10007]='Invalid response command: Comando [{data}] no es un comando conocido.';xajax.debug.exceptions[10008]='Elemento con ID [{data}] no encontrado en el documento.';xajax.debug.exceptions[10009]='Invalid request: Nombre parametro de funcion perdido.';xajax.debug.exceptions[10010]='Invalid request: Objeto parametro de funcion perdido.';}
if('undefined'!=typeof xajax.config){if('undefined'!=typeof xajax.config.status){xajax.config.status.update=function(){return{onRequest:function(){window.status='Enviando Peticion...';},
onWaiting:function(){window.status='Esperando Respuesta...';},
onProcessing:function(){window.status='Procesando...';},
onComplete:function(){window.status='Hecho.';}
}
}
}
}

View File

@ -0,0 +1,81 @@
/**
* translation for: xajax v.x.x
* @version: 1.0.0
* @author: mic <info@joomx.com>
* @copyright xajax project
* @license GNU/GPL
* @package xajax x.x.x
* @since v.x.x.x
* save as UTF-8
*/
if ('undefined' != typeof xajax.debug) {
/*
Array: text
*/
xajax.debug.text = [];
xajax.debug.text[100] = 'ALERTA: ';
xajax.debug.text[101] = 'ERROR: ';
xajax.debug.text[102] = 'MENSAJE XAJAX DEBUG:\n';
xajax.debug.text[103] = '...\n[RESPUESTA LARGA]\n...';
xajax.debug.text[104] = 'ENVIANDO PETICION';
xajax.debug.text[105] = 'ENVIADO [';
xajax.debug.text[106] = ' bytes]';
xajax.debug.text[107] = 'LLAMADA: ';
xajax.debug.text[108] = 'URI: ';
xajax.debug.text[109] = 'INICIALIZANDO PETICION';
xajax.debug.text[110] = 'PROCESANDO PARAMETROS [';
xajax.debug.text[111] = ']';
xajax.debug.text[112] = 'NO HAY PARAMETROS A PROCESAR';
xajax.debug.text[113] = 'PREPARANDO PETICION';
xajax.debug.text[114] = 'INICIANDO XAJAX CALL (En desuso: use xajax.request)';
xajax.debug.text[115] = 'INICIANDO XAJAX REQUEST';
xajax.debug.text[116] = 'Ning<6E>n procesador de respuesta esta disponible para tratar la respuesta del servidor.\n';
xajax.debug.text[117] = '.\nRevisa mensajes de error del servidor.';
xajax.debug.text[118] = 'RECIBIDO [status: ';
xajax.debug.text[119] = ', size: ';
xajax.debug.text[120] = ' bytes, time: ';
xajax.debug.text[121] = 'ms]:\n';
xajax.debug.text[122] = 'El servidor retorno el siguiente estado HTTP: ';
xajax.debug.text[123] = '\nRECIBIDO:\n';
xajax.debug.text[124] = 'El servidor retorno una redireccion a:<br />';
xajax.debug.text[125] = 'HECHO [';
xajax.debug.text[126] = 'ms]';
xajax.debug.text[127] = 'INICIALIZANDO PETICION OBJETO';
xajax.debug.exceptions = [];
xajax.debug.exceptions[10001] = 'Invalid response XML: La respuesta contiene una etiqueta desconocida: {data}.';
xajax.debug.exceptions[10002] = 'GetRequestObject: XMLHttpRequest no disponible, xajax esta deshabilitado.';
xajax.debug.exceptions[10003] = 'Queue overflow: No se puede colocar objeto en cola porque esta llena.';
xajax.debug.exceptions[10004] = 'Invalid response XML: La respuesta contiene una etiqueta o texto inesperado: {data}.';
xajax.debug.exceptions[10005] = 'Invalid request URI: URI invalida o perdida; autodeteccion fallida; por favor especifica una explicitamente.';
xajax.debug.exceptions[10006] = 'Invalid response command: Orden de respuesta mal formado recibido.';
xajax.debug.exceptions[10007] = 'Invalid response command: Comando [{data}] no es un comando conocido.';
xajax.debug.exceptions[10008] = 'Elemento con ID [{data}] no encontrado en el documento.';
xajax.debug.exceptions[10009] = 'Invalid request: Nombre parametro de funcion perdido.';
xajax.debug.exceptions[10010] = 'Invalid request: Objeto parametro de funcion perdido.';
}
if ('undefined' != typeof xajax.config) {
if ('undefined' != typeof xajax.config.status) {
/*
Object: update
*/
xajax.config.status.update = function() {
return {
onRequest: function() {
window.status = 'Enviando Peticion...';
},
onWaiting: function() {
window.status = 'Esperando Respuesta...';
},
onProcessing: function() {
window.status = 'Procesando...';
},
onComplete: function() {
window.status = 'Hecho.';
}
}
}
}
}

View File

@ -0,0 +1,8 @@
xajax.debug.text=[];xajax.debug.text[100]='ATTENTION : ';xajax.debug.text[101]='ERREUR : ';xajax.debug.text[102]='MESSAGE DE DEBUG XAJAX :\n';xajax.debug.text[103]='...\n[RÉPONSE LONGUE]\n...';xajax.debug.text[104]='ENVOI DE LA REQUÊTE';xajax.debug.text[105]='ENVOYÉ [';xajax.debug.text[106]=' octets]';xajax.debug.text[107]='APPEL : ';xajax.debug.text[108]='URI : ';xajax.debug.text[109]='INITIALISATION DE LA REQUÊTE';xajax.debug.text[110]='TRAITEMENT DES PARAMÈTRES [';xajax.debug.text[111]=']';xajax.debug.text[112]='AUCUN PARAMÈTRE À TRAITER';xajax.debug.text[113]='PRÉPARATION DE LA REQUÊTE';xajax.debug.text[114]='DÉBUT DE L\'APPEL XAJAX (déprécié: utilisez plutôt xajax.request)';xajax.debug.text[115]='DÉBUT DE LA REQUÊTE';xajax.debug.text[116]='Aucun traitement disponible pour traiter la réponse du serveur.\n';xajax.debug.text[117]='.\nVérifie s\'il existe des messages d\'erreur du serveur.';xajax.debug.text[118]='REÇUS [statut : ';xajax.debug.text[119]=', taille: ';xajax.debug.text[120]=' octets, temps: ';xajax.debug.text[121]='ms] :\n';xajax.debug.text[122]='Le serveur a retourné la statut HTTP suivant : ';xajax.debug.text[123]='\nREÇUS :\n';xajax.debug.text[124]='Le serveur a indiqué une redirection vers :<br />';xajax.debug.text[125]='FAIT [';xajax.debug.text[126]='ms]';xajax.debug.text[127]='INITIALISATION DE L\'OBJET REQUÊTE';xajax.debug.exceptions=[];xajax.debug.exceptions[10001]='Réponse XML non valide : La réponse contient une balise inconnue : {data}.';xajax.debug.exceptions[10002]='GetRequestObject : XMLHttpRequest n\'est pas disponible, xajax est désactivé.';xajax.debug.exceptions[10003]='File pleine : Ne peut ajouter un objet à la file car elle est pleine.';xajax.debug.exceptions[10004]='Réponse XML non valide : La réponse contient une balise ou un texte inattendu : {data}.';xajax.debug.exceptions[10005]='URI de la requête non valide : URI non valide ou manquante; auto-détection échouée; veuillez en spécifier une explicitement.';xajax.debug.exceptions[10006]='Réponse de commande invalide : Commande de réponse reçue mal formée.';xajax.debug.exceptions[10007]='Réponse de commande invalide : Commande [{data}] est inconnue.';xajax.debug.exceptions[10008]='L\'élément d\'ID [{data}] est introuvable dans le document.';xajax.debug.exceptions[10009]='Requête invalide : Aucun nom de fonction indiqué en paramètre.';xajax.debug.exceptions[10010]='Requête invalide : Aucun objet indiqué en paramètre pour la fonction.';if('undefined'!=typeof xajax.config){if('undefined'!=typeof xajax.config.status){xajax.config.status.update=function(){return{onRequest:function(){window.status='Envoi de la requête...';},
onWaiting:function(){window.status='Attente de la réponse...';},
onProcessing:function(){window.status='En cours de traitement...';},
onComplete:function(){window.status='Fait.';}
}
}
}
}

View File

@ -0,0 +1,65 @@
xajax.debug.text = [];
xajax.debug.text[100] = 'ATTENTION : ';
xajax.debug.text[101] = 'ERREUR : ';
xajax.debug.text[102] = 'MESSAGE DE DEBUG XAJAX :\n';
xajax.debug.text[103] = '...\n[R<>PONSE LONGUE]\n...';
xajax.debug.text[104] = 'ENVOI DE LA REQU<51>TE';
xajax.debug.text[105] = 'ENVOY<4F> [';
xajax.debug.text[106] = ' octets]';
xajax.debug.text[107] = 'APPEL : ';
xajax.debug.text[108] = 'URI : ';
xajax.debug.text[109] = 'INITIALISATION DE LA REQU<51>TE';
xajax.debug.text[110] = 'TRAITEMENT DES PARAM<41>TRES [';
xajax.debug.text[111] = ']';
xajax.debug.text[112] = 'AUCUN PARAM<41>TRE <20> TRAITER';
xajax.debug.text[113] = 'PR<50>PARATION DE LA REQU<51>TE';
xajax.debug.text[114] = 'D<>BUT DE L\'APPEL XAJAX (d<>pr<70>ci<63>: utilisez plut<75>t xajax.request)';
xajax.debug.text[115] = 'D<>BUT DE LA REQU<51>TE';
xajax.debug.text[116] = 'Aucun traitement disponible pour traiter la r<>ponse du serveur.\n';
xajax.debug.text[117] = '.\nV<6E>rifie s\'il existe des messages d\'erreur du serveur.';
xajax.debug.text[118] = 'RE<52>US [statut : ';
xajax.debug.text[119] = ', taille: ';
xajax.debug.text[120] = ' octets, temps: ';
xajax.debug.text[121] = 'ms] :\n';
xajax.debug.text[122] = 'Le serveur a retourn<72> la statut HTTP suivant : ';
xajax.debug.text[123] = '\nRE<52>US :\n';
xajax.debug.text[124] = 'Le serveur a indiqu<71> une redirection vers :<br />';
xajax.debug.text[125] = 'FAIT [';
xajax.debug.text[126] = 'ms]';
xajax.debug.text[127] = 'INITIALISATION DE L\'OBJET REQU<51>TE';
xajax.debug.exceptions = [];
xajax.debug.exceptions[10001] = 'R<>ponse XML non valide : La r<>ponse contient une balise inconnue : {data}.';
xajax.debug.exceptions[10002] = 'GetRequestObject : XMLHttpRequest n\'est pas disponible, xajax est d<>sactiv<69>.';
xajax.debug.exceptions[10003] = 'File pleine : Ne peut ajouter un objet <20> la file car elle est pleine.';
xajax.debug.exceptions[10004] = 'R<>ponse XML non valide : La r<>ponse contient une balise ou un texte inattendu : {data}.';
xajax.debug.exceptions[10005] = 'URI de la requ<71>te non valide : URI non valide ou manquante; auto-d<>tection <20>chou<6F>e; veuillez en sp<73>cifier une explicitement.';
xajax.debug.exceptions[10006] = 'R<>ponse de commande invalide : Commande de r<>ponse re<72>ue mal form<72>e.';
xajax.debug.exceptions[10007] = 'R<>ponse de commande invalide : Commande [{data}] est inconnue.';
xajax.debug.exceptions[10008] = 'L\'<27>l<EFBFBD>ment d\'ID [{data}] est introuvable dans le document.';
xajax.debug.exceptions[10009] = 'Requ<71>te invalide : Aucun nom de fonction indiqu<71> en param<61>tre.';
xajax.debug.exceptions[10010] = 'Requ<71>te invalide : Aucun objet indiqu<71> en param<61>tre pour la fonction.';
if ('undefined' != typeof xajax.config) {
if ('undefined' != typeof xajax.config.status) {
/*
Object: mise <EFBFBD> jour
*/
xajax.config.status.update = function() {
return {
onRequest: function() {
window.status = 'Envoi de la requ<71>te...';
},
onWaiting: function() {
window.status = 'Attente de la r<>ponse...';
},
onProcessing: function() {
window.status = 'En cours de traitement...';
},
onComplete: function() {
window.status = 'Fait.';
}
}
}
}
}

View File

@ -0,0 +1,9 @@
if('undefined'!=typeof xajax.debug){xajax.debug.text=[];xajax.debug.text[100]='FOUTMELDING: ';xajax.debug.text[101]='FOUT: ';xajax.debug.text[102]='XAJAX FOUTMELDINGS BERICHT:\n';xajax.debug.text[103]='...\n[LANG ANTWOORD]\n...';xajax.debug.text[104]='VERZENDING AANVRAAG';xajax.debug.text[105]='VERZONDEN [';xajax.debug.text[106]=' bytes]';xajax.debug.text[107]='AANROEPING: ';xajax.debug.text[108]='URI: ';xajax.debug.text[109]='INITIALISATIE AANVRAAG';xajax.debug.text[110]='VERWERKING PARAMETERS [';xajax.debug.text[111]=']';xajax.debug.text[112]='GEEN PARAMETERS OM TE VERWERKEN';xajax.debug.text[113]='VOORBEREIDING AANVRAAG';xajax.debug.text[114]='BEGIN XAJAX AANVRAAG (verouderd: gebruik xajax.request)';xajax.debug.text[115]='BEGIN XAJAX AANVRAAG';xajax.debug.text[116]='Er is geen verwerkingsbestand gespecificeerd om de aanvraag te verwerken.\n';xajax.debug.text[117]='.\nBekijk foutmeldingen van de server.';xajax.debug.text[118]='ONTVANGEN [status: ';xajax.debug.text[119]=', omvang: ';xajax.debug.text[120]=' bytes, Zeit: ';xajax.debug.text[121]='ms]:\n';xajax.debug.text[122]='De server retourneert de volgende HTTP-status: ';xajax.debug.text[123]='\nONTVANGEN:\n';xajax.debug.text[124]='De server retourneert een doorverwijzing naar:<br />';xajax.debug.text[125]='KLAAR [';xajax.debug.text[126]='ms]';xajax.debug.text[127]='INITIALISATIE OBJECT AANVRAAG';xajax.debug.exceptions=[];xajax.debug.exceptions[10001]='Ongeldig XML-antwoord: het antwoord bevat een onbekende tag: {data}.';xajax.debug.exceptions[10002]='GetRequestObject: XMLHttpRequest is niet beschikbaar, XajaX is uitgeschakeld.';xajax.debug.exceptions[10003]='Wachtrij limiet overschreden: kan het object niet in de wachtrij plaatsen, omdat die vol is.';xajax.debug.exceptions[10004]='Ongeldig XML-antwoord: het antwoord bevat een onverwachte tag of tekst: {data}.';xajax.debug.exceptions[10005]='Ongeldige Request-URI: Ongeldige of ontbrekende URI; automatische detectie faalt; specificeer een URI expliciet.';xajax.debug.exceptions[10006]='Ongeldig antwoord bevel: misvormd antwoord bevel ontvangen.';xajax.debug.exceptions[10007]='Ongeldig antwoord bevel: Bevel [{data}] is niet bekend.';xajax.debug.exceptions[10008]='Element met het ID [{data}] kon niet in het document worden gevonden.';xajax.debug.exceptions[10009]='Ongeldige aanvraag: Missende functie parameter - naam.';xajax.debug.exceptions[10010]='Ongeldige aanvraag: Missende functie parameter - object.';}
if('undefined'!=typeof xajax.config){if('undefined'!=typeof xajax.config.status){xajax.config.status.update=function(){return{onRequest:function(){window.status="Verzenden aanvraag...";},
onWaiting:function(){window.status="Wachten op antwoord...";},
onProcessing:function(){window.status="Verwerking...";},
onComplete:function(){window.status="Afgesloten.";}
}
}
}
}

View File

@ -0,0 +1,84 @@
/**
* translation for: xajax v.x.x
* @version: 1.0.0
* @author: jeffrey <walkingsoul@gmail.com>
* @copyright xajax project
* @license GNU/GPL
* @package xajax x.x.x
* @since v.x.x.x
* save as UTF-8
*/
if ('undefined' != typeof xajax.debug) {
/*
Array: text
*/
xajax.debug.text = [];
xajax.debug.text[100] = 'FOUTMELDING: ';
xajax.debug.text[101] = 'FOUT: ';
xajax.debug.text[102] = 'XAJAX FOUTMELDINGS BERICHT:\n';
xajax.debug.text[103] = '...\n[LANG ANTWOORD]\n...';
xajax.debug.text[104] = 'VERZENDING AANVRAAG';
xajax.debug.text[105] = 'VERZONDEN [';
xajax.debug.text[106] = ' bytes]';
xajax.debug.text[107] = 'AANROEPING: ';
xajax.debug.text[108] = 'URI: ';
xajax.debug.text[109] = 'INITIALISATIE AANVRAAG';
xajax.debug.text[110] = 'VERWERKING PARAMETERS [';
xajax.debug.text[111] = ']';
xajax.debug.text[112] = 'GEEN PARAMETERS OM TE VERWERKEN';
xajax.debug.text[113] = 'VOORBEREIDING AANVRAAG';
xajax.debug.text[114] = 'BEGIN XAJAX AANVRAAG (verouderd: gebruik xajax.request)';
xajax.debug.text[115] = 'BEGIN XAJAX AANVRAAG';
xajax.debug.text[116] = 'Er is geen verwerkingsbestand gespecificeerd om de aanvraag te verwerken.\n';
xajax.debug.text[117] = '.\nBekijk foutmeldingen van de server.';
xajax.debug.text[118] = 'ONTVANGEN [status: ';
xajax.debug.text[119] = ', omvang: ';
xajax.debug.text[120] = ' bytes, Zeit: ';
xajax.debug.text[121] = 'ms]:\n';
xajax.debug.text[122] = 'De server retourneert de volgende HTTP-status: ';
xajax.debug.text[123] = '\nONTVANGEN:\n';
xajax.debug.text[124] = 'De server retourneert een doorverwijzing naar:<br />';
xajax.debug.text[125] = 'KLAAR [';
xajax.debug.text[126] = 'ms]';
xajax.debug.text[127] = 'INITIALISATIE OBJECT AANVRAAG';
/*
Array: exceptions
*/
xajax.debug.exceptions = [];
xajax.debug.exceptions[10001] = 'Ongeldig XML-antwoord: het antwoord bevat een onbekende tag: {data}.';
xajax.debug.exceptions[10002] = 'GetRequestObject: XMLHttpRequest is niet beschikbaar, XajaX is uitgeschakeld.';
xajax.debug.exceptions[10003] = 'Wachtrij limiet overschreden: kan het object niet in de wachtrij plaatsen, omdat die vol is.';
xajax.debug.exceptions[10004] = 'Ongeldig XML-antwoord: het antwoord bevat een onverwachte tag of tekst: {data}.';
xajax.debug.exceptions[10005] = 'Ongeldige Request-URI: Ongeldige of ontbrekende URI; automatische detectie faalt; specificeer een URI expliciet.';
xajax.debug.exceptions[10006] = 'Ongeldig antwoord bevel: misvormd antwoord bevel ontvangen.';
xajax.debug.exceptions[10007] = 'Ongeldig antwoord bevel: Bevel [{data}] is niet bekend.';
xajax.debug.exceptions[10008] = 'Element met het ID [{data}] kon niet in het document worden gevonden.';
xajax.debug.exceptions[10009] = 'Ongeldige aanvraag: Missende functie parameter - naam.';
xajax.debug.exceptions[10010] = 'Ongeldige aanvraag: Missende functie parameter - object.';
}
if ('undefined' != typeof xajax.config) {
if ('undefined' != typeof xajax.config.status) {
/*
Object: update
*/
xajax.config.status.update = function() {
return {
onRequest: function() {
window.status = "Verzenden aanvraag...";
},
onWaiting: function() {
window.status = "Wachten op antwoord...";
},
onProcessing: function() {
window.status = "Verwerking...";
},
onComplete: function() {
window.status = "Afgesloten.";
}
}
}
}
}

View File

@ -0,0 +1,10 @@
if('undefined'!=typeof xajax.debug){xajax.debug.text=[];xajax.debug.text[100]='IKAZ: ';xajax.debug.text[101]='HATA: ';xajax.debug.text[102]='XAJAX DEBUG (HATA AYIKLAMASI) MESAJI:\n';xajax.debug.text[103]='...\n[UZUN YANIT]\n...';xajax.debug.text[104]='ISTEK GÖNDERILIYOR';xajax.debug.text[105]='GÖNDERILDI [';xajax.debug.text[106]=' byte]';xajax.debug.text[107]='ÇAGIRILIYOR: ';xajax.debug.text[108]='URI: ';xajax.debug.text[109]='ISTEK BASLATILIYOR';xajax.debug.text[110]='PARAMETRELER ISLENIYOR [';xajax.debug.text[111]=']';xajax.debug.text[112]='ISLENECEK PARAMETRE YOK';xajax.debug.text[113]='ISTEK HAZIRLANIYOR';xajax.debug.text[114]='XAJAX ÇAGRISI BASLATILIYOR (kullanimi tavsiye edilmiyor: yerine xajax.request kullanin)';xajax.debug.text[115]='XAJAX ISTEGI BASLATILIYOR';xajax.debug.text[116]='Sunucudan gelen cevabi isleyecek cevap islemcisi yok.\n';xajax.debug.text[117]='.\nSunucudan gelen hata mesajlarini kontrol edin.';xajax.debug.text[118]='ALINDI [durum: ';xajax.debug.text[119]=', boyut: ';xajax.debug.text[120]=' byte, süre: ';xajax.debug.text[121]='ms]:\n';xajax.debug.text[122]='Sunucu asagidaki HTTP durumunu gönderdi: ';xajax.debug.text[123]='\nALINDI:\n';xajax.debug.text[124]='Sunucu su adrese yönlendirme istegi gönderdi :<br />';xajax.debug.text[125]='TAMAMLANDI [';xajax.debug.text[126]='ms]';xajax.debug.text[127]='ISTEK NESNESI BASLATILIYOR';xajax.debug.exceptions=[];xajax.debug.exceptions[10001]='Geçersiz XML cevabi: Cevap bilinmeyen bir etiket tasiyor: {data}.';xajax.debug.exceptions[10002]='GetRequestObject: XMLHttpRequest hazir degil, xajax nesnesi etkisizlestirildi.';xajax.debug.exceptions[10003]='Islem kuyrugu fazla yüklendi: Kuyruk dolu oldugu için nesne kuyruga eklenemiyor.';xajax.debug.exceptions[10004]='Geçersiz XML cevabi: Cevap bilinmeyen bir etiket veya metin tasiyor: {data}.';xajax.debug.exceptions[10005]='Geçersiz istek URI: Geçersiz veya kayip URI; otomatik tespit yapilamadi; lütfen açikça bir tane belirleyiniz.';xajax.debug.exceptions[10006]='Geçersiz cevap komutu: Bozulmus cevap komutu alindi.';xajax.debug.exceptions[10007]='Geçersiz cevap komutu: [{data}] komutu bilinmiyor.';xajax.debug.exceptions[10008]='[{data}] ID li element dosya içinde bulunamadi.';xajax.debug.exceptions[10009]='Geçersiz istek: Fonksiyon isim parametresi eksik.';xajax.debug.exceptions[10010]='Geçersiz istek: Fonksiyon nesne parametresi eksik.';}
if('undefined'!=typeof xajax.config){if('undefined'!=typeof xajax.config.status){xajax.config.status.update=function(){return{onRequest:function(){window.status='İstek Gönderiliyor...';},
onWaiting:function(){window.status='Cevap Bekleniyor...';},
onProcessing:function(){window.status='İşlem Devam Ediyor...';},
onComplete:function(){window.status='Tamamlandı.';}
}
}
}
}

View File

@ -0,0 +1,82 @@
/**
* translation for: xajax v.x.x
* @version: 1.0.0
* @author: mic <info@joomx.com>
* @copyright xajax project
* @license GNU/GPL
* @package xajax x.x.x
* @since v.x.x.x
* save as UTF-8
*/
if ('undefined' != typeof xajax.debug) {
xajax.debug.text = [];
xajax.debug.text[100] = 'IKAZ: ';
xajax.debug.text[101] = 'HATA: ';
xajax.debug.text[102] = 'XAJAX DEBUG (HATA AYIKLAMASI) MESAJI:\n';
xajax.debug.text[103] = '...\n[UZUN YANIT]\n...';
xajax.debug.text[104] = 'ISTEK GÖNDERILIYOR';
xajax.debug.text[105] = 'GÖNDERILDI [';
xajax.debug.text[106] = ' byte]';
xajax.debug.text[107] = 'ÇAGIRILIYOR: ';
xajax.debug.text[108] = 'URI: ';
xajax.debug.text[109] = 'ISTEK BASLATILIYOR';
xajax.debug.text[110] = 'PARAMETRELER ISLENIYOR [';
xajax.debug.text[111] = ']';
xajax.debug.text[112] = 'ISLENECEK PARAMETRE YOK';
xajax.debug.text[113] = 'ISTEK HAZIRLANIYOR';
xajax.debug.text[114] = 'XAJAX ÇAGRISI BASLATILIYOR (kullanimi tavsiye edilmiyor: yerine xajax.request kullanin)';
xajax.debug.text[115] = 'XAJAX ISTEGI BASLATILIYOR';
xajax.debug.text[116] = 'Sunucudan gelen cevabi isleyecek cevap islemcisi yok.\n';
xajax.debug.text[117] = '.\nSunucudan gelen hata mesajlarini kontrol edin.';
xajax.debug.text[118] = 'ALINDI [durum: ';
xajax.debug.text[119] = ', boyut: ';
xajax.debug.text[120] = ' byte, süre: ';
xajax.debug.text[121] = 'ms]:\n';
xajax.debug.text[122] = 'Sunucu asagidaki HTTP durumunu gönderdi: ';
xajax.debug.text[123] = '\nALINDI:\n';
xajax.debug.text[124] = 'Sunucu su adrese yönlendirme istegi gönderdi :<br />';
xajax.debug.text[125] = 'TAMAMLANDI [';
xajax.debug.text[126] = 'ms]';
xajax.debug.text[127] = 'ISTEK NESNESI BASLATILIYOR';
/*
Array: exceptions
*/
xajax.debug.exceptions = [];
xajax.debug.exceptions[10001] = 'Geçersiz XML cevabi: Cevap bilinmeyen bir etiket tasiyor: {data}.';
xajax.debug.exceptions[10002] = 'GetRequestObject: XMLHttpRequest hazir degil, xajax nesnesi etkisizlestirildi.';
xajax.debug.exceptions[10003] = 'Islem kuyrugu fazla yüklendi: Kuyruk dolu oldugu için nesne kuyruga eklenemiyor.';
xajax.debug.exceptions[10004] = 'Geçersiz XML cevabi: Cevap bilinmeyen bir etiket veya metin tasiyor: {data}.';
xajax.debug.exceptions[10005] = 'Geçersiz istek URI: Geçersiz veya kayip URI; otomatik tespit yapilamadi; lütfen açikça bir tane belirleyiniz.';
xajax.debug.exceptions[10006] = 'Geçersiz cevap komutu: Bozulmus cevap komutu alindi.';
xajax.debug.exceptions[10007] = 'Geçersiz cevap komutu: [{data}] komutu bilinmiyor.';
xajax.debug.exceptions[10008] = '[{data}] ID li element dosya içinde bulunamadi.';
xajax.debug.exceptions[10009] = 'Geçersiz istek: Fonksiyon isim parametresi eksik.';
xajax.debug.exceptions[10010] = 'Geçersiz istek: Fonksiyon nesne parametresi eksik.';
}
if ('undefined' != typeof xajax.config) {
if ('undefined' != typeof xajax.config.status) {
/*
Object: update
*/
xajax.config.status.update = function() {
return {
onRequest: function() {
window.status = 'İstek Gönderiliyor...';
},
onWaiting: function() {
window.status = 'Cevap Bekleniyor...';
},
onProcessing: function() {
window.status = 'İşlem Devam Ediyor...';
},
onComplete: function() {
window.status = 'Tamamlandı.';
}
}
}
}
}

View File

@ -0,0 +1,14 @@
try{if('undefined'==typeof xajax)
throw{name:'SequenceError',message:'Error: xajax core was not detected, legacy module disabled.'}
if('undefined'==typeof xajax.legacy)
xajax.legacy={}
xajax.legacy.call=xajax.call;xajax.call=function(sFunction,objParameters){var oOpt={}
oOpt.parameters=objParameters;if(undefined!=xajax.loadingFunction){if(undefined==oOpt.callback)
oOpt.callback={}
oOpt.callback.onResponseDelay=xajax.loadingFunction;}
if(undefined!=xajax.doneLoadingFunction){if(undefined==oOpt.callback)
oOpt.callback={}
oOpt.callback.onComplete=xajax.doneLoadingFunction;}
return xajax.legacy.call(sFunction,oOpt);}
xajax.legacy.isLoaded=true;}catch(e){alert(e.name+': '+e.message);}

View File

@ -0,0 +1,69 @@
/*
File: xajax_legacy.js
Provides support for legacy scripts that have not been updated to the
latest syntax.
Title: xajax legacy support module
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajax_legacy_uncompressed.php 327 2007-02-28 16:55:26Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
try
{
/*
Class: xajax.legacy
*/
if ('undefined' == typeof xajax)
throw { name: 'SequenceError', message: 'Error: xajax core was not detected, legacy module disabled.' }
if ('undefined' == typeof xajax.legacy)
xajax.legacy = {}
/*
Function: xajax.legacy.call
Convert call parameters from the 0.2.x syntax to the new *improved*
call format.
Parameters:
sFunction - (string): Registered PHP Functionname to be called
objParametes - (object): Paramter object for the request.
This is a wrapper function around the standard <xajax.call> function.
*/
xajax.legacy.call = xajax.call;
xajax.call = function(sFunction, objParameters) {
var oOpt = {}
oOpt.parameters = objParameters;
if (undefined != xajax.loadingFunction) {
if (undefined == oOpt.callback)
oOpt.callback = {}
oOpt.callback.onResponseDelay = xajax.loadingFunction;
}
if (undefined != xajax.doneLoadingFunction) {
if (undefined == oOpt.callback)
oOpt.callback = {}
oOpt.callback.onComplete = xajax.doneLoadingFunction;
}
return xajax.legacy.call(sFunction, oOpt);
}
/*
Boolean: isLoaded
true - Indicates that the <xajax.legacy> module is loaded.
*/
xajax.legacy.isLoaded = true;
} catch (e) {
alert(e.name + ': ' + e.message);
}

View File

@ -0,0 +1,18 @@
try{if('undefined'==typeof xajax)
throw{name:'SequenceError',message:'Error: xajax core was not detected, verbose module disabled.'}
if('undefined'==typeof xajax.debug)
throw{name:'SequenceError',message:'Error: xajax debugger was not detected, verbose module disabled.'}
xajax.debug.verbose={}
xajax.debug.verbose.expandObject=function(obj){var rec=true;if(1 < arguments.length)
rec=arguments[1];if('function'==typeof(obj)){return '[Function]';}else if('object'==typeof(obj)){if(true==rec){var t=' { ';var separator='';for(var m in obj){t+=separator;t+=m;t+=': ';try{t+=xajax.debug.verbose.expandObject(obj[m],false);}catch(e){t+='[n/a]';}
separator=', ';}
t+=' } ';return t;}else return '[Object]';}else return '"'+obj+'"';}
xajax.debug.verbose.makeFunction=function(obj,name){return function(){var fun=name;fun+='(';var separator='';var pLen=arguments.length;for(var p=0;p < pLen;++p){fun+=separator;fun+=xajax.debug.verbose.expandObject(arguments[p]);separator=',';}
fun+=');';var msg='--> ';msg+=fun;xajax.debug.writeMessage(msg);var returnValue=true;var code='returnValue = obj(';separator='';for(var p=0;p < pLen;++p){code+=separator;code+='arguments['+p+']';separator=',';}
code+=');';eval(code);msg='<-- ';msg+=fun;msg+=' returns ';msg+=xajax.debug.verbose.expandObject(returnValue);xajax.debug.writeMessage(msg);return returnValue;}
}
xajax.debug.verbose.hook=function(x,base){for(var m in x){if('function'==typeof(x[m])){x[m]=xajax.debug.verbose.makeFunction(x[m],base+m);}
}
}
xajax.debug.verbose.hook(xajax,'xajax.');xajax.debug.verbose.hook(xajax.callback,'xajax.callback.');xajax.debug.verbose.hook(xajax.css,'xajax.css.');xajax.debug.verbose.hook(xajax.dom,'xajax.dom.');xajax.debug.verbose.hook(xajax.events,'xajax.events.');xajax.debug.verbose.hook(xajax.forms,'xajax.forms.');xajax.debug.verbose.hook(xajax.js,'xajax.js.');xajax.debug.verbose.hook(xajax.tools,'xajax.tools.');xajax.debug.verbose.hook(xajax.tools.queue,'xajax.tools.queue.');xajax.debug.verbose.hook(xajax.command,'xajax.command.');xajax.debug.verbose.hook(xajax.command.handler,'xajax.command.handler.');xajax.debug.verbose.isLoaded=true;}catch(e){alert(e.name+': '+e.message);}

View File

@ -0,0 +1,176 @@
/*
File: xajax_verbose.js
The xajax verbose debugging module. This is an optional module, include in
your project with care. :)
Title: xajax verbose debugging module
Please see <copyright.inc.php> for a detailed description, copyright
and license information.
*/
/*
@package xajax
@version $Id: xajax_verbose_uncompressed 327 2007-02-28 16:55:26Z calltoconstruct $
@copyright Copyright (c) 2005-2007 by Jared White & J. Max Wilson
@copyright Copyright (c) 2008-2009 by Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson
@license http://www.xajaxproject.org/bsd_license.txt BSD License
*/
try {
if ('undefined' == typeof xajax)
throw { name: 'SequenceError', message: 'Error: xajax core was not detected, verbose module disabled.' }
if ('undefined' == typeof xajax.debug)
throw { name: 'SequenceError', message: 'Error: xajax debugger was not detected, verbose module disabled.' }
/*
Class: xajax.debug.verbose
Provide a high level of detail which can be used to debug hard to find
problems.
*/
xajax.debug.verbose = {}
/*
Function: xajax.debug.verbose.expandObject
Generate a debug message expanding all the first level
members found therein.
Parameters:
obj - (object): The object to be enumerated.
Returns:
string - The textual representation of all the first
level members.
*/
xajax.debug.verbose.expandObject = function(obj) {
var rec = true;
if (1 < arguments.length)
rec = arguments[1];
if ('function' == typeof (obj)) {
return '[Function]';
} else if ('object' == typeof (obj)) {
if (true == rec) {
var t = ' { ';
var separator = '';
for (var m in obj) {
t += separator;
t += m;
t += ': ';
try {
t += xajax.debug.verbose.expandObject(obj[m], false);
} catch (e) {
t += '[n/a]';
}
separator = ', ';
}
t += ' } ';
return t;
} else return '[Object]';
} else return '"' + obj + '"';
}
/*
Function: xajax.debug.verbose.makeFunction
Generate a wrapper function around the specified function.
Parameters:
obj - (object): The object that contains the function to be
wrapped.
name - (string): The name of the function to be wrapped.
Returns:
function - The wrapper function.
*/
xajax.debug.verbose.makeFunction = function(obj, name) {
return function() {
var fun = name;
fun += '(';
var separator = '';
var pLen = arguments.length;
for (var p = 0; p < pLen; ++p) {
fun += separator;
fun += xajax.debug.verbose.expandObject(arguments[p]);
separator = ',';
}
fun += ');';
var msg = '--> ';
msg += fun;
xajax.debug.writeMessage(msg);
var returnValue = true;
var code = 'returnValue = obj(';
separator = '';
for (var p = 0; p < pLen; ++p) {
code += separator;
code += 'arguments[' + p + ']';
separator = ',';
}
code += ');';
eval(code);
msg = '<-- ';
msg += fun;
msg += ' returns ';
msg += xajax.debug.verbose.expandObject(returnValue);
xajax.debug.writeMessage(msg);
return returnValue;
}
}
/*
Function: xajax.debug.verbose.hook
Generate a wrapper function around each of the functions
contained within the specified object.
Parameters:
x - (object): The object to be scanned.
base - (string): The base reference to be prepended to the
generated wrapper functions.
*/
xajax.debug.verbose.hook = function(x, base) {
for (var m in x) {
if ('function' == typeof (x[m])) {
x[m] = xajax.debug.verbose.makeFunction(x[m], base + m);
}
}
}
xajax.debug.verbose.hook(xajax, 'xajax.');
xajax.debug.verbose.hook(xajax.callback, 'xajax.callback.');
xajax.debug.verbose.hook(xajax.css, 'xajax.css.');
xajax.debug.verbose.hook(xajax.dom, 'xajax.dom.');
xajax.debug.verbose.hook(xajax.events, 'xajax.events.');
xajax.debug.verbose.hook(xajax.forms, 'xajax.forms.');
xajax.debug.verbose.hook(xajax.js, 'xajax.js.');
xajax.debug.verbose.hook(xajax.tools, 'xajax.tools.');
xajax.debug.verbose.hook(xajax.tools.queue, 'xajax.tools.queue.');
xajax.debug.verbose.hook(xajax.command, 'xajax.command.');
xajax.debug.verbose.hook(xajax.command.handler, 'xajax.command.handler.');
/*
Boolean: isLoaded
true - indicates that the verbose debugging module is loaded.
*/
xajax.debug.verbose.isLoaded = true;
} catch (e) {
alert(e.name + ': ' + e.message);
}

View File

@ -1,172 +0,0 @@
/* xajax Javascript library :: version 0.2.4 */
Array.prototype.containsValue=function(valueToCheck){for(var i=0;i<this.length;i++){if(this[i]==valueToCheck)return true;}
return false;}
function Xajax(){this.DebugMessage=function(text){if(text.length > 1000)text=text.substr(0,1000)+"...\n[long response]\n...";try{if(this.debugWindow==undefined||this.debugWindow.closed==true){this.debugWindow=window.open('about:blank','xajax-debug','width=800,height=600,scrollbars=1,resizable,status');this.debugWindow.document.write('<html><head><title>Xajax debug output</title></head><body><h2>Xajax debug output</h2><div id="debugTag"></div></body></html>');}
text=text.replace(/&/g,"&amp;")
text=text.replace(/</g,"&lt;")
text=text.replace(/>/g,"&gt;")
debugTag=this.debugWindow.document.getElementById('debugTag');debugTag.innerHTML=('<b>'+(new Date()).toString()+'</b>: '+text+'<hr/>')+debugTag.innerHTML;}catch(e){alert("Xajax Debug:\n "+text);}
};this.workId='xajaxWork'+new Date().getTime();this.depth=0;this.responseErrorsForAlert=["400","401","402","403","404","500","501","502","503"];this.getRequestObject=function(){if(xajaxDebug)this.DebugMessage("Initializing Request Object..");var req=null;if(typeof XMLHttpRequest!="undefined")
req=new XMLHttpRequest();if(!req&&typeof ActiveXObject!="undefined"){try{req=new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){try{req=new ActiveXObject("Microsoft.XMLHTTP");}
catch(e2){try{req=new ActiveXObject("Msxml2.XMLHTTP.4.0");}
catch(e3){req=null;}
}
}
}
if(!req&&window.createRequest)
req=window.createRequest();if(!req)this.DebugMessage("Request Object Instantiation failed.");return req;}
this.$=function(sId){if(!sId){return null;}
var returnObj=document.getElementById(sId);if(!returnObj&&document.all){returnObj=document.all[sId];}
if(xajaxDebug&&!returnObj&&sId!=this.workId){this.DebugMessage("Element with the id \""+sId+"\" not found.");}
return returnObj;}
this.include=function(sFileName){var objHead=document.getElementsByTagName('head');var objScript=document.createElement('script');objScript.type='text/javascript';objScript.src=sFileName;objHead[0].appendChild(objScript);}
this.stripOnPrefix=function(sEventName){sEventName=sEventName.toLowerCase();if(sEventName.indexOf('on')==0){sEventName=sEventName.replace(/on/,'');}
return sEventName;}
this.addOnPrefix=function(sEventName){sEventName=sEventName.toLowerCase();if(sEventName.indexOf('on')!=0){sEventName='on'+sEventName;}
return sEventName;}
this.addHandler=function(sElementId,sEvent,sFunctionName){if(window.addEventListener){sEvent=this.stripOnPrefix(sEvent);eval("this.$('"+sElementId+"').addEventListener('"+sEvent+"',"+sFunctionName+",false);");}
else{sAltEvent=this.addOnPrefix(sEvent);eval("this.$('"+sElementId+"').attachEvent('"+sAltEvent+"',"+sFunctionName+",false);");}
}
this.removeHandler=function(sElementId,sEvent,sFunctionName){if(window.addEventListener){sEvent=this.stripOnPrefix(sEvent);eval("this.$('"+sElementId+"').removeEventListener('"+sEvent+"',"+sFunctionName+",false);");}
else{sAltEvent=this.addOnPrefix(sEvent);eval("this.$('"+sElementId+"').detachEvent('"+sAltEvent+"',"+sFunctionName+",false);");}
}
this.create=function(sParentId,sTag,sId){var objParent=this.$(sParentId);objElement=document.createElement(sTag);objElement.setAttribute('id',sId);if(objParent)
objParent.appendChild(objElement);}
this.insert=function(sBeforeId,sTag,sId){var objSibling=this.$(sBeforeId);objElement=document.createElement(sTag);objElement.setAttribute('id',sId);objSibling.parentNode.insertBefore(objElement,objSibling);}
this.insertAfter=function(sAfterId,sTag,sId){var objSibling=this.$(sAfterId);objElement=document.createElement(sTag);objElement.setAttribute('id',sId);objSibling.parentNode.insertBefore(objElement,objSibling.nextSibling);}
this.getInput=function(sType,sName,sId){var Obj;if(!window.addEventListener){Obj=document.createElement('<input type="'+sType+'" id="'+sId+'" name="'+sName+'">');}
else{Obj=document.createElement('input');Obj.setAttribute('type',sType);Obj.setAttribute('name',sName);Obj.setAttribute('id',sId);}
return Obj;}
this.createInput=function(sParentId,sType,sName,sId){var objParent=this.$(sParentId);var objElement=this.getInput(sType,sName,sId);if(objParent&&objElement)
objParent.appendChild(objElement);}
this.insertInput=function(sBeforeId,sType,sName,sId){var objSibling=this.$(sBeforeId);var objElement=this.getInput(sType,sName,sId);if(objElement&&objSibling&&objSibling.parentNode)
objSibling.parentNode.insertBefore(objElement,objSibling);}
this.insertInputAfter=function(sAfterId,sType,sName,sId){var objSibling=this.$(sAfterId);var objElement=this.getInput(sType,sName,sId);if(objElement&&objSibling&&objSibling.parentNode){objSibling.parentNode.insertBefore(objElement,objSibling.nextSibling);}
}
this.remove=function(sId){objElement=this.$(sId);if(objElement&&objElement.parentNode&&objElement.parentNode.removeChild){objElement.parentNode.removeChild(objElement);}
}
this.replace=function(sId,sAttribute,sSearch,sReplace){var bFunction=false;if(sAttribute=="innerHTML")
sSearch=this.getBrowserHTML(sSearch);eval("var txt=this.$('"+sId+"')."+sAttribute);if(typeof txt=="function"){txt=txt.toString();bFunction=true;}
if(txt.indexOf(sSearch)>-1){var newTxt='';while(txt.indexOf(sSearch)>-1){x=txt.indexOf(sSearch)+sSearch.length+1;newTxt+=txt.substr(0,x).replace(sSearch,sReplace);txt=txt.substr(x,txt.length-x);}
newTxt+=txt;if(bFunction){eval('this.$("'+sId+'").'+sAttribute+'=newTxt;');}
else if(this.willChange(sId,sAttribute,newTxt)){eval('this.$("'+sId+'").'+sAttribute+'=newTxt;');}
}
}
this.getFormValues=function(frm){var objForm;var submitDisabledElements=false;if(arguments.length > 1&&arguments[1]==true)
submitDisabledElements=true;var prefix="";if(arguments.length > 2)
prefix=arguments[2];if(typeof(frm)=="string")
objForm=this.$(frm);else
objForm=frm;var sXml="<xjxquery><q>";if(objForm&&objForm.tagName=='FORM'){var formElements=objForm.elements;for(var i=0;i < formElements.length;i++){if(!formElements[i].name)
continue;if(formElements[i].name.substring(0,prefix.length)!=prefix)
continue;if(formElements[i].type&&(formElements[i].type=='radio'||formElements[i].type=='checkbox')&&formElements[i].checked==false)
continue;if(formElements[i].disabled&&formElements[i].disabled==true&&submitDisabledElements==false)
continue;var name=formElements[i].name;if(name){if(sXml!='<xjxquery><q>')
sXml+='&';if(formElements[i].type=='select-multiple'){for(var j=0;j < formElements[i].length;j++){if(formElements[i].options[j].selected==true)
sXml+=name+"="+encodeURIComponent(formElements[i].options[j].value)+"&";}
}
else{sXml+=name+"="+encodeURIComponent(formElements[i].value);}
}
}
}
sXml+="</q></xjxquery>";return sXml;}
this.objectToXML=function(obj){var sXml="<xjxobj>";for(i in obj){try{if(i=='constructor')
continue;if(obj[i]&&typeof(obj[i])=='function')
continue;var key=i;var value=obj[i];if(value&&typeof(value)=="object"&&this.depth <=50){this.depth++;value=this.objectToXML(value);this.depth--;}
sXml+="<e><k>"+key+"</k><v>"+value+"</v></e>";}
catch(e){if(xajaxDebug)this.DebugMessage(e.name+": "+e.message);}
}
sXml+="</xjxobj>";return sXml;}
this._nodeToObject=function(node){if(node.nodeName=='#cdata-section'){var data="";for(var j=0;j<node.parentNode.childNodes.length;j++){data+=node.parentNode.childNodes[j].data;}
return data;}
else if(node.nodeName=='xjxobj'){var data=new Array();for(var j=0;j<node.childNodes.length;j++){var child=node.childNodes[j];var key;var value;if(child.nodeName=='e'){for(var k=0;k<child.childNodes.length;k++){if(child.childNodes[k].nodeName=='k'){key=child.childNodes[k].firstChild.data;}
else if(child.childNodes[k].nodeName=='v'){value=this._nodeToObject(child.childNodes[k].firstChild);}
}
if(key!=null&&value!=null){data[key]=value;key=value=null;}
}
}
return data;}
}
this.loadingFunction=function(){};this.doneLoadingFunction=function(){};var loadingTimeout;this.call=function(sFunction,aArgs,sRequestType){var i,r,postData;if(document.body&&xajaxWaitCursor)
document.body.style.cursor='wait';if(xajaxStatusMessages==true)window.status='Sending Request...';clearTimeout(loadingTimeout);loadingTimeout=setTimeout("xajax.loadingFunction();",400);if(xajaxDebug)this.DebugMessage("Starting xajax...");if(sRequestType==null){var xajaxRequestType=xajaxDefinedPost;}
else{var xajaxRequestType=sRequestType;}
var uri=xajaxRequestUri;var value;switch(xajaxRequestType){case xajaxDefinedGet:{var uriGet=uri.indexOf("?")==-1?"?xajax="+encodeURIComponent(sFunction):"&xajax="+encodeURIComponent(sFunction);if(aArgs){for(i=0;i<aArgs.length;i++){value=aArgs[i];if(typeof(value)=="object")
value=this.objectToXML(value);uriGet+="&xajaxargs[]="+encodeURIComponent(value);}
}
uriGet+="&xajaxr="+new Date().getTime();uri+=uriGet;postData=null;}break;case xajaxDefinedPost:{postData="xajax="+encodeURIComponent(sFunction);postData+="&xajaxr="+new Date().getTime();if(aArgs){for(i=0;i <aArgs.length;i++){value=aArgs[i];if(typeof(value)=="object")
value=this.objectToXML(value);postData=postData+"&xajaxargs[]="+encodeURIComponent(value);}
}
}break;default:
alert("Illegal request type: "+xajaxRequestType);return false;break;}
r=this.getRequestObject();if(!r)return false;r.open(xajaxRequestType==xajaxDefinedGet?"GET":"POST",uri,true);if(xajaxRequestType==xajaxDefinedPost){try{r.setRequestHeader("Method","POST "+uri+" HTTP/1.1");r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");}
catch(e){alert("Your browser does not appear to support asynchronous requests using POST.");return false;}
}
r.onreadystatechange=function(){if(r.readyState!=4)
return;if(r.status==200){if(xajaxDebug)xajax.DebugMessage("Received:\n"+r.responseText);if(r.responseXML&&r.responseXML.documentElement)
xajax.processResponse(r.responseXML);else{var errorString="Error: the XML response that was returned from the server is invalid.";errorString+="\nReceived:\n"+r.responseText;trimmedResponseText=r.responseText.replace(/^\s+/g,"");trimmedResponseText=trimmedResponseText.replace(/\s+$/g,"");if(trimmedResponseText!=r.responseText)
errorString+="\nYou have whitespace in your response.";alert(errorString);document.body.style.cursor='default';if(xajaxStatusMessages==true)window.status='Invalid XML response error';}
}
else{if(xajax.responseErrorsForAlert.containsValue(r.status)){var errorString="Error: the server returned the following HTTP status: "+r.status;errorString+="\nReceived:\n"+r.responseText;alert(errorString);}
document.body.style.cursor='default';if(xajaxStatusMessages==true)window.status='Invalid XML response error';}
delete r;r=null;}
if(xajaxDebug)this.DebugMessage("Calling "+sFunction+" uri="+uri+" (post:"+postData+")");r.send(postData);if(xajaxStatusMessages==true)window.status='Waiting for data...';delete r;return true;}
this.getBrowserHTML=function(html){tmpXajax=this.$(this.workId);if(!tmpXajax){tmpXajax=document.createElement("div");tmpXajax.setAttribute('id',this.workId);tmpXajax.style.display="none";tmpXajax.style.visibility="hidden";document.body.appendChild(tmpXajax);}
tmpXajax.innerHTML=html;var browserHTML=tmpXajax.innerHTML;tmpXajax.innerHTML='';return browserHTML;}
this.willChange=function(element,attribute,newData){if(!document.body){return true;}
if(attribute=="innerHTML"){newData=this.getBrowserHTML(newData);}
elementObject=this.$(element);if(elementObject){var oldData;eval("oldData=this.$('"+element+"')."+attribute);if(newData!==oldData)
return true;}
return false;}
this.viewSource=function(){return "<html>"+document.getElementsByTagName("HTML")[0].innerHTML+"</html>";}
this.processResponse=function(xml){clearTimeout(loadingTimeout);this.doneLoadingFunction();if(xajaxStatusMessages==true)window.status='Processing...';var tmpXajax=null;xml=xml.documentElement;if(xml==null)
return;var skipCommands=0;for(var i=0;i<xml.childNodes.length;i++){if(skipCommands > 0){skipCommands--;continue;}
if(xml.childNodes[i].nodeName=="cmd"){var cmd;var id;var property;var data;var search;var type;var before;var objElement=null;for(var j=0;j<xml.childNodes[i].attributes.length;j++){if(xml.childNodes[i].attributes[j].name=="n"){cmd=xml.childNodes[i].attributes[j].value;}
else if(xml.childNodes[i].attributes[j].name=="t"){id=xml.childNodes[i].attributes[j].value;}
else if(xml.childNodes[i].attributes[j].name=="p"){property=xml.childNodes[i].attributes[j].value;}
else if(xml.childNodes[i].attributes[j].name=="c"){type=xml.childNodes[i].attributes[j].value;}
}
if(xml.childNodes[i].childNodes.length > 1&&xml.childNodes[i].firstChild.nodeName=="#cdata-section"){data="";for(var j=0;j<xml.childNodes[i].childNodes.length;j++){data+=xml.childNodes[i].childNodes[j].data;}
}
else if(xml.childNodes[i].firstChild&&xml.childNodes[i].firstChild.nodeName=='xjxobj'){data=this._nodeToObject(xml.childNodes[i].firstChild);objElement="XJX_SKIP";}
else if(xml.childNodes[i].childNodes.length > 1){for(var j=0;j<xml.childNodes[i].childNodes.length;j++){if(xml.childNodes[i].childNodes[j].childNodes.length > 1&&xml.childNodes[i].childNodes[j].firstChild.nodeName=="#cdata-section"){var internalData="";for(var k=0;k<xml.childNodes[i].childNodes[j].childNodes.length;k++){internalData+=xml.childNodes[i].childNodes[j].childNodes[k].nodeValue;}
}else{var internalData=xml.childNodes[i].childNodes[j].firstChild.nodeValue;}
if(xml.childNodes[i].childNodes[j].nodeName=="s"){search=internalData;}
if(xml.childNodes[i].childNodes[j].nodeName=="r"){data=internalData;}
}
}
else if(xml.childNodes[i].firstChild)
data=xml.childNodes[i].firstChild.nodeValue;else
data="";if(objElement!="XJX_SKIP")objElement=this.$(id);var cmdFullname;try{if(cmd=="cc"){cmdFullname="addConfirmCommands";var confirmResult=confirm(data);if(!confirmResult){skipCommands=id;}
}
if(cmd=="al"){cmdFullname="addAlert";alert(data);}
else if(cmd=="js"){cmdFullname="addScript/addRedirect";eval(data);}
else if(cmd=="jc"){cmdFullname="addScriptCall";var scr=id+'(';if(data[0]!=null){scr+='data[0]';for(var l=1;l<data.length;l++){scr+=',data['+l+']';}
}
scr+=');';eval(scr);}
else if(cmd=="in"){cmdFullname="addIncludeScript";this.include(data);}
else if(cmd=="as"){cmdFullname="addAssign/addClear";if(this.willChange(id,property,data)){eval("objElement."+property+"=data;");}
}
else if(cmd=="ap"){cmdFullname="addAppend";eval("objElement."+property+"+=data;");}
else if(cmd=="pp"){cmdFullname="addPrepend";eval("objElement."+property+"=data+objElement."+property);}
else if(cmd=="rp"){cmdFullname="addReplace";this.replace(id,property,search,data)
}
else if(cmd=="rm"){cmdFullname="addRemove";this.remove(id);}
else if(cmd=="ce"){cmdFullname="addCreate";this.create(id,data,property);}
else if(cmd=="ie"){cmdFullname="addInsert";this.insert(id,data,property);}
else if(cmd=="ia"){cmdFullname="addInsertAfter";this.insertAfter(id,data,property);}
else if(cmd=="ci"){cmdFullname="addCreateInput";this.createInput(id,type,data,property);}
else if(cmd=="ii"){cmdFullname="addInsertInput";this.insertInput(id,type,data,property);}
else if(cmd=="iia"){cmdFullname="addInsertInputAfter";this.insertInputAfter(id,type,data,property);}
else if(cmd=="ev"){cmdFullname="addEvent";property=this.addOnPrefix(property);eval("this.$('"+id+"')."+property+"= function(){"+data+";}");}
else if(cmd=="ah"){cmdFullname="addHandler";this.addHandler(id,property,data);}
else if(cmd=="rh"){cmdFullname="addRemoveHandler";this.removeHandler(id,property,data);}
}
catch(e){if(xajaxDebug)
alert("While trying to '"+cmdFullname+"' (command number "+i+"), the following error occured:\n"
+e.name+": "+e.message+"\n"
+(id&&!objElement?"Object with id='"+id+"' wasn't found.\n":""));}
delete objElement;delete cmd;delete cmdFullname;delete id;delete property;delete search;delete data;delete type;delete before;delete internalData;delete j;delete k;}
}
delete xml;delete i;document.body.style.cursor='default';if(xajaxStatusMessages==true)window.status='Done';}
}
var xajax=new Xajax();xajaxLoaded=true;

View File

@ -1,795 +0,0 @@
/* xajax Javascript library :: version 0.2.4 */
Array.prototype.containsValue = function(valueToCheck)
{
for (var i=0;i<this.length;i++) {
if (this[i] == valueToCheck) return true;
}
return false;
}
function Xajax()
{
this.DebugMessage = function(text)
{
if (text.length > 1000) text = text.substr(0,1000)+"...\n[long response]\n...";
try {
if (this.debugWindow == undefined || this.debugWindow.closed == true) {
this.debugWindow = window.open('about:blank', 'xajax-debug', 'width=800,height=600,scrollbars=1,resizable,status');
this.debugWindow.document.write('<html><head><title>Xajax debug output</title></head><body><h2>Xajax debug output</h2><div id="debugTag"></div></body></html>');
}
text = text.replace(/&/g, "&amp;")
text = text.replace(/</g, "&lt;")
text = text.replace(/>/g, "&gt;")
debugTag = this.debugWindow.document.getElementById('debugTag');
debugTag.innerHTML = ('<b>'+(new Date()).toString()+'</b>: ' + text + '<hr/>') + debugTag.innerHTML;
} catch (e) {
alert("Xajax Debug:\n " + text);
}
};
this.workId = 'xajaxWork'+ new Date().getTime();
this.depth = 0;
this.responseErrorsForAlert = ["400","401","402","403","404","500","501","502","503"];
//Get the XMLHttpRequest Object
this.getRequestObject = function()
{
if (xajaxDebug) this.DebugMessage("Initializing Request Object..");
var req = null;
if (typeof XMLHttpRequest != "undefined")
req = new XMLHttpRequest();
if (!req && typeof ActiveXObject != "undefined")
{
try
{
req=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
req=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e2)
{
try {
req=new ActiveXObject("Msxml2.XMLHTTP.4.0");
}
catch (e3)
{
req=null;
}
}
}
}
if(!req && window.createRequest)
req = window.createRequest();
if (!req) this.DebugMessage("Request Object Instantiation failed.");
return req;
}
// xajax.$() is shorthand for document.getElementById()
this.$ = function(sId)
{
if (!sId) {
return null;
}
var returnObj = document.getElementById(sId);
if (!returnObj && document.all) {
returnObj = document.all[sId];
}
if (xajaxDebug && !returnObj && sId != this.workId) {
this.DebugMessage("Element with the id \"" + sId + "\" not found.");
}
return returnObj;
}
// xajax.include(sFileName) dynamically includes an external javascript file
this.include = function(sFileName)
{
var objHead = document.getElementsByTagName('head');
var objScript = document.createElement('script');
objScript.type = 'text/javascript';
objScript.src = sFileName;
objHead[0].appendChild(objScript);
}
this.stripOnPrefix = function(sEventName)
{
sEventName = sEventName.toLowerCase();
if (sEventName.indexOf('on') == 0)
{
sEventName = sEventName.replace(/on/,'');
}
return sEventName;
}
this.addOnPrefix = function(sEventName)
{
sEventName = sEventName.toLowerCase();
if (sEventName.indexOf('on') != 0)
{
sEventName = 'on' + sEventName;
}
return sEventName;
}
// xajax.addHandler adds an event handler to an element
this.addHandler = function(sElementId, sEvent, sFunctionName)
{
if (window.addEventListener)
{
sEvent = this.stripOnPrefix(sEvent);
eval("this.$('"+sElementId+"').addEventListener('"+sEvent+"',"+sFunctionName+",false);");
}
else
{
sAltEvent = this.addOnPrefix(sEvent);
eval("this.$('"+sElementId+"').attachEvent('"+sAltEvent+"',"+sFunctionName+",false);");
}
}
// xajax.removeHandler removes an event handler from an element
this.removeHandler = function(sElementId, sEvent, sFunctionName)
{
if (window.addEventListener)
{
sEvent = this.stripOnPrefix(sEvent);
eval("this.$('"+sElementId+"').removeEventListener('"+sEvent+"',"+sFunctionName+",false);");
}
else
{
sAltEvent = this.addOnPrefix(sEvent);
eval("this.$('"+sElementId+"').detachEvent('"+sAltEvent+"',"+sFunctionName+",false);");
}
}
// xajax.create creates a new child node under a parent
this.create = function(sParentId, sTag, sId)
{
var objParent = this.$(sParentId);
objElement = document.createElement(sTag);
objElement.setAttribute('id',sId);
if (objParent)
objParent.appendChild(objElement);
}
// xajax.insert inserts a new node before another node
this.insert = function(sBeforeId, sTag, sId)
{
var objSibling = this.$(sBeforeId);
objElement = document.createElement(sTag);
objElement.setAttribute('id',sId);
objSibling.parentNode.insertBefore(objElement, objSibling);
}
// xajax.insertAfter inserts a new node after another node
this.insertAfter = function(sAfterId, sTag, sId)
{
var objSibling = this.$(sAfterId);
objElement = document.createElement(sTag);
objElement.setAttribute('id',sId);
objSibling.parentNode.insertBefore(objElement, objSibling.nextSibling);
}
this.getInput = function(sType, sName, sId)
{
var Obj;
if (!window.addEventListener)
{
Obj = document.createElement('<input type="'+sType+'" id="'+sId+'" name="'+sName+'">');
}
else
{
Obj = document.createElement('input');
Obj.setAttribute('type',sType);
Obj.setAttribute('name',sName);
Obj.setAttribute('id',sId);
}
return Obj;
}
// xajax.createInput creates a new input node under a parent
this.createInput = function(sParentId, sType, sName, sId)
{
var objParent = this.$(sParentId);
var objElement = this.getInput(sType, sName, sId);
if (objParent && objElement)
objParent.appendChild(objElement);
}
// xajax.insertInput creates a new input node before another node
this.insertInput = function(sBeforeId, sType, sName, sId)
{
var objSibling = this.$(sBeforeId);
var objElement = this.getInput(sType, sName, sId);
if (objElement && objSibling && objSibling.parentNode)
objSibling.parentNode.insertBefore(objElement, objSibling);
}
// xajax.insertInputAfter creates a new input node after another node
this.insertInputAfter = function(sAfterId, sType, sName, sId)
{
var objSibling = this.$(sAfterId);
var objElement = this.getInput(sType, sName, sId);
if (objElement && objSibling && objSibling.parentNode) {
objSibling.parentNode.insertBefore(objElement, objSibling.nextSibling);
}
}
// xajax.remove deletes an element
this.remove = function(sId)
{
objElement = this.$(sId);
if (objElement && objElement.parentNode && objElement.parentNode.removeChild)
{
objElement.parentNode.removeChild(objElement);
}
}
//xajax.replace searches for text in an attribute of an element and replaces it
//with a different text
this.replace = function(sId,sAttribute,sSearch,sReplace)
{
var bFunction = false;
if (sAttribute == "innerHTML")
sSearch = this.getBrowserHTML(sSearch);
eval("var txt=this.$('"+sId+"')."+sAttribute);
if (typeof txt == "function")
{
txt = txt.toString();
bFunction = true;
}
if (txt.indexOf(sSearch)>-1)
{
var newTxt = '';
while (txt.indexOf(sSearch) > -1)
{
x = txt.indexOf(sSearch)+sSearch.length+1;
newTxt += txt.substr(0,x).replace(sSearch,sReplace);
txt = txt.substr(x,txt.length-x);
}
newTxt += txt;
if (bFunction)
{
eval('this.$("'+sId+'").'+sAttribute+'=newTxt;');
}
else if (this.willChange(sId,sAttribute,newTxt))
{
eval('this.$("'+sId+'").'+sAttribute+'=newTxt;');
}
}
}
// xajax.getFormValues() builds a query string XML message from the elements of a form object
// * The first argument is the id of the form
// * The second argument (optional) can be set to true if you want to submit disabled elements
// * The third argument (optional) allows you to specify a string prefix that a form element
// name must contain if you want that element to be submitted
this.getFormValues = function(frm)
{
var objForm;
var submitDisabledElements = false;
if (arguments.length > 1 && arguments[1] == true)
submitDisabledElements = true;
var prefix="";
if(arguments.length > 2)
prefix = arguments[2];
if (typeof(frm) == "string")
objForm = this.$(frm);
else
objForm = frm;
var sXml = "<xjxquery><q>";
if (objForm && objForm.tagName == 'FORM')
{
var formElements = objForm.elements;
for( var i=0; i < formElements.length; i++)
{
if (!formElements[i].name)
continue;
if (formElements[i].name.substring(0, prefix.length) != prefix)
continue;
if (formElements[i].type && (formElements[i].type == 'radio' || formElements[i].type == 'checkbox') && formElements[i].checked == false)
continue;
if (formElements[i].disabled && formElements[i].disabled == true && submitDisabledElements == false)
continue;
var name = formElements[i].name;
if (name)
{
if (sXml != '<xjxquery><q>')
sXml += '&';
if(formElements[i].type=='select-multiple')
{
for (var j = 0; j < formElements[i].length; j++)
{
if (formElements[i].options[j].selected == true)
sXml += name+"="+encodeURIComponent(formElements[i].options[j].value)+"&";
}
}
else
{
sXml += name+"="+encodeURIComponent(formElements[i].value);
}
}
}
}
sXml +="</q></xjxquery>";
return sXml;
}
// Generates an XML message that xajax can understand from a javascript object
this.objectToXML = function(obj)
{
var sXml = "<xjxobj>";
for (i in obj)
{
try
{
if (i == 'constructor')
continue;
if (obj[i] && typeof(obj[i]) == 'function')
continue;
var key = i;
var value = obj[i];
if (value && typeof(value)=="object" && this.depth <= 50)
{
this.depth++;
value = this.objectToXML(value);
this.depth--;
}
sXml += "<e><k>"+key+"</k><v>"+value+"</v></e>";
}
catch(e)
{
if (xajaxDebug) this.DebugMessage(e.name+": "+e.message);
}
}
sXml += "</xjxobj>";
return sXml;
}
// unserializes data structure from xajaxResponse::_buildObjXml()
this._nodeToObject = function(node) {
// parentNode here is weird, have to tune
if (node.nodeName == '#cdata-section') {
var data = "";
for (var j=0; j<node.parentNode.childNodes.length; j++) {
data += node.parentNode.childNodes[j].data;
}
return data;
}
else if (node.nodeName == 'xjxobj') {
var data = new Array();
for (var j=0; j<node.childNodes.length; j++) {
var child = node.childNodes[j];
var key;
var value;
if (child.nodeName == 'e') {
for (var k=0; k<child.childNodes.length; k++) {
if (child.childNodes[k].nodeName == 'k') {
key = child.childNodes[k].firstChild.data;
}
else if (child.childNodes[k].nodeName == 'v') {
value = this._nodeToObject(child.childNodes[k].firstChild);
}
}
if (key != null && value != null) {
data[key] = value;
key = value = null;
}
}
}
return data;
}
}
this.loadingFunction = function(){};
this.doneLoadingFunction = function(){};
var loadingTimeout;
// Sends a XMLHttpRequest to call the specified PHP function on the server
// * sRequestType is optional -- defaults to POST
this.call = function(sFunction, aArgs, sRequestType)
{
var i,r,postData;
if (document.body && xajaxWaitCursor)
document.body.style.cursor = 'wait';
if (xajaxStatusMessages == true) window.status = 'Sending Request...';
clearTimeout(loadingTimeout);
loadingTimeout = setTimeout("xajax.loadingFunction();",400);
if (xajaxDebug) this.DebugMessage("Starting xajax...");
if (sRequestType == null) {
var xajaxRequestType = xajaxDefinedPost;
}
else {
var xajaxRequestType = sRequestType;
}
var uri = xajaxRequestUri;
var value;
switch(xajaxRequestType)
{
case xajaxDefinedGet:{
var uriGet = uri.indexOf("?")==-1?"?xajax="+encodeURIComponent(sFunction):"&xajax="+encodeURIComponent(sFunction);
if (aArgs) {
for (i = 0; i<aArgs.length; i++)
{
value = aArgs[i];
if (typeof(value)=="object")
value = this.objectToXML(value);
uriGet += "&xajaxargs[]="+encodeURIComponent(value);
}
}
uriGet += "&xajaxr=" + new Date().getTime();
uri += uriGet;
postData = null;
} break;
case xajaxDefinedPost:{
postData = "xajax="+encodeURIComponent(sFunction);
postData += "&xajaxr="+new Date().getTime();
if (aArgs) {
for (i = 0; i <aArgs.length; i++)
{
value = aArgs[i];
if (typeof(value)=="object")
value = this.objectToXML(value);
postData = postData+"&xajaxargs[]="+encodeURIComponent(value);
}
}
} break;
default:
alert("Illegal request type: " + xajaxRequestType); return false; break;
}
r = this.getRequestObject();
if (!r) return false;
r.open(xajaxRequestType==xajaxDefinedGet?"GET":"POST", uri, true);
if (xajaxRequestType == xajaxDefinedPost)
{
try
{
r.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
catch(e)
{
alert("Your browser does not appear to support asynchronous requests using POST.");
return false;
}
}
r.onreadystatechange = function()
{
if (r.readyState != 4)
return;
if (r.status==200)
{
if (xajaxDebug) xajax.DebugMessage("Received:\n" + r.responseText);
if (r.responseXML && r.responseXML.documentElement)
xajax.processResponse(r.responseXML);
else {
var errorString = "Error: the XML response that was returned from the server is invalid.";
errorString += "\nReceived:\n" + r.responseText;
trimmedResponseText = r.responseText.replace( /^\s+/g, "" );// strip leading space
trimmedResponseText = trimmedResponseText.replace( /\s+$/g, "" );// strip trailing
if (trimmedResponseText != r.responseText)
errorString += "\nYou have whitespace in your response.";
alert(errorString);
document.body.style.cursor = 'default';
if (xajaxStatusMessages == true) window.status = 'Invalid XML response error';
}
}
else {
if (xajax.responseErrorsForAlert.containsValue(r.status)) {
var errorString = "Error: the server returned the following HTTP status: " + r.status;
errorString += "\nReceived:\n" + r.responseText;
alert(errorString);
}
document.body.style.cursor = 'default';
if (xajaxStatusMessages == true) window.status = 'Invalid XML response error';
}
delete r;
r = null;
}
if (xajaxDebug) this.DebugMessage("Calling "+sFunction +" uri="+uri+" (post:"+ postData +")");
r.send(postData);
if (xajaxStatusMessages == true) window.status = 'Waiting for data...';
delete r;
return true;
}
//Gets the text as it would be if it were being retrieved from
//the innerHTML property in the current browser
this.getBrowserHTML = function(html)
{
tmpXajax = this.$(this.workId);
if (!tmpXajax)
{
tmpXajax = document.createElement("div");
tmpXajax.setAttribute('id',this.workId);
tmpXajax.style.display = "none";
tmpXajax.style.visibility = "hidden";
document.body.appendChild(tmpXajax);
}
tmpXajax.innerHTML = html;
var browserHTML = tmpXajax.innerHTML;
tmpXajax.innerHTML = '';
return browserHTML;
}
// Tests if the new Data is the same as the extant data
this.willChange = function(element, attribute, newData)
{
if (!document.body)
{
return true;
}
if (attribute == "innerHTML")
{
newData = this.getBrowserHTML(newData);
}
elementObject = this.$(element);
if (elementObject) {
var oldData;
eval("oldData=this.$('"+element+"')."+attribute);
if (newData !== oldData)
return true;
}
return false;
}
//Returns the source code of the page after it's been modified by xajax
this.viewSource = function()
{
return "<html>"+document.getElementsByTagName("HTML")[0].innerHTML+"</html>";
}
//Process XML xajaxResponses returned from the request
this.processResponse = function(xml)
{
clearTimeout(loadingTimeout);
this.doneLoadingFunction();
if (xajaxStatusMessages == true) window.status = 'Processing...';
var tmpXajax = null;
xml = xml.documentElement;
if (xml == null)
return;
var skipCommands = 0;
for (var i=0; i<xml.childNodes.length; i++)
{
if (skipCommands > 0) {
skipCommands--;
continue;
}
if (xml.childNodes[i].nodeName == "cmd")
{
var cmd;
var id;
var property;
var data;
var search;
var type;
var before;
var objElement = null;
for (var j=0; j<xml.childNodes[i].attributes.length; j++)
{
if (xml.childNodes[i].attributes[j].name == "n")
{
cmd = xml.childNodes[i].attributes[j].value;
}
else if (xml.childNodes[i].attributes[j].name == "t")
{
id = xml.childNodes[i].attributes[j].value;
}
else if (xml.childNodes[i].attributes[j].name == "p")
{
property = xml.childNodes[i].attributes[j].value;
}
else if (xml.childNodes[i].attributes[j].name == "c")
{
type = xml.childNodes[i].attributes[j].value;
}
}
if (xml.childNodes[i].childNodes.length > 1 && xml.childNodes[i].firstChild.nodeName == "#cdata-section")
{
data = "";
for (var j=0; j<xml.childNodes[i].childNodes.length; j++)
{
data += xml.childNodes[i].childNodes[j].data;
}
}
else if (xml.childNodes[i].firstChild && xml.childNodes[i].firstChild.nodeName == 'xjxobj') {
data = this._nodeToObject(xml.childNodes[i].firstChild);
objElement = "XJX_SKIP";
}
else if (xml.childNodes[i].childNodes.length > 1)
{
for (var j=0; j<xml.childNodes[i].childNodes.length; j++)
{
if (xml.childNodes[i].childNodes[j].childNodes.length > 1 && xml.childNodes[i].childNodes[j].firstChild.nodeName == "#cdata-section")
{
var internalData = "";
for (var k=0; k<xml.childNodes[i].childNodes[j].childNodes.length;k++)
{
internalData+=xml.childNodes[i].childNodes[j].childNodes[k].nodeValue;
}
} else {
var internalData = xml.childNodes[i].childNodes[j].firstChild.nodeValue;
}
if (xml.childNodes[i].childNodes[j].nodeName == "s")
{
search = internalData;
}
if (xml.childNodes[i].childNodes[j].nodeName == "r")
{
data = internalData;
}
}
}
else if (xml.childNodes[i].firstChild)
data = xml.childNodes[i].firstChild.nodeValue;
else
data = "";
if (objElement != "XJX_SKIP") objElement = this.$(id);
var cmdFullname;
try
{
if (cmd=="cc") {
cmdFullname = "addConfirmCommands";
var confirmResult = confirm(data);
if (!confirmResult) {
skipCommands = id;
}
}
if (cmd=="al")
{
cmdFullname = "addAlert";
alert(data);
}
else if (cmd=="js")
{
cmdFullname = "addScript/addRedirect";
eval(data);
}
else if (cmd=="jc")
{
cmdFullname = "addScriptCall";
var scr = id + '(';
if (data[0] != null) {
scr += 'data[0]';
for (var l=1; l<data.length; l++) {
scr += ',data['+l+']';
}
}
scr += ');';
eval(scr);
}
else if (cmd=="in")
{
cmdFullname = "addIncludeScript";
this.include(data);
}
else if (cmd=="as")
{
cmdFullname = "addAssign/addClear";
if (this.willChange(id,property,data))
{
eval("objElement."+property+"=data;");
}
}
else if (cmd=="ap")
{
cmdFullname = "addAppend";
eval("objElement."+property+"+=data;");
}
else if (cmd=="pp")
{
cmdFullname = "addPrepend";
eval("objElement."+property+"=data+objElement."+property);
}
else if (cmd=="rp")
{
cmdFullname = "addReplace";
this.replace(id,property,search,data)
}
else if (cmd=="rm")
{
cmdFullname = "addRemove";
this.remove(id);
}
else if (cmd=="ce")
{
cmdFullname = "addCreate";
this.create(id,data,property);
}
else if (cmd=="ie")
{
cmdFullname = "addInsert";
this.insert(id,data,property);
}
else if (cmd=="ia")
{
cmdFullname = "addInsertAfter";
this.insertAfter(id,data,property);
}
else if (cmd=="ci")
{
cmdFullname = "addCreateInput";
this.createInput(id,type,data,property);
}
else if (cmd=="ii")
{
cmdFullname = "addInsertInput";
this.insertInput(id,type,data,property);
}
else if (cmd=="iia")
{
cmdFullname = "addInsertInputAfter";
this.insertInputAfter(id,type,data,property);
}
else if (cmd=="ev")
{
cmdFullname = "addEvent";
property = this.addOnPrefix(property);
eval("this.$('"+id+"')."+property+"= function(){"+data+";}");
}
else if (cmd=="ah")
{
cmdFullname = "addHandler";
this.addHandler(id, property, data);
}
else if (cmd=="rh")
{
cmdFullname = "addRemoveHandler";
this.removeHandler(id, property, data);
}
}
catch(e)
{
if (xajaxDebug)
alert("While trying to '"+cmdFullname+"' (command number "+i+"), the following error occured:\n"
+ e.name+": "+e.message+"\n"
+ (id&&!objElement?"Object with id='"+id+"' wasn't found.\n":""));
}
delete objElement;
delete cmd;
delete cmdFullname;
delete id;
delete property;
delete search;
delete data;
delete type;
delete before;
delete internalData;
delete j;
delete k;
}
}
delete xml;
delete i;
document.body.style.cursor = 'default';
if (xajaxStatusMessages == true) window.status = 'Done';
}
}
var xajax = new Xajax();
xajaxLoaded = true;

View File

@ -11,7 +11,7 @@
* @version $Id$
*/
require_once('./phpgwapi/inc/xajax.inc.php');
require_once('./phpgwapi/inc/xajax/xajax_core/xajax.inc.php');
/**
* callback if the session-check fails, redirects via xajax to login.php
@ -22,15 +22,15 @@ require_once('./phpgwapi/inc/xajax.inc.php');
function xajax_redirect(&$anon_account)
{
// now the header is included, we can set the charset
$GLOBALS['xajax']->setCharEncoding($GLOBALS['egw']->translation->charset());
define('XAJAX_DEFAULT_CHAR_ENCODING',$GLOBALS['egw']->translation->charset());
$GLOBALS['xajax']->configure('characterEncoding',translation::charset());
define('XAJAX_DEFAULT_CHAR_ENCODING',translation::charset());
$response = new xajaxResponse();
$response->addScript("location.href='".$GLOBALS['egw_info']['server']['webserver_url'].'/login.php?cd=10'."';");
header('Content-type: text/xml; charset='.$GLOBALS['egw']->translation->charset());
header('Content-type: text/xml; charset='.translation::charset());
echo $response->getXML();
$GLOBALS['egw']->common->egw_exit();
common::egw_exit();
}
/**
@ -44,11 +44,11 @@ function ajax_exception_handler(Exception $e)
{
$response = new xajaxResponse();
$response->addAlert($e->getMessage()."\n\n".$e->getTraceAsString());
header('Content-type: text/xml; charset='.(is_object($GLOBALS['egw'])?$GLOBALS['egw']->translation->charset():'utf-8'));
header('Content-type: text/xml; charset='.(is_object($GLOBALS['egw'])?translation::charset():'utf-8'));
echo $response->getXML();
if (is_object($GLOBALS['egw']))
{
$GLOBALS['egw']->common->egw_exit();
common::egw_exit();
}
exit;
}
@ -61,7 +61,7 @@ set_exception_handler('ajax_exception_handler');
*
* Includs the header and set's up the eGW enviroment.
*
* @return string with XML response from xajaxResponse::getXML()
* @return xajaxResponse object
*/
function doXMLHTTP()
{
@ -109,8 +109,8 @@ function doXMLHTTP()
include('./header.inc.php');
// now the header is included, we can set the charset
$GLOBALS['xajax']->setCharEncoding($GLOBALS['egw']->translation->charset());
define('XAJAX_DEFAULT_CHAR_ENCODING',$GLOBALS['egw']->translation->charset());
$GLOBALS['xajax']->configure('characterEncoding',translation::charset());
define('XAJAX_DEFAULT_CHAR_ENCODING',translation::charset());
switch($handler)
{
@ -147,7 +147,8 @@ function doXMLHTTP()
return call_user_func_array(array(&$ajaxClass, $functionName), (array)$argList );
}
$xajax = new xajax($_SERVER['PHP_SELF']);
$xajax->registerFunction('doXMLHTTP');
$xajax->processRequests();
$xajax = new xajax();
//$xajax->configure('requestURI',$_SERVER['PHP_SELF']);
$xajax->register(XAJAX_FUNCTION,'doXMLHTTP');
$xajax->register(XAJAX_FUNCTION,'doXMLHTTP',array('mode' => "'synchronous'",'alias' => 'doXMLHTTPsync'));
$xajax->processRequest();