| [ Index ] |
|
Code source de Typo3 4.1.3 |
1 <?php 2 /*************************************************************** 3 * Copyright notice 4 * 5 * (c) 1999-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 * Wizard to display the RTE in "full screen" mode 29 * 30 * $Id: wizard_rte.php 1899 2007-01-09 12:55:52Z kurfuerst $ 31 * Revised for TYPO3 3.6 November/2003 by Kasper Skaarhoj 32 * XHTML compliant 33 * 34 * @author Kasper Skaarhoj <kasperYYYY@typo3.com> 35 */ 36 /** 37 * [CLASS/FUNCTION INDEX of SCRIPT] 38 * 39 * 40 * 41 * 81: class SC_wizard_rte 42 * 99: function init() 43 * 123: function main() 44 * 285: function printContent() 45 * 298: function checkEditAccess($table,$uid) 46 * 47 * TOTAL FUNCTIONS: 4 48 * (This index is automatically created/updated by the extension "extdeveval") 49 * 50 */ 51 52 53 54 $BACK_PATH=''; 55 require ('init.php'); 56 require ('template.php'); 57 $LANG->includeLLFile('EXT:lang/locallang_wizards.xml'); 58 require_once (PATH_t3lib.'class.t3lib_tceforms.php'); 59 require_once (PATH_t3lib.'class.t3lib_loaddbgroup.php'); 60 require_once (PATH_t3lib.'class.t3lib_transferdata.php'); 61 62 t3lib_BEfunc::lockRecords(); 63 64 65 66 67 68 69 70 71 72 73 74 /** 75 * Script Class for rendering the full screen RTE display 76 * 77 * @author Kasper Skaarhoj <kasperYYYY@typo3.com> 78 * @package TYPO3 79 * @subpackage core 80 */ 81 class SC_wizard_rte { 82 83 // Internal, dynamic: 84 var $doc; // Document template object 85 var $content; // Content accumulation for the module. 86 87 // Internal, static: GPvars 88 var $P; // Wizard parameters, coming from TCEforms linking to the wizard. 89 var $popView; // If set, launch a new window with the current records pid. 90 91 92 93 94 /** 95 * Initialization of the class 96 * 97 * @return void 98 */ 99 function init() { 100 global $BACK_PATH; 101 102 // Setting GPvars: 103 $this->P = t3lib_div::_GP('P'); 104 $this->popView = t3lib_div::_GP('popView'); 105 106 // "Module name": 107 $this->MCONF['name']='xMOD_wizard_rte.php'; 108 109 // Starting the document template object: 110 $this->doc = t3lib_div::makeInstance('mediumDoc'); 111 $this->doc->docType = 'xhtml_trans'; 112 $this->doc->divClass = ''; // Need to NOT have the page wrapped in DIV since if we do that we destroy the feature that the RTE spans the whole height of the page!!! 113 $this->doc->form='<form action="tce_db.php" method="post" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'" name="editform" onsubmit="return TBE_EDITOR.checkSubmit(1);">'; 114 $this->doc->backPath = $BACK_PATH; 115 116 } 117 118 /** 119 * Main function, rendering the document with the iframe with the RTE in. 120 * 121 * @return void 122 */ 123 function main() { 124 global $BE_USER,$LANG; 125 126 // translate id to the workspace version: 127 if ($versionRec = t3lib_BEfunc::getWorkspaceVersionOfRecord($GLOBALS['BE_USER']->workspace, $this->P['table'], $this->P['uid'], 'uid')) { 128 $this->P['uid'] = $versionRec['uid']; 129 } 130 131 // If all parameters are available: 132 if ($this->P['table'] && $this->P['field'] && $this->P['uid'] && $this->checkEditAccess($this->P['table'],$this->P['uid'])) { 133 134 // Getting the raw record (we need only the pid-value from here...) 135 $rawRec = t3lib_BEfunc::getRecord($this->P['table'],$this->P['uid']); 136 t3lib_BEfunc::fixVersioningPid($this->P['table'], $rawRec); 137 138 // Setting JavaScript, including the pid value for viewing: 139 $this->doc->JScode = $this->doc->wrapScriptTags(' 140 function jumpToUrl(URL,formEl) { // 141 if (document.editform) { 142 if (!TBE_EDITOR.isFormChanged()) { 143 window.location.href = URL; 144 } else if (formEl) { 145 if (formEl.type=="checkbox") formEl.checked = formEl.checked ? 0 : 1; 146 } 147 } else window.location.href = URL; 148 } 149 '.($this->popView ? t3lib_BEfunc::viewOnClick($rawRec['pid'],'',t3lib_BEfunc::BEgetRootLine($rawRec['pid'])) : '').' 150 '); 151 152 // Create page HTML header: 153 $this->content.=$this->doc->startPage(''); 154 155 156 // Initialize TCeforms - for rendering the field: 157 $tceforms = t3lib_div::makeInstance('t3lib_TCEforms'); 158 $tceforms->initDefaultBEMode(); // Init... 159 $tceforms->disableWizards = 1; // SPECIAL: Disables all wizards - we are NOT going to need them. 160 $tceforms->colorScheme[0]=$this->doc->bgColor; // SPECIAL: Setting background color of the RTE to ordinary background 161 162 // Initialize style for RTE object: 163 $RTEobj = &t3lib_BEfunc::RTEgetObj(); // Getting reference to the RTE object used to render the field! 164 if ($RTEobj->ID == 'rte') { 165 $RTEobj->RTEdivStyle = 'position:relative; left:0px; top:0px; height:100%; width:100%; border:solid 0px;'; // SPECIAL: Setting style for the RTE <DIV> layer containing the IFRAME 166 # $RTEobj->RTEdivStyle = 'position:relative; left:0px; top:0px; height:600px; width:100%; border:solid 0px;'; // SPECIAL: Setting style for the RTE <DIV> layer containing the IFRAME 167 } 168 169 // Fetching content of record: 170 $trData = t3lib_div::makeInstance('t3lib_transferData'); 171 $trData->lockRecords=1; 172 $trData->fetchRecord($this->P['table'],$this->P['uid'],''); 173 174 // Getting the processed record content out: 175 reset($trData->regTableItems_data); 176 $rec = current($trData->regTableItems_data); 177 $rec['uid'] = $this->P['uid']; 178 $rec['pid'] = $rawRec['pid']; 179 180 // Making the toolbar: 181 $closeUrl = $this->P['returnUrl']; 182 $R_URI=t3lib_div::linkThisScript(array('popView'=>'')); 183 184 // Getting settings for the undo button: 185 $undoButton = 0; 186 $undoRes = $GLOBALS['TYPO3_DB']->exec_SELECTquery('tstamp', 'sys_history', 'tablename='.$GLOBALS['TYPO3_DB']->fullQuoteStr($this->P['table'], 'sys_history').' AND recuid='.intval($this->P['uid']), '', 'tstamp DESC', '1'); 187 if ($undoButtonR = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($undoRes)) { 188 $undoButton = 1; 189 } 190 191 // ShortCut 192 if ($BE_USER->mayMakeShortcut()) { 193 $sCut = $this->doc->makeShortcutIcon('P','',$this->MCONF['name'],1); 194 } else { 195 $sCut =''; 196 } 197 198 199 // Make Toolbar of buttons: 200 $toolBarButtons=array(); 201 202 // Save: 203 $toolBarButtons[]= 204 '<a href="#" onclick="TBE_EDITOR.checkAndDoSubmit(1); return false;">'. 205 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/savedok.gif','width="21" height="16"').' class="c-inputButton" title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.saveDoc',1).'" alt="" />'. 206 '</a>'; 207 208 // Save/View: 209 if (t3lib_extMgm::isLoaded('cms')) { 210 $toolBarButtons[]= 211 '<a href="#" onclick="'.htmlspecialchars('document.editform.redirect.value+=\'&popView=1\'; TBE_EDITOR.checkAndDoSubmit(1); return false;').'">'. 212 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/savedokshow.gif','width="21" height="16"').' class="c-inputButton" title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.saveDocShow',1).'" alt="" />'. 213 '</a>'; 214 } 215 // Save/Close: 216 $toolBarButtons[] = '<input type="image" class="c-inputButton" onclick="'.htmlspecialchars('document.editform.redirect.value=\''.$closeUrl.'\'; TBE_EDITOR.checkAndDoSubmit(1); return false;').'" name="_saveandclosedok"'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/saveandclosedok.gif','').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.saveCloseDoc',1).'" />'; 217 // Close: 218 $toolBarButtons[]= 219 '<a href="#" onclick="'.htmlspecialchars('jumpToUrl(unescape(\''.rawurlencode($closeUrl).'\')); return false;').'">'. 220 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/closedok.gif','width="21" height="16"').' class="c-inputButton" title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.closeDoc',1).'" alt="" />'. 221 '</a>'; 222 223 // Undo/Revert: 224 if ($undoButton) { 225 $toolBarButtons[]= 226 '<a href="#" onclick="'.htmlspecialchars('window.location.href=\'show_rechis.php?element='.rawurlencode($this->P['table'].':'.$this->P['uid']).'&revert='.rawurlencode('field:'.$this->P['field']).'&sumUp=-1&returnUrl='.rawurlencode($R_URI).'\'; return false;').'">'. 227 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/undo.gif','width="21" height="16"').' class="c-inputButton" title="'.htmlspecialchars(sprintf($LANG->getLL('rte_undoLastChange'),t3lib_BEfunc::calcAge(time()-$undoButtonR['tstamp'],$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.minutesHoursDaysYears')))).'" alt="" />'. 228 '</a>'; 229 } 230 231 $panel = '<span class="c-saveButtons">'.implode('',$toolBarButtons).'</span>'; 232 233 234 // TSconfig, setting width: 235 $fieldTSConfig = $tceforms->setTSconfig($this->P['table'],$rec,$this->P['field']); 236 if (strcmp($fieldTSConfig['RTEfullScreenWidth'],'')) { 237 $width=$fieldTSConfig['RTEfullScreenWidth']; 238 } else { 239 $width='500'; 240 } 241 242 // Get the form field and wrap it in the table with the buttons: 243 $formContent = $tceforms->getSoloField($this->P['table'],$rec,$this->P['field']); 244 $formContent = ' 245 246 247 <!-- 248 RTE wizard: 249 --> 250 <table border="0" cellpadding="0" cellspacing="0" width="'.$width.'" id="typo3-rtewizard"> 251 <tr> 252 <td>'.$panel.'</td> 253 <td align="right">'.$sCut.'</td> 254 <td></td> 255 </tr> 256 <tr> 257 <td width="'.$width.'" colspan="2" id="c-formContent">'.$formContent.'</td> 258 <td></td> 259 </tr> 260 </table>'; 261 262 // Adding hidden fields: 263 $formContent.= '<input type="hidden" name="redirect" value="'.htmlspecialchars($R_URI).'" /> 264 <input type="hidden" name="_serialNumber" value="'.md5(microtime()).'" />'; 265 266 267 // Finally, add the whole setup: 268 $this->content.= 269 $tceforms->printNeededJSFunctions_top(). 270 $formContent. 271 $tceforms->printNeededJSFunctions(); 272 } else { 273 // ERROR: 274 $this->content.=$this->doc->startPage(''); 275 $this->content.=$this->doc->section($LANG->getLL('forms_title'),'<span class="typo3-red">'.$LANG->getLL('table_noData',1).'</span>',0,1); 276 } 277 278 } 279 280 /** 281 * Outputting the accumulated content to screen 282 * 283 * @return void 284 */ 285 function printContent() { 286 $this->content.= $this->doc->endPage(); 287 $this->content = $this->doc->insertStylesAndJS($this->content); 288 echo $this->content; 289 } 290 291 /** 292 * Checks access for element 293 * 294 * @param string Table name 295 * @param integer Record uid 296 * @return void 297 */ 298 function checkEditAccess($table,$uid) { 299 global $BE_USER; 300 301 $calcPRec = t3lib_BEfunc::getRecord($table,$uid); 302 t3lib_BEfunc::fixVersioningPid($table,$calcPRec); 303 if (is_array($calcPRec)) { 304 if ($table=='pages') { // If pages: 305 $CALC_PERMS = $BE_USER->calcPerms($calcPRec); 306 $hasAccess = $CALC_PERMS&2 ? TRUE : FALSE; 307 } else { 308 $CALC_PERMS = $BE_USER->calcPerms(t3lib_BEfunc::getRecord('pages',$calcPRec['pid'])); // Fetching pid-record first. 309 $hasAccess = $CALC_PERMS&16 ? TRUE : FALSE; 310 } 311 312 // Check internals regarding access: 313 if ($hasAccess) { 314 $hasAccess = $BE_USER->recordEditAccessInternals($table, $calcPRec); 315 } 316 } else $hasAccess = FALSE; 317 318 return $hasAccess; 319 } 320 } 321 322 // Include extension? 323 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/wizard_rte.php']) { 324 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/wizard_rte.php']); 325 } 326 327 328 329 330 331 332 333 334 335 336 337 338 // Make instance: 339 $SOBE = t3lib_div::makeInstance('SC_wizard_rte'); 340 $SOBE->init(); 341 $SOBE->main(); 342 $SOBE->printContent(); 343 ?>
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 |
|