Documentation TYPO3 par Ameos |
00001 <?php 00002 /*************************************************************** 00003 * Copyright notice 00004 * 00005 * (c) 2004-2005 Kasper Skaarhoj (kasperYYYY@typo3.com) 00006 * All rights reserved 00007 * 00008 * This script is part of the TYPO3 project. The TYPO3 project is 00009 * free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * The GNU General Public License can be found at 00015 * http://www.gnu.org/copyleft/gpl.html. 00016 * A copy is found in the textfile GPL.txt and important notices to the license 00017 * from the author is found in LICENSE.txt distributed with these scripts. 00018 * 00019 * 00020 * This script is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * This copyright notice MUST APPEAR in all copies of the script! 00026 ***************************************************************/ 00050 require_once(PATH_t3lib.'class.t3lib_rteapi.php'); 00058 class tx_rte_base extends t3lib_rteapi { 00059 00060 // External: 00061 var $RTEdivStyle; // Alternative style for RTE <div> tag. 00062 00063 // Internal, static: 00064 var $ID = 'rte'; // Identifies the RTE as being the one from the "rte" extension if any external code needs to know... 00065 var $debugMode = FALSE; // If set, the content goes into a regular TEXT area field - for developing testing of transformations. (Also any browser will load the field!) 00066 00067 00074 function isAvailable() { 00075 global $CLIENT; 00076 00077 if (TYPO3_DLOG) t3lib_div::devLog('Checking for availability...','rte'); 00078 00079 $this->errorLog = array(); 00080 if (!$this->debugMode) { // If debug-mode, let any browser through 00081 if ($CLIENT['BROWSER']!='msie') $this->errorLog[] = '"rte": Browser is not MSIE'; 00082 if ($CLIENT['SYSTEM']!='win') $this->errorLog[] = '"rte": Client system is not Windows'; 00083 if ($CLIENT['VERSION']<5) $this->errorLog[] = '"rte": Browser version below 5'; 00084 } 00085 if (!count($this->errorLog)) return TRUE; 00086 } 00087 00103 function drawRTE(&$pObj,$table,$field,$row,$PA,$specConf,$thisConfig,$RTEtypeVal,$RTErelPath,$thePidValue) { 00104 00105 // Draw form element: 00106 if ($this->debugMode) { // Draws regular text area (debug mode) 00107 $item = parent::drawRTE($pObj,$table,$field,$row,$PA,$specConf,$thisConfig,$RTEtypeVal,$RTErelPath,$thePidValue); 00108 } else { // Draw real RTE (MSIE 5+ only) 00109 00110 // Adding needed code in top: 00111 $pObj->additionalJS_pre['rte_loader_function'] = $this->loaderFunc($pObj->formName); 00112 $pObj->additionalJS_submit[] = " 00113 if(TBE_RTE_WINDOWS['".$PA['itemFormElName']."']) { document.".$pObj->formName."['".$PA['itemFormElName']."'].value = TBE_RTE_WINDOWS['".$PA['itemFormElName']."'].getHTML(); } else { OK=0; }"; 00114 00115 // Setting style: 00116 $RTEWidth = 460+($pObj->docLarge ? 150 : 0); 00117 $RTEdivStyle = $this->RTEdivStyle ? $this->RTEdivStyle : 'position:relative; left:0px; top:0px; height:380px; width:'.$RTEWidth.'px; border:solid 0px;'; 00118 00119 // RTE url: 00120 $rteURL = $pObj->backPath.'ext/rte/app/rte.php?'. 00121 'elementId='.rawurlencode($PA['itemFormElName']). // Form element name 00122 '&pid='.$thePidValue. // PID for record being edited. 00123 '&typeVal='.rawurlencode($RTEtypeVal). // TCA "types" value for record 00124 '&bgColor='.rawurlencode($pObj->colorScheme[0]). // Background color 00125 '&sC='.rawurlencode($PA['extra']). // Extra options; This is index 3 (part #4) of the TCA "types" configuration of the field. Can be parsed by 00126 '&defaultExtras='.rawurlencode($PA['fieldConf']['defaultExtras']). // Default Extra options 00127 '&formName='.rawurlencode($pObj->formName); // Form name 00128 00129 // Transform value: 00130 $value = $this->transformContent('rte',$PA['itemFormElValue'],$table,$field,$row,$specConf,$thisConfig,$RTErelPath,$thePidValue); 00131 00132 // Register RTE windows: 00133 $pObj->RTEwindows[] = $PA['itemFormElName']; 00134 $item = ' 00135 '.$this->triggerField($PA['itemFormElName']).' 00136 <input type="hidden" name="'.htmlspecialchars($PA['itemFormElName']).'" value="'.htmlspecialchars($value).'" /> 00137 <div id="cdiv'.count($pObj->RTEwindows).'" style="'.htmlspecialchars($RTEdivStyle).'"> 00138 <iframe 00139 src="'.htmlspecialchars($rteURL).'" 00140 id="'.$PA['itemFormElName'].'_RTE" 00141 style="visibility:visible; position:absolute; left:0px; top:0px; height:100%; width:100%;"></iframe> 00142 </div>'; 00143 } 00144 00145 // Return form item: 00146 return $item; 00147 } 00148 00155 function loaderFunc($formname) { 00156 return ' 00157 var TBE_RTE_WINDOWS = new Array(); 00158 00159 function TBE_EDITOR_setRTEref(RTEobj,theField,loadContent) { // 00160 TBE_RTE_WINDOWS[theField] = RTEobj; 00161 if (loadContent) { 00162 RTEobj.setHTML(document.'.$formname.'[theField].value); 00163 } 00164 } 00165 '; 00166 } 00167 } 00168 00169 // Include extension? 00170 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rte/class.tx_rte_base.php']) { 00171 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rte/class.tx_rte_base.php']); 00172 } 00173 ?>