Initial commit: Kimai TMS
Kimai time management system (PHP 5.6 / MySQL) with custom extensions: - Budget tracking (ki_budget) - Change request form (ki_changerequest) - Invoice generation (ki_invoice) - Expense tracking (ki_expenses) - Flexi time (ki_flexitime) - Export, admin panel, timesheets, tasks, summary Database: ~900K time entries, 2,000+ users, 439 projects. Config: includes/autoconf.php — localhost/kimai/kimai
This commit is contained in:
73
libraries/xajax/xajax_core/legacy.inc.php
Normal file
73
libraries/xajax/xajax_core/legacy.inc.php
Normal 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); }
|
||||
}
|
||||
@@ -0,0 +1,224 @@
|
||||
<?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-2006 by 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 method
|
||||
if ("__call" == $sMethodName)
|
||||
$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)
|
||||
{
|
||||
return is_a($this->obj, $sClass);
|
||||
}
|
||||
|
||||
/*
|
||||
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
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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-2006 by 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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,232 @@
|
||||
<?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-2006 by 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));
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,218 @@
|
||||
<?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-2006 by 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";
|
||||
|
||||
print $sCrLf;
|
||||
print '<';
|
||||
print 'script type="text/javascript" ';
|
||||
print $this->sDefer;
|
||||
print 'charset="UTF-8">';
|
||||
print $sCrLf;
|
||||
print '/* <';
|
||||
print '![CDATA[ */';
|
||||
print $sCrLf;
|
||||
|
||||
foreach(array_keys($this->aCallableObjects) as $sKey)
|
||||
$this->aCallableObjects[$sKey]->generateClientScript($this->sXajaxPrefix);
|
||||
|
||||
print '/* ]]> */';
|
||||
print $sCrLf;
|
||||
print '<';
|
||||
print '/script>';
|
||||
print $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);
|
||||
@@ -0,0 +1,338 @@
|
||||
<?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-2006 by 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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
/*
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
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";
|
||||
|
||||
print $sCrLf;
|
||||
print '<';
|
||||
print 'script type="text/javascript" ';
|
||||
print $this->sDefer;
|
||||
print 'charset="UTF-8">';
|
||||
print $sCrLf;
|
||||
print '/* <';
|
||||
print '![CDATA[ */';
|
||||
print $sCrLf;
|
||||
print 'try { if (undefined == xajax.config) xajax.config = {}; } catch (e) { xajax = {}; xajax.config = {}; };';
|
||||
print $sCrLf;
|
||||
print 'xajax.config.requestURI = "';
|
||||
print $this->sRequestURI;
|
||||
print '";';
|
||||
print $sCrLf;
|
||||
print 'xajax.config.statusMessages = ';
|
||||
print $this->sStatusMessages;
|
||||
print ';';
|
||||
print $sCrLf;
|
||||
print 'xajax.config.waitCursor = ';
|
||||
print $this->sWaitCursor;
|
||||
print ';';
|
||||
print $sCrLf;
|
||||
print 'xajax.config.version = "';
|
||||
print $this->sVersion;
|
||||
print '";';
|
||||
print $sCrLf;
|
||||
print 'xajax.config.legacy = false;';
|
||||
print $sCrLf;
|
||||
print 'xajax.config.defaultMode = "';
|
||||
print $this->sDefaultMode;
|
||||
print '";';
|
||||
print $sCrLf;
|
||||
print 'xajax.config.defaultMethod = "';
|
||||
print $this->sDefaultMethod;
|
||||
print '";';
|
||||
print $sCrLf;
|
||||
print '/* ]]> */';
|
||||
print $sCrLf;
|
||||
print '<';
|
||||
print '/script>';
|
||||
print $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) {
|
||||
print '<';
|
||||
print 'script type="text/javascript" src="';
|
||||
print $sJsURI;
|
||||
print $aJsFile[0];
|
||||
print '" ';
|
||||
print $this->sDefer;
|
||||
print 'charset="UTF-8"><';
|
||||
print '/script>';
|
||||
print $sCrLf;
|
||||
}
|
||||
|
||||
if (0 < $this->nScriptLoadTimeout) {
|
||||
foreach ($aJsFiles as $aJsFile) {
|
||||
print '<';
|
||||
print 'script type="text/javascript" ';
|
||||
print $this->sDefer;
|
||||
print 'charset="UTF-8">';
|
||||
print $sCrLf;
|
||||
print '/* <';
|
||||
print '![CDATA[ */';
|
||||
print $sCrLf;
|
||||
print 'window.setTimeout(';
|
||||
print $sCrLf;
|
||||
print ' function() {';
|
||||
print $sCrLf;
|
||||
print ' var scriptExists = false;';
|
||||
print $sCrLf;
|
||||
print ' try { if (';
|
||||
print $aJsFile[1];
|
||||
print '.isLoaded) scriptExists = true; }';
|
||||
print $sCrLf;
|
||||
print ' catch (e) {}';
|
||||
print $sCrLf;
|
||||
print ' if (!scriptExists) {';
|
||||
print $sCrLf;
|
||||
print ' alert("Error: the ';
|
||||
print $aJsFile[1];
|
||||
print ' Javascript component could not be included. Perhaps the URL is incorrect?\nURL: ';
|
||||
print $sJsURI;
|
||||
print $aJsFile[0];
|
||||
print '");';
|
||||
print $sCrLf;
|
||||
print ' }';
|
||||
print $sCrLf;
|
||||
print ' }, ';
|
||||
print $this->nScriptLoadTimeout;
|
||||
print ');';
|
||||
print $sCrLf;
|
||||
print '/* ]]> */';
|
||||
print $sCrLf;
|
||||
print '<';
|
||||
print '/script>';
|
||||
print $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);
|
||||
228
libraries/xajax/xajax_core/plugin_layer/xajaxEventPlugin.inc.php
Normal file
228
libraries/xajax/xajax_core/plugin_layer/xajaxEventPlugin.inc.php
Normal file
@@ -0,0 +1,228 @@
|
||||
<?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-2006 by 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);
|
||||
@@ -0,0 +1,230 @@
|
||||
<?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-2006 by 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);
|
||||
@@ -0,0 +1,265 @@
|
||||
<?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-2006 by 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);
|
||||
1370
libraries/xajax/xajax_core/xajax.inc.php
Normal file
1370
libraries/xajax/xajax_core/xajax.inc.php
Normal file
File diff suppressed because it is too large
Load Diff
450
libraries/xajax/xajax_core/xajaxArgumentManager.inc.php
Normal file
450
libraries/xajax/xajax_core/xajaxArgumentManager.inc.php
Normal file
@@ -0,0 +1,450 @@
|
||||
<?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-2006 by 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($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')
|
||||
. $sExpected
|
||||
. $objLanguageManager->getText('ARGMGR:ERR:02')
|
||||
. $sChunk
|
||||
, 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.
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
362
libraries/xajax/xajax_core/xajaxCall.inc.php
Normal file
362
libraries/xajax/xajax_core/xajaxCall.inc.php
Normal file
@@ -0,0 +1,362 @@
|
||||
<?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-2006 by 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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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>
|
||||
|
||||
- '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>.
|
||||
|
||||
- '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.
|
||||
|
||||
Returns:
|
||||
|
||||
object - The <xajaxCall> object.
|
||||
*/
|
||||
function setResponseProcessor($sResponseProcessor) {
|
||||
$this->sResponseProcessor = $sResponseProcessor;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/*
|
||||
Function: setRequestURI
|
||||
|
||||
Override the default URI with the specified one.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
146
libraries/xajax/xajax_core/xajaxCompress.inc.php
Normal file
146
libraries/xajax/xajax_core/xajaxCompress.inc.php
Normal file
@@ -0,0 +1,146 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
Function: xajaxCompressFile
|
||||
|
||||
<xajax> will call this function internally to compress the javascript code for
|
||||
more efficient delivery.
|
||||
|
||||
$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;
|
||||
}
|
||||
668
libraries/xajax/xajax_core/xajaxControl.inc.php
Normal file
668
libraries/xajax/xajax_core/xajaxControl.inc.php
Normal file
@@ -0,0 +1,668 @@
|
||||
<?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-2006 by 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
|
||||
|
||||
$aConfiguration - (array): An associative array that contains a variety
|
||||
of configuration options for this <xajaxControl> object.
|
||||
|
||||
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.
|
||||
*/
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
183
libraries/xajax/xajax_core/xajaxLanguageManager.inc.php
Normal file
183
libraries/xajax/xajax_core/xajaxLanguageManager.inc.php
Normal file
@@ -0,0 +1,183 @@
|
||||
<?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-2006 by 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:
|
||||
|
||||
- language (string, default 'en'): The currently selected language.
|
||||
*/
|
||||
function configure($sName, $mValue)
|
||||
{
|
||||
if ('language' == $sName) {
|
||||
if ($mValue !== $this->sLanguage) {
|
||||
$sFolder = dirname(__FILE__);
|
||||
require $sFolder . '/xajax_lang_' . $mValue . '.inc.php';
|
||||
$this->sLanguage = $mValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Function: register
|
||||
|
||||
Called to register an array of alternate language messages.
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
185
libraries/xajax/xajax_core/xajaxPlugin.inc.php
Normal file
185
libraries/xajax/xajax_core/xajaxPlugin.inc.php
Normal file
@@ -0,0 +1,185 @@
|
||||
<?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-2006 by 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>.
|
||||
*/
|
||||
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.
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
320
libraries/xajax/xajax_core/xajaxPluginManager.inc.php
Normal file
320
libraries/xajax/xajax_core/xajaxPluginManager.inc.php
Normal file
@@ -0,0 +1,320 @@
|
||||
<?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-2006 by 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.
|
||||
*/
|
||||
function loadPlugins($aFolders)
|
||||
{
|
||||
foreach ($aFolders as $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.
|
||||
|
||||
nPriorityNumber - (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.
|
||||
|
||||
objPlugin - (object): A reference to an instance of a plugin.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
*/
|
||||
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.
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
344
libraries/xajax/xajax_core/xajaxRequest.inc.php
Normal file
344
libraries/xajax/xajax_core/xajaxRequest.inc.php
Normal file
@@ -0,0 +1,344 @@
|
||||
<?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-2006 by 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.
|
||||
|
||||
Constant: XAJAX_INPUT_VALUE
|
||||
Specifies that the parameter will contain the value of an input control.
|
||||
|
||||
Constant: XAJAX_CHECKED_VALUE
|
||||
Specifies that the parameter will consist of a boolean value of a checkbox.
|
||||
|
||||
Constant: XAJAX_ELEMENT_INNERHTML
|
||||
Specifies that the parameter value will be the innerHTML value of the element.
|
||||
|
||||
Constant: XAJAX_QUOTED_VALUE
|
||||
Specifies that the parameter will be a quoted value (string).
|
||||
|
||||
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_FORM_VALUES')) define ('XAJAX_FORM_VALUES', 'get form values');
|
||||
if (!defined ('XAJAX_INPUT_VALUE')) define ('XAJAX_INPUT_VALUE', 'get input value');
|
||||
if (!defined ('XAJAX_CHECKED_VALUE')) define ('XAJAX_CHECKED_VALUE', 'get checked value');
|
||||
if (!defined ('XAJAX_ELEMENT_INNERHTML')) define ('XAJAX_ELEMENT_INNERHTML', 'get element innerHTML');
|
||||
if (!defined ('XAJAX_QUOTED_VALUE')) define ('XAJAX_QUOTED_VALUE', 'quoted value');
|
||||
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 <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.
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
TODO: finish documenting the options.
|
||||
*/
|
||||
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()
|
||||
{
|
||||
$sOutput = $this->sName;
|
||||
$sOutput .= "(";
|
||||
|
||||
$sSeparator = "";
|
||||
|
||||
foreach ($this->aParameters as $sParameter)
|
||||
{
|
||||
$sOutput .= $sSeparator;
|
||||
$sOutput .= $sParameter;
|
||||
$sSeparator = ", ";
|
||||
}
|
||||
|
||||
$sOutput .= ")";
|
||||
|
||||
print $sOutput;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
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.
|
||||
|
||||
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.
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
1772
libraries/xajax/xajax_core/xajaxResponse.inc.php
Normal file
1772
libraries/xajax/xajax_core/xajaxResponse.inc.php
Normal file
File diff suppressed because it is too large
Load Diff
222
libraries/xajax/xajax_core/xajaxResponseManager.inc.php
Normal file
222
libraries/xajax/xajax_core/xajaxResponseManager.inc.php
Normal file
@@ -0,0 +1,222 @@
|
||||
<?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-2006 by 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.
|
||||
*/
|
||||
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.
|
||||
|
||||
$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>)
|
||||
|
||||
$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;
|
||||
}
|
||||
}
|
||||
87
libraries/xajax/xajax_core/xajax_lang_de.inc.php
Normal file
87
libraries/xajax/xajax_core/xajax_lang_de.inc.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?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-2006 by 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
|
||||
86
libraries/xajax/xajax_core/xajax_lang_nl.inc.php
Normal file
86
libraries/xajax/xajax_core/xajax_lang_nl.inc.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/*
|
||||
File: xajax_lang_de.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>
|
||||
*/
|
||||
|
||||
/*
|
||||
@package xajax
|
||||
@version $Id: xajax_lang_de.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $
|
||||
@copyright Copyright (c) 2005-2006 by 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 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
|
||||
Reference in New Issue
Block a user