Fixed bug #17184: Disable the CSRF protection in ExtDirect calls coming from the...
[Packages/TYPO3.CMS.git] / t3lib / class.t3lib_tceforms_fe.php
index a8b64b4..79eabb0 100644 (file)
@@ -1,40 +1,40 @@
 <?php
 /***************************************************************
-*  Copyright notice
-*
-*  (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
-*  All rights reserved
-*
-*  This script is part of the TYPO3 project. The TYPO3 project is
-*  free software; you can redistribute it and/or modify
-*  it under the terms of the GNU General Public License as published by
-*  the Free Software Foundation; either version 2 of the License, or
-*  (at your option) any later version.
-*
-*  The GNU General Public License can be found at
-*  http://www.gnu.org/copyleft/gpl.html.
-*  A copy is found in the textfile GPL.txt and important notices to the license
-*  from the author is found in LICENSE.txt distributed with these scripts.
-*
-*
-*  This script is distributed in the hope that it will be useful,
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-*  GNU General Public License for more details.
-*
-*  This copyright notice MUST APPEAR in all copies of the script!
-***************************************************************/
+ *  Copyright notice
+ *
+ *  (c) 1999-2011 Kasper Skårhøj (kasperYYYY@typo3.com)
+ *  All rights reserved
+ *
+ *  This script is part of the TYPO3 project. The TYPO3 project is
+ *  free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  The GNU General Public License can be found at
+ *  http://www.gnu.org/copyleft/gpl.html.
+ *  A copy is found in the textfile GPL.txt and important notices to the license
+ *  from the author is found in LICENSE.txt distributed with these scripts.
+ *
+ *
+ *  This script is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
 /**
  * [CLASS/FUNCTION INDEX of SCRIPT]
  *
  *
  *
  *   60: class t3lib_TCEforms_FE extends t3lib_TCEforms
- *   68:     public function wrapLabels($str)
- *   78:     public function printPalette(array $paletteArray)
- *  102:     public function setFancyDesign()
- *  131:     public function loadJavascriptLib($lib)
- *  146:     public function addStyleSheet($key, $href, $title='', $relation='stylesheet')
+ *   68:        public function wrapLabels($str)
+ *   78:        public function printPalette(array $paletteArray)
+ *  102:        public function setFancyDesign()
+ *  131:        public function loadJavascriptLib($lib)
+ *  146:        public function addStyleSheet($key, $href, $title='', $relation='stylesheet')
  *
  * TOTAL FUNCTIONS: 5
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  * $Id$
  *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  */
 
 
-
 /**
  * Extension class for the rendering of TCEforms in the frontend
  *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  */
 class t3lib_TCEforms_FE extends t3lib_TCEforms {
 
        /**
+        * Constructs this object.
+        */
+       public function __construct() {
+               $this->initializeTemplateContainer();
+               parent::__construct();
+       }
+
+       /**
         * Function for wrapping labels.
         *
         * @param       string          The string to wrap
@@ -77,12 +84,12 @@ class t3lib_TCEforms_FE extends t3lib_TCEforms {
        public function printPalette(array $paletteArray) {
                $out = '';
                $bgColor = ' bgcolor="#D6DAD0"';
-               foreach($paletteArray as $content) {
+               foreach ($paletteArray as $content) {
                        $hRow[] = '<td' . $bgColor . '><font face="verdana" size="1">&nbsp;</font></td><td nowrap="nowrap"' . $bgColor . '><font color="#666666" face="verdana" size="1">' . $content['NAME'] . '</font></td>';
                        $iRow[] = '<td valign="top">' .
-                                               '<img name="req_' . $content['TABLE'].'_' . $content['ID'] . '_' . $content['FIELD'] . '" src="clear.gif" width="10" height="10" alt="" />' .
-                                               '<img name="cm_' . $content['TABLE'].'_' . $content['ID'] . '_' . $content['FIELD'] . '" src="clear.gif" width="7" height="10" alt="" />' .
-                                               '</td><td nowrap="nowrap" valign="top">' . $content['ITEM'] . $content['HELP_ICON'] . '</td>';
+                                         '<img name="req_' . $content['TABLE'] . '_' . $content['ID'] . '_' . $content['FIELD'] . '" src="clear.gif" width="10" height="10" alt="" />' .
+                                         '<img name="cm_' . $content['TABLE'] . '_' . $content['ID'] . '_' . $content['FIELD'] . '" src="clear.gif" width="7" height="10" alt="" />' .
+                                         '</td><td nowrap="nowrap" valign="top">' . $content['ITEM'] . $content['HELP_ICON'] . '</td>';
                }
                $out = '<table border="0" cellpadding="0" cellspacing="0">
                        <tr><td><img src="clear.gif" width="' . intval($this->paletteMargin) . '" height="1" alt="" /></td>' . implode('', $hRow) . '</tr>
@@ -101,7 +108,7 @@ class t3lib_TCEforms_FE extends t3lib_TCEforms {
        public function setFancyDesign() {
                $this->fieldTemplate = '
        <tr>
-               <td nowrap="nowrap" bgcolor="#F6F2E6">###FIELD_HELP_ICON###<font face="verdana" size="1" color="black"><b>###FIELD_NAME###</b></font>###FIELD_HELP_TEXT###</td>
+               <td nowrap="nowrap" bgcolor="#F6F2E6">###FIELD_HELP_ICON###<font face="verdana" size="1" color="black"><strong>###FIELD_NAME###</strong></font>###FIELD_HELP_TEXT###</td>
        </tr>
        <tr>
                <td nowrap="nowrap" bgcolor="#ABBBB4"><img name="req_###FIELD_TABLE###_###FIELD_ID###_###FIELD_FIELD###" src="clear.gif" width="10" height="10" alt="" /><img name="cm_###FIELD_TABLE###_###FIELD_ID###_###FIELD_FIELD###" src="clear.gif" width="7" height="10" alt="" /><font face="verdana" size="1" color="black">###FIELD_ITEM###</font>###FIELD_PAL_LINK_ICON###</td>
@@ -115,11 +122,11 @@ class t3lib_TCEforms_FE extends t3lib_TCEforms {
        </tr>   ';
                $this->palFieldTemplateHeader = '
        <tr>
-               <td nowrap="nowrap" bgcolor="#F6F2E6"><font face="verdana" size="1" color="black"><b>###FIELD_HEADER###</b></font></td>
+               <td nowrap="nowrap" bgcolor="#F6F2E6"><font face="verdana" size="1" color="black"><strong>###FIELD_HEADER###</strong></font></td>
        </tr>   ';
        }
 
-       /**
+       /**
         * Includes a javascript library that exists in the core /typo3/ directory. The
         * backpath is automatically applied.
         * This method adds the library to $GLOBALS['TSFE']->additionalHeaderData[$lib].
@@ -128,9 +135,10 @@ class t3lib_TCEforms_FE extends t3lib_TCEforms {
         * @return      void
         */
        public function loadJavascriptLib($lib) {
-               if (!isset($GLOBALS['TSFE']->additionalHeaderData[$lib])) {
-                       $GLOBALS['TSFE']->additionalHeaderData[$lib] = '<script type="text/javascript" src="' . $this->backPath . $lib . '"></script>';
-               }
+               /** @var $pageRenderer t3lib_PageRenderer */
+               $pageRenderer = $GLOBALS['TSFE']->getPageRenderer();
+               $pageRenderer->addJsLibrary($lib, $this->prependBackPath($lib));
+
        }
 
        /**
@@ -142,15 +150,47 @@ class t3lib_TCEforms_FE extends t3lib_TCEforms {
         * @return      string          $relation: value for the rel attribute of the link element
         * @return      void
         */
-       public function addStyleSheet($key, $href, $title='', $relation='stylesheet') {
-               if (!isset($GLOBALS['TSFE']->additionalHeaderData[$key])) {
-                       $GLOBALS['TSFE']->additionalHeaderData[$key] = '<link rel="' . $relation . '" type="text/css" href="' . $href . '"' . ($title ? (' title="' . $title . '"') : '') . ' />';
+       public function addStyleSheet($key, $href, $title = '', $relation = 'stylesheet') {
+               /** @var $pageRenderer t3lib_PageRenderer */
+               $pageRenderer = $GLOBALS['TSFE']->getPageRenderer();
+               $pageRenderer->addCssFile($this->prependBackPath($href), $relation, 'screen', $title);
+       }
+
+       /**
+        * Initializes an anonymous template container.
+        * The created container can be compared to alt_doc.php in backend-only disposal.
+        *
+        * @return      void
+        */
+       public function initializeTemplateContainer() {
+               t3lib_div::requireOnce(PATH_typo3 . 'template.php');
+               $GLOBALS['TBE_TEMPLATE'] = t3lib_div::makeInstance('frontendDoc');
+               $GLOBALS['TBE_TEMPLATE']->getPageRenderer()->addInlineSetting(
+                       '', 'PATH_typo3', t3lib_div::dirname(t3lib_div::getIndpEnv('SCRIPT_NAME')) . '/' . TYPO3_mainDir
+               );
+
+               $GLOBALS['SOBE'] = new stdClass();
+               $GLOBALS['SOBE']->doc = $GLOBALS['TBE_TEMPLATE'];
+       }
+
+       /**
+        * Prepends backPath to given URL if it's not an absolute URL
+        *
+        * @param string $url
+        * @return string
+        */
+       private function prependBackPath($url) {
+               if (strpos($url, '://') !== FALSE || substr($url, 0, 1) === '/') {
+                       return $url;
+               } else {
+                       return $this->backPath . $url;
                }
-        }
+
+       }
 }
 
-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_tceforms_fe.php']) {
-       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_tceforms_fe.php']);
+if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_tceforms_fe.php'])) {
+       include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_tceforms_fe.php']);
 }
 
 ?>
\ No newline at end of file