commit f530776a2063f455a691c2e8e35d793bc59bcc17 Author: Carsten Goetzinger Date: Fri Jan 27 13:03:30 2017 +0100 Umzug zu gitlab diff --git a/README.md b/README.md new file mode 100644 index 0000000..e66f969 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# simple_ajax # + +Fork der Contao-Erweiterung aus dem Contao Extension Repository (https://contao.org/de/extension-list/view/simple_ajax.de.html). +Fork wurde erzeugt, um die Erweiterung im Composer veröffentlichen zu können. \ No newline at end of file diff --git a/SimpleAjax.php b/SimpleAjax.php new file mode 100644 index 0000000..e9eae75 --- /dev/null +++ b/SimpleAjax.php @@ -0,0 +1,139 @@ +. + * + * PHP version 5 + * @copyright Leo Unglaub 2012 + * @author Leo Unglaub + * @package simple_ajax + * @license LGPL + */ + + +// simple trick for Contao < 2.10 +$arrPost = $_POST; +unset($_POST); + + +// inizialize the contao framework +define('TL_MODE', 'FE'); +require('system/initialize.php'); + + +// write the post data back into the array +$_POST = $arrPost; + + +/** + * Class SimpleAjax + * Contain methods to catch ajax requests and send responses back to the client. + * + * Description + * ``````````` + * + * The usage of the SimpleAjax extensions is very easy. The extension provides + * the hook $GLOBALS['TL_HOOKS']['simpleAjax'] for extension developers. You + * simply have to register your class/method and the extension will call + * your class if there is an incomming ajax request. + * + * You simply have to deside if it's an ajax request for your module and return + * the data you want. + * + * There are a few thinks you should know about the extension: + * * YOU have the full controll over the response. That also means + * that you have to set the correct header. + * * YOU have to terminate the request after you have send the response. + * * If the ajax request is not for your method you simply have nothing to + * * return. + * + * + * Usage + * ````` + * // config.php + * $GLOBALS['TL_HOOKS']['simpleAjax'][] = array('MyClass', 'myMethod'); + * + * // MyClass.php + * class MyClass extends System + * { + * public function myMethod() + * { + * if ($this->Input->get('acid') == 'myrequest') + * { + * $arrReturn = array('foo', 'bar', 'foobar'); + * + * header('Content-Type: application/json'); + * echo json_encode($arrReturn); + * exit; + * } + * } + * } + */ +class SimpleAjax extends Controller +{ + /** + * Call the parent constructor. + * + * !!! DON'T REMOVE THIS !!! + * + * If you remove this you get the following error message: + * Fatal error: Call to protected System::__construct() from invalid + * context + * + * @param void + * @return void + */ + public function __construct() + { + parent::__construct(); + } + + + /** + * Get the ajax request and call all hooks + * + * @param void + * @return void + */ + public function run() + { + // check if a hook is registered + if (is_array($GLOBALS['TL_HOOKS']['simpleAjax']) && count($GLOBALS['TL_HOOKS']['simpleAjax']) > 0) + { + // execute every registered callback + foreach ($GLOBALS['TL_HOOKS']['simpleAjax'] as $callback) + { + $this->import($callback[0]); + $this->$callback[0]->$callback[1](); + } + } + + // if there is no other output, we generate a 412 error response + header('HTTP/1.1 412 Precondition Failed'); + die('Simple Ajax: Invalid AJAX call.'); + } +} + + +// create a SimpleAjax instance and run it +$objSimpleAjax = new SimpleAjax(); +$objSimpleAjax->run(); + +?> diff --git a/SimpleAjaxFrontend.php b/SimpleAjaxFrontend.php new file mode 100644 index 0000000..876d02a --- /dev/null +++ b/SimpleAjaxFrontend.php @@ -0,0 +1,152 @@ +. + * + * PHP version 5 + * @copyright Leo Unglaub 2012 + * @author Leo Unglaub + * @package simple_ajax + * @license LGPL + */ + + +// simple trick for Contao < 2.10 +$arrPost = $_POST; +unset($_POST); + + +// inizialize the contao framework +define('TL_MODE', 'FE'); +require('system/initialize.php'); + + +// write the post data back into the array +$_POST = $arrPost; + + +/** + * Class SimpleAjaxFrontend + * Contain methods to catch ajax requests and send responses back to the client. + * + * Description + * ``````````` + * + * The usage of the SimpleAjax extensions is very easy. The extension provides + * the hook $GLOBALS['TL_HOOKS']['simpleAjax'] for extension developers. You + * simply have to register your class/method and the extension will call + * your class if there is an incomming ajax request. + * + * You simply have to deside if it's an ajax request for your module and return + * the data you want. + * + * There are a few thinks you should know about the extension: + * * YOU have the full controll over the response. That also means + * that you have to set the correct header. + * * YOU have to terminate the request after you have send the response. + * * If the ajax request is not for your method you simply have nothing to + * * return. + * + * + * Usage + * ````` + * // config.php + * $GLOBALS['TL_HOOKS']['simpleAjaxFrontend'][] = array('MyClassFrontend', 'myMethod'); + * + * // MyClassFrontend.php + * class MyClassFrontend extends System + * { + * public function myMethod() + * { + * if ($this->Input->get('acid') == 'myrequest') + * { + * $arrReturn = array('foo', 'bar', 'foobar'); + * + * header('Content-Type: application/json'); + * echo json_encode($arrReturn); + * exit; + * } + * } + * } + */ +class SimpleAjaxFrontend extends Frontend +{ + /** + * Set some important constants + * + * @param void + * @return void + */ + public function __construct() + { + // call the constructor from Frontend + parent::__construct(); + + // check if a user is logged in + define('BE_USER_LOGGED_IN', $this->getLoginStatus('BE_USER_AUTH')); + define('FE_USER_LOGGED_IN', $this->getLoginStatus('FE_USER_AUTH')); + + // set static url's in case the user generated HTML code + $this->setStaticUrl('TL_FILES_URL', $GLOBALS['TL_CONFIG']['staticFiles']); + $this->setStaticUrl('TL_SCRIPT_URL', $GLOBALS['TL_CONFIG']['staticSystem']); + $this->setStaticUrl('TL_PLUGINS_URL', $GLOBALS['TL_CONFIG']['staticPlugins']); + } + + + /** + * Get the ajax request and call all hooks + * + * @param void + * @return void + */ + public function run() + { + // run the global hook + if (is_array($GLOBALS['TL_HOOKS']['simpleAjax']) && count($GLOBALS['TL_HOOKS']['simpleAjax']) > 0) + { + // execute every registered callback + foreach ($GLOBALS['TL_HOOKS']['simpleAjax'] as $callback) + { + $this->import($callback[0]); + $this->$callback[0]->$callback[1](); + } + } + + // run the frontend exclusive hook + if (is_array($GLOBALS['TL_HOOKS']['simpleAjaxFrontend']) && count($GLOBALS['TL_HOOKS']['simpleAjaxFrontend']) > 0) + { + // execute every registered callback + foreach ($GLOBALS['TL_HOOKS']['simpleAjaxFrontend'] as $callback) + { + $this->import($callback[0]); + $this->$callback[0]->$callback[1](); + } + } + + // if there is no other output, we generate a 412 error response + header('HTTP/1.1 412 Precondition Failed'); + die('Simple Ajax: Invalid AJAX call.'); + } +} + + +// create a SimpleAjax instance and run it +$objSimpleAjaxFrontend = new SimpleAjaxFrontend(); +$objSimpleAjaxFrontend->run(); + +?> \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..c32060b --- /dev/null +++ b/composer.json @@ -0,0 +1,38 @@ +{ + "name":"cgo-it/simple_ajax", + "description":"simple_ajax extension for the Contao Open Source CMS", + "keywords":["contao", "ajax"], + "type":"contao-module", + "license":"LGPL-3.0+", + "authors":[ + { + "name":"cgo IT", + "email":"info@cgo-it.de", + "homepage":"https://cgo-it.de", + "role":"Developer" + } + ], + "support": { + "email": "info@cgo-it.de", + "issues": "https://bitbucket.org/cgo-it/contao-simple_ajax/issues?status=new&status=open", + "source": "https://bitbucket.org/cgo-it/contao-simple_ajax/src" + }, + "require":{ + "php":">=5.3", + "contao/core":">=3.0", + "contao-community-alliance/composer-plugin": "~2.0" + }, + "replace": { + "cgo-it/simple_ajax": "self.version" + }, + "conflict": { + "contao/core": "2.11.*" + }, + "extra":{ + "contao": { + "sources":{ + "":"" + } + } + } +} \ No newline at end of file