[ Index ]
 

Code source de Typo3 4.1.3

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/typo3/ -> wizard_rte.php (source)

   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  ?>


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