From fa9842d9647945416a5590e57e7af9ee237ede34 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 25 May 2014 00:45:19 +0200 Subject: [PATCH] implement AjaxAgent for AJAX-responses --- agents/toplevel/AjaxAgent.inc | 65 ++++++++++++++++++++++++++++++++++ controllers/AjaxController.inc | 52 +++++++++++++++++++++++++++ core/View.inc | 2 +- views/ajax/ajax.tpl | 1 + 4 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 agents/toplevel/AjaxAgent.inc create mode 100644 controllers/AjaxController.inc create mode 100644 views/ajax/ajax.tpl diff --git a/agents/toplevel/AjaxAgent.inc b/agents/toplevel/AjaxAgent.inc new file mode 100644 index 00000000..7c10c112 --- /dev/null +++ b/agents/toplevel/AjaxAgent.inc @@ -0,0 +1,65 @@ + + * @copyright 2014 Heinrich-Heine-Universität Düsseldorf + * @license http://www.gnu.org/licenses/gpl.html + * @link https://bitbucket.org/coderkun/the-legend-of-z + */ + + namespace hhu\z\agents\toplevel; + + + /** + * Agent to return a JSON-string used by AJAX. + * + * @author Oliver Hanraths + */ + class AjaxAgent extends \hhu\z\agents\ToplevelAgent + { + + + + + protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null) + { + parent::__construct($request, $response, $log); + + + $this->setLanguage($request); + } + + + /** + * Action: index. + */ + public function index(\nre\core\Request $request, \nre\core\Response $response) + { + } + + + + + private function setLanguage(\nre\core\Request $request) + { + // Set domain + $domain = \nre\configs\AppConfig::$app['genericname']; + + // Get language + $locale = $request->getGetParam('lang', 'language'); + if(is_null($locale)) { + return; + } + + // Load translation + putenv("LC_ALL=$locale"); + setlocale(LC_ALL, $locale); + bindtextdomain($domain, ROOT.DS.\nre\configs\AppConfig::$dirs['locale']); + textdomain($domain); + } + + } + +?> diff --git a/controllers/AjaxController.inc b/controllers/AjaxController.inc new file mode 100644 index 00000000..8cdd2c31 --- /dev/null +++ b/controllers/AjaxController.inc @@ -0,0 +1,52 @@ + + * @copyright 2014 Heinrich-Heine-Universität Düsseldorf + * @license http://www.gnu.org/licenses/gpl.html + * @link https://bitbucket.org/coderkun/the-legend-of-z + */ + + namespace hhu\z\controllers; + + + /** + * Controller of the AjaxAgent to return a JSON-string used by AJAX. + * + * @author Oliver Hanraths + */ + class AjaxController extends \hhu\z\Controller + { + + + + + /** + * Prefilter. + * + * @param Request $request Current request + * @param Response $response Current response + */ + public function preFilter(\nre\core\Request $request, \nre\core\Response $response) + { + parent::preFilter($request, $response); + + // Set content-type + $this->response->addHeader("Content-type: application/json; charset=utf-8"); + } + + + /** + * Action: index. + * + * Create the JSON-string. + */ + public function index() + { + } + + } + +?> diff --git a/core/View.inc b/core/View.inc index 546ddb6e..554a8805 100644 --- a/core/View.inc +++ b/core/View.inc @@ -63,7 +63,7 @@ // LayoutName $fileName = ROOT.DS. \nre\configs\CoreConfig::getClassDir('views').DS. strtolower($layoutName).DS; // AgentName and Action - if(strtolower($agentName) != $layoutName || !$isToplevel) { + if(strtolower($agentName) != strtolower($layoutName) || !$isToplevel) { $fileName .= strtolower($agentName).DS.strtolower($action); } else { diff --git a/views/ajax/ajax.tpl b/views/ajax/ajax.tpl new file mode 100644 index 00000000..43a06a51 --- /dev/null +++ b/views/ajax/ajax.tpl @@ -0,0 +1 @@ +