[commits] [Wiki] changed: Doc/Dev/HordeAjaxApplications

Michael Slusarz slusarz at horde.org
Tue Jul 23 17:34:49 UTC 2013


slusarz  Tue, 23 Jul 2013 17:34:49 +0000

Modified page: http://wiki.horde.org/Doc/Dev/HordeAjaxApplications
New Revision:  4
Change log:  Intial changes

@@ -1,19 +1,18 @@
-Documentation of Horde Ajax Applications mostly from poking around  
existing examples.
++ Documentation of Horde Ajax Applications mostly from poking around  
existing examples.

-+ Convention
+++ Convention
  $app (lowercase, for example "passwd")
  $App (First Uppercase, for example "Passwd")

+++ Javascript libraries used

-+ Javascript libraries used
+!JavaScript for "dynamic" and "traditional" mode uses  
[http://api.prototypejs.org/ PrototypeJS]
+!JavaScript for "smartmobile" mode uses [http://jquerymobile.com/  
jQuery Mobile]

-JavaScript for "Dynamic" and "traditional" mode uses prototype.js
-JavaScript for "SmartMobile" mode uses query-mobile.js
-
-++ using jquery alongside prototype
++++ Using jquery alongside prototype
  This is generally not accepted upstream.
-jQuery can be made coexist with dynamic/traditional mode's prototype.js
+jQuery can be made coexist with dynamic/traditional mode's !PrototypeJS

  For non-upstream custom code:

  <code>
@@ -22,53 +21,45 @@
  /* Do jquery stuff here. $.* is prototype, $j.* is jQuery. Some  
plugins may not like this, but DataTables, JQuery UI and mainstream  
stuff work */
  );
  </code>

-+ Files and Classes of a Horde Ajax Application
+++ Files and Classes of a Horde Ajax Application
+
++++ Horde_Ajax_Application class

-++ Horde_Ajax_Application class
  Bare Minimum for a Horde Ajax Application (on top of a skeleton  
Horde_Registry_Application):
  A File $app/lib/Ajax/Application.php with a class
+
  <code>
  <?php
  // phpdoc omitted
  class $App_Ajax_Application extends Horde_Core_Ajax_Application {}
  ?>
  </code>

-Inherited methods:
-
-doAction (see below)
-logOut
-responseType (set response type for the request)
-getSessionLogoutUrl
-listGroups
-parseEmailAddress
-chunkContent (process and return a template part from  
$app/templates/chunks/$chunk.php)
-setPrefValue
+[http://dev.horde.org/api/master/lib/Core/classes/Horde_Core_Ajax_Application.html Horde_Core_Ajax_Application  
documentation]

++++ Application-specific javascript code

-++ AppCore.js file
+Most apps which sport completely distinct dynamic and traditional  
views (kronolith, hermes) also have $app/js/$app.js

-Most apps which sport completely distinct dynamic and traditional  
views (kronolith, hermes) also have $app/js/$app.js including a Class  
$AppCore
-In Imp, the class name is
  <code>
  var $AppCore = {
  /* What is strictly required here? */
  }
  document.observe('dom:loaded', $AppCore.onDomLoad.bind(AppCore));
  // more observers as needed
  </code>

-++ View Selection
++++ View Selection

  Common, but not strictly required:

-Logic in $app/index.php to decide if traditional, ajax or other modes  
should be loaded. gollem does not have this.
+Logic in $app/index.php to decide if traditional, ajax or other modes  
should be loaded.

  TODO: Example

-++ Horde Ajax Request Service
++++ Horde Ajax Request Service
  The Horde Base App provides a common receiver for ajax requests by  
Ajax_Applications.
  It only works for AUTHENTICATED user requests.

  Fails silently for malformed requests and unauthenticated users
@@ -106,9 +97,9 @@
   */
  </code>


-++ What is an imple?
++++ What is an imple?
  An Imple inherits from Horde_Core_Ajax_Imple and implements php code  
tied to a javascript request
  (how is this related to a services/ajax call?)

  Horde_Core ships some imple's, apps define theirs in  
$app/lib/Ajax/Imple/Foo.php
@@ -152,16 +143,16 @@
  So this finally calls services/ajax.php , starts/authenticates  
(HOW?) the kronolith app, passes the "embed" action and the URL  
parameters to Kronolith_Ajax_Application which runs doAction();
  (How does doAction trigger the imple?)


-++ $App_Ajax_Application_Handler
++++ $App_Ajax_Application_Handler
  A Handler inherits from Horde_Core_Ajax_Application_Handler and can  
manage external/public (unauthenticated??) calls
  extends Horde_Core_Ajax_Application_Handler

  Seems like the difference between Horde 5 and Horde 4 is that each  
action has its own Handler class rather than a methods in the  
$App_Ajax_Application class?


-+ Horde_Controllers
+++ Horde_Controllers

  Horde Controllers seem to be somewhat independent from the stuff  
described above
  Controllers need Horde_Routes and need rewrite rules

@@ -222,13 +213,13 @@
  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)

-+ Client side js infrastructure
+++ Client side js infrastructure

  TODO

-+ The big picture
+++ The big picture

  * When do I use a service/ajax.php handler as opposed to a  
rampage.php Controller ?
  * Imples seem to be used to return snippets?




More information about the commits mailing list