[ Index ] |
|
Code source de Typo3 4.1.3 |
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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Nov 25 17:13:16 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |