Table of Contents
|
Documentation on using Horde_Controller
Horde Controllers are independent from the Horde Ajax Framework. Controllers need Horde_Routes and need rewrite rules.
Ajax application controllers do not live in lib/ but in $app/app/controllers/
Example:
Class Nag_CompleteTask_Controller in nag/app/controllers/CompleteTask.php<?php <?php class Nag_CompleteTask_Controller extends Horde_Controller_Base { public function processRequest(Horde_Controller_Request $request, Horde_Controller_Response $response) { /* Toggle the task's completion status if we're provided with a * valid task ID. */ $requestVars = $request->getRequestVars(); if (isset($requestVars['task']) && isset($requestVars['tasklist'])) { $nag_task = new Nag_CompleteTask(); $result = $nag_task->result($requestVars['task'], $requestVars['tasklist']); } else { $result = array('error' => 'missing parameters'); } $requestVars = $request->getGetVars(); if (!empty($requestVars['format']) && $requestVars['format'] == 'json') { $response->setContentType('application/json'); $response->setBody(json_encode($result)); } elseif ($requestVars['url']) { $response->setRedirectUrl($requestVars['url']); } } } ?> ?>
A Horde Controller based app needs a config/routes.php file.
For example<?php <?php /** * Setup default routes */ $mapper->connect('/t/complete', array( 'controller' => 'CompleteTask', )); ?> ?>
defines a route for a call like www.example.com/nag/t/complete to be handled by the CompleteTask controller seen above.
The endpoint script is horde/rampage.php - rampage.php currently seems to handle only authenticated calls.
The controller is passed the request (in this case, a json request) and handles it (with a json answer in this case)