[ Index ]
 

Code source de Typo3 4.1.3

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/t3lib/ -> class.t3lib_ajax.php (source)

   1  <?php
   2  /***************************************************************
   3  *  Copyright notice
   4  *
   5  *  (c) 2004-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
   6  *  All rights reserved
   7  *
   8  *  This script is part of the TYPO3 project. The TYPO3 project is
   9  *  free software; you can redistribute it and/or modify
  10  *  it under the terms of the GNU General Public License as published by
  11  *  the Free Software Foundation; either version 2 of the License, or
  12  *  (at your option) any later version.
  13  *
  14  *  The GNU General Public License can be found at
  15  *  http://www.gnu.org/copyleft/gpl.html.
  16  *  A copy is found in the textfile GPL.txt and important notices to the license
  17  *  from the author is found in LICENSE.txt distributed with these scripts.
  18  *
  19  *
  20  *  This script is distributed in the hope that it will be useful,
  21  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  23  *  GNU General Public License for more details.
  24  *
  25  *  This copyright notice MUST APPEAR in all copies of the script!
  26  ***************************************************************/
  27  /**
  28   * Contains the class "t3lib_ajax" containing functions for doing XMLHTTP requests to the TYPO3 backend and as well for generating replys. This technology is also known as ajax.
  29   * Call ALL methods without making an object!
  30   *
  31   * IMPORTANT NOTICE: The API the class provides is still NOT STABLE and SUBJECT TO CHANGE!
  32   * It is planned to integrate an external AJAX library, so the API will most likely change again.
  33   *
  34   * @author    Sebastian Kurfuerst <sebastian@garbage-group.de>
  35   */
  36  
  37  /**
  38   * TYPO3 XMLHTTP class (new in TYPO3 4.0.0)
  39   * This class contains two main parts:
  40   * (1) generation of JavaScript code which creates an XMLHTTP object in a cross-browser manner
  41   * (2) generation of XML data as a reply
  42   *
  43   * @author    Sebastian Kurfuerst <sebastian@garbage-group.de>
  44   * @package TYPO3
  45   * @subpackage t3lib
  46   */
  47  class t3lib_ajax {
  48      /**
  49   * Gets the JavaScript code needed to handle an XMLHTTP request in the frontend.
  50   * All JS functions have to call ajax_doRequest(url) to make a request to the server.
  51   * USE:
  52   * See examples of using this function in template.php -> getContextMenuCode and alt_clickmenu.php -> printContent
  53   *
  54   * @param    string        JS function handling the XML data from the server. That function gets the returned XML data as parameter.
  55   * @param    string        JS fallback function which is called with the URL of the request in case ajax is not available.
  56   * @param    boolean        If set to 1, the returned XML data is outputted as text in an alert window - useful for debugging, PHP errors are shown there, ...
  57   * @return    string        JavaScript code needed to make and handle an XMLHTTP request
  58   */
  59  	function getJScode($handlerFunction, $fallback='', $debug=0)    {
  60              // Init the XMLHTTP request object
  61          $code = '
  62  		function ajax_initObject()    {
  63              var A;
  64              try    {
  65                  A=new ActiveXObject("Msxml2.XMLHTTP");
  66              } catch (e)    {
  67                  try    {
  68                      A=new ActiveXObject("Microsoft.XMLHTTP");
  69                  } catch (oc)    {
  70                      A=null;
  71                  }
  72              }
  73              if(!A && typeof XMLHttpRequest != "undefined")    {
  74                  A = new XMLHttpRequest();
  75              }
  76              return A;
  77          }';
  78              // in case AJAX is not available, fallback function
  79          if($fallback)    {
  80              $fallback .= '(url)';
  81          } else {
  82              $fallback = 'return';
  83          }
  84          $code .= '
  85  		function ajax_doRequest(url)    {
  86              var x;
  87  
  88              x = ajax_initObject();
  89              if(!x)    {
  90                  '.$fallback.';
  91              }
  92              x.open("GET", url, true);
  93  
  94              x.onreadystatechange = function()    {
  95                  if (x.readyState != 4)    {
  96                      return;
  97                  }
  98                  '.($debug?'alert(x.responseText)':'').'
  99                  var xmldoc = x.responseXML;
 100                  var t3ajax = xmldoc.getElementsByTagName("t3ajax")[0];
 101                  '.$handlerFunction.'(t3ajax);
 102              }
 103              x.send("");
 104  
 105              delete x;
 106          }';
 107  
 108          return $code;
 109      }
 110  
 111      /**
 112       * Function outputting XML data for TYPO3 ajax. The function directly outputs headers and content to the browser.
 113       *
 114       * @param    string        $innerXML    XML data which will be sent to the browser
 115       * @return    void
 116       */
 117  	function outputXMLreply($innerXML)    {
 118              // AJAX needs some XML data
 119          header('Content-Type: text/xml');
 120          $xml = '<?xml version="1.0"?>
 121  <t3ajax>'.$innerXML.'</t3ajax>';
 122          echo $xml;
 123      }
 124  
 125  }
 126  
 127  
 128  if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_ajax.php'])    {
 129      include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_ajax.php']);
 130  }
 131  ?>


Généré le : Sun Nov 25 17:13:16 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics