[BUGFIX] Pootle: Multi-line labels are not rendered properly
[Packages/TYPO3.CMS.git] / typo3 / wizard_tsconfig.php
index e46df9b..3efd3b8 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2010 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (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
 /**
  * Wizard for inserting TSconfig in form fields. (page,user or TS)
  *
- * $Id$
- * Revised for TYPO3 3.6 November/2003 by Kasper Skaarhoj
+ * Revised for TYPO3 3.6 November/2003 by Kasper Skårhøj
  * XHTML compliant
  *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
- */
-/**
- * [CLASS/FUNCTION INDEX of SCRIPT]
- *
- *
- *
- *   98: class ext_TSparser extends t3lib_tsparser_ext
- *  106:     function makeHtmlspecialchars($P)
- *
- *
- *  127: class SC_wizard_tsconfig
- *  149:     function init()
- *  202:     function setValue(field,value)
- *  232:     function mixerField(cmd,objString)
- *  258:     function str_replace(match,replace,string)
- *  280:     function jump(show,objString)
- *  295:     function main()
- *  320:     function printContent()
- *  333:     function browseTSprop($mode,$show)
- *
- *              SECTION: Module functions
- *  419:     function getObjTree()
- *  449:     function setObj(&$objTree,$strArr,$params)
- *  469:     function revertFromSpecialChars($str)
- *  482:     function doLink($params)
- *  495:     function removePointerObjects($objArray)
- *  514:     function linkToObj($str,$uid,$objString='')
- *  527:     function printTable($table,$objString,$objTree)
- *  608:     function linkProperty($str,$propertyName,$prefix,$datatype)
- *
- * TOTAL FUNCTIONS: 17
- * (This index is automatically created/updated by the extension "extdeveval")
- *
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  */
 
 
 
-$BACK_PATH='';
+$GLOBALS['BACK_PATH']='';
 require ('init.php');
 require ('template.php');
-$LANG->includeLLFile('EXT:lang/locallang_wizards.xml');
+$GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_wizards.xml');
 
 
 
@@ -83,7 +49,7 @@ $LANG->includeLLFile('EXT:lang/locallang_wizards.xml');
 /**
  * TypoScript parser extension class.
  *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  * @package TYPO3
  * @subpackage core
  */
@@ -112,7 +78,7 @@ class ext_TSparser extends t3lib_tsparser_ext {
 /**
  * Script Class for rendering the TSconfig/TypoScript property browser.
  *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  * @package TYPO3
  * @subpackage core
  */
@@ -144,8 +110,6 @@ class SC_wizard_tsconfig {
         * @return      void
         */
        function init() {
-               global $LANG,$BACK_PATH;
-
                        // Check if the tsconfig_help extension is loaded - which is mandatory for this wizard to work.
                t3lib_extMgm::isLoaded('tsconfig_help',1);
 
@@ -156,7 +120,9 @@ class SC_wizard_tsconfig {
                $this->objString = t3lib_div::_GP('objString');
                $this->onlyProperty = t3lib_div::_GP('onlyProperty');
                        // Preparing some JavaScript code:
-               if (!is_array($this->P['fieldChangeFunc']))     $this->P['fieldChangeFunc']=array();
+               if (!$this->areFieldChangeFunctionsValid()) {
+                       $this->P['fieldChangeFunc']=array();
+               }
                unset($this->P['fieldChangeFunc']['alert']);
                $update='';
                foreach($this->P['fieldChangeFunc'] as $k=>$v)  {
@@ -165,8 +131,8 @@ class SC_wizard_tsconfig {
                }
 
                        // Init the document table object:
-               $this->doc = t3lib_div::makeInstance('mediumDoc');
-               $this->doc->backPath = $BACK_PATH;
+               $this->doc = t3lib_div::makeInstance('template');
+               $this->doc->backPath = $GLOBALS['BACK_PATH'];
                $this->doc->form='<form action="" name="editform">';
 
                        // Adding Styles (should go into stylesheet?)
@@ -284,7 +250,7 @@ class SC_wizard_tsconfig {
 
 
                        // Start the page:
-               $this->content.=$this->doc->startPage($LANG->getLL('tsprop'));
+               $this->content.=$this->doc->startPage($GLOBALS['LANG']->getLL('tsprop'));
        }
 
        /**
@@ -293,21 +259,19 @@ class SC_wizard_tsconfig {
         * @return      void
         */
        function main() {
-               global $LANG;
-
                        // Adding module content:
-               $this->content.=$this->doc->section($LANG->getLL('tsprop'),$this->browseTSprop($this->mode,$this->show),0,1);
+               $this->content.=$this->doc->section($GLOBALS['LANG']->getLL('tsprop'),$this->browseTSprop($this->mode,$this->show),0,1);
 
                        // Adding link to TSref:
                if ($this->mode=='tsref')       {
-                       $this->content.=$this->doc->section($LANG->getLL('tsprop_TSref'),'
-                       <a href="'.htmlspecialchars('http://typo3.org/documentation/document-library/references/doc_core_tsref/current/view/').'" target="_blank">'.$LANG->getLL('tsprop_TSref',1).'</a>
+                       $this->content.=$this->doc->section($GLOBALS['LANG']->getLL('tsprop_TSref'),'
+                       <a href="'. TYPO3_URL_DOCUMENTATION_TSREF.'" target="_blank">'.$GLOBALS['LANG']->getLL('tsprop_TSref',1).'</a>
                        ',0,1);
                }
                        // Adding link to admin guides etc:
                if ($this->mode=='page' || $this->mode=='beuser')       {
-                       $this->content.=$this->doc->section($LANG->getLL('tsprop_tsconfig'),'
-                       <a href="'.htmlspecialchars('http://typo3.org/documentation/document-library/references/doc_core_tsconfig/current/view/').'" target="_blank">'.$LANG->getLL('tsprop_tsconfig',1).'</a>
+                       $this->content.=$this->doc->section($GLOBALS['LANG']->getLL('tsprop_tsconfig'),'
+                       <a href="' . TYPO3_URL_DOCUMENTATION_TSCONFIG . '" target="_blank">' . $GLOBALS['LANG']->getLL('tsprop_tsconfig',1) . '</a>
                        ',0,1);
                }
        }
@@ -331,8 +295,6 @@ class SC_wizard_tsconfig {
         * @return      string          HTML
         */
        function browseTSprop($mode,$show)      {
-               global $LANG;
-
                        // Get object tree:
                $objTree = $this->getObjTree();
 
@@ -347,7 +309,7 @@ class SC_wizard_tsconfig {
 
                                // Title and description:
                        $out.='<a href="'.htmlspecialchars(t3lib_div::linkThisScript(array('show'=>''))).'" class="typo3-goBack">'.
-                                       t3lib_iconWorks::getSpriteIcon('actions-view-go-back') . 
+                                       t3lib_iconWorks::getSpriteIcon('actions-view-go-back') .
                                        htmlspecialchars($obj_string).
                                        '</a><br />';
                        if ($rec['title'])      $out.= '<strong>'.htmlspecialchars($rec['title']).': </strong>';
@@ -360,10 +322,10 @@ class SC_wizard_tsconfig {
                                // Printing the "mixer-field":
                        if (!$this->onlyProperty)       {
                                $links=array();
-                               $links[]='<a href="#" onclick="mixerField(\'Indent\');return false;">'.$LANG->getLL('tsprop_mixer_indent',1).'</a>';
-                               $links[]='<a href="#" onclick="mixerField(\'Outdent\');return false;">'.$LANG->getLL('tsprop_mixer_outdent',1).'</a>';
-                               $links[]='<a href="#" onclick="mixerField(\'Wrap\',unescape(\''.rawurlencode($obj_string).'\'));return false;">'.$LANG->getLL('tsprop_mixer_wrap',1).'</a>';
-                               $links[]='<a href="#" onclick="mixerField(\'Transfer\');return false;">'.$LANG->getLL('tsprop_mixer_transfer',1).'</a>';
+                               $links[]='<a href="#" onclick="mixerField(\'Indent\');return false;">'.$GLOBALS['LANG']->getLL('tsprop_mixer_indent',1).'</a>';
+                               $links[]='<a href="#" onclick="mixerField(\'Outdent\');return false;">'.$GLOBALS['LANG']->getLL('tsprop_mixer_outdent',1).'</a>';
+                               $links[]='<a href="#" onclick="mixerField(\'Wrap\',unescape(\''.rawurlencode($obj_string).'\'));return false;">'.$GLOBALS['LANG']->getLL('tsprop_mixer_wrap',1).'</a>';
+                               $links[]='<a href="#" onclick="mixerField(\'Transfer\');return false;">'.$GLOBALS['LANG']->getLL('tsprop_mixer_transfer',1).'</a>';
                                $out.='<textarea rows="5" name="mixer" wrap="off"'.$this->doc->formWidthText(48,'','off').' class="fixed-font enable-tab"></textarea>';
                                $out.='<br /><strong>'.implode('&nbsp; | &nbsp;',$links).'</strong>';
                                $out.='<hr />';
@@ -388,7 +350,8 @@ class SC_wizard_tsconfig {
                        <!--
                                TSconfig, object tree:
                        -->
-                               <table border="0" cellpadding="0" cellspacing="0" id="typo3-objtree">
+                               <table border="0" cellpadding="0" cellspacing="0" class="t3-tree t3-tree-config" id="typo3-objtree">
+                                       <tr class="t3-row-header"><td>TSref</td></tr>
                                        <tr>
                                                <td nowrap="nowrap">'.$tmpl->ext_getObjTree($this->removePointerObjects($objTree[$mode.'.']),'','','','','1').'</td>
                                        </tr>
@@ -530,22 +493,15 @@ class SC_wizard_tsconfig {
 
                                // Adding header:
                        $lines[]='
-                               <tr>
-                                       <td><img src="clear.gif" width="175" height="1" alt="" /></td>
-                                       <td><img src="clear.gif" width="100" height="1" alt="" /></td>
-                                       <td><img src="clear.gif" width="400" height="1" alt="" /></td>
-                                       <td><img src="clear.gif" width="70" height="1" alt="" /></td>
-                               </tr>';
-                       $lines[]='
-                               <tr class="bgColor5">
-                                       <td><strong>Property:</strong></td>
-                                       <td><strong>Data type:</strong></td>
-                                       <td><strong>Description:</strong></td>
-                                       <td><strong>Default:</strong></td>
+                               <tr class="t3-row-header">
+                                       <td>Property:</td>
+                                       <td>Data type:</td>
+                                       <td>Description:</td>
+                                       <td>Default:</td>
                                </tr>';
 
                                // Traverse the content of "rows":
-                       foreach($table['rows'] as $row) {
+                       foreach($table['rows'] as $i => $row)   {
 
                                        // Linking:
                                $lP=t3lib_div::trimExplode(LF,$row['property'],1);
@@ -573,8 +529,8 @@ class SC_wizard_tsconfig {
 
 
                                $lines[]='
-                                       <tr class="bgColor4">
-                                               <td valign="top" class="bgColor4-20"><strong>'.$linkedProperties.'</strong></td>
+                                       <tr class="t3-row ' . ($i % 2 ? 't3-row-even' : 't3-row-odd') . '">
+                                               <td valign="top" class="bgColor4-20" nowrap="nowrap"><strong>'.$linkedProperties.'</strong></td>
                                                <td valign="top">'.nl2br($dataType.'&nbsp;').'</td>
                                                <td valign="top">'.nl2br($row['description']).'</td>
                                                <td valign="top">'.nl2br($row['default']).'</td>
@@ -588,7 +544,7 @@ class SC_wizard_tsconfig {
                        <!--
                                TSconfig, attribute selector:
                        -->
-                               <table border="0" cellpadding="0" cellspacing="1" width="500" id="typo3-attributes">
+                               <table border="0" cellpadding="0" cellspacing="1" width="98%" class="t3-table" id="typo3-attributes">
                                        '.implode('',$lines).'
                                </table>';
                }
@@ -615,7 +571,7 @@ class SC_wizard_tsconfig {
                if(!$this->onlyProperty)        {
                        $aOnClick = 'document.editform.mixer.value=unescape(\'  '.rawurlencode($propertyName.'='.$propertyVal).'\')+\'\n\'+document.editform.mixer.value; return false;';
                        $out.= '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'.
-                                       t3lib_iconWorks::getSpriteIcon('actions-edit-add', array('title' => $GLOBALS['LANG']->getLL('tsprop_addToList', TRUE))) . 
+                                       t3lib_iconWorks::getSpriteIcon('actions-edit-add', array('title' => $GLOBALS['LANG']->getLL('tsprop_addToList', TRUE))) .
                        '</a>';
                        $propertyName = $prefix.'.'.$propertyName;
                }
@@ -627,11 +583,24 @@ class SC_wizard_tsconfig {
                        // Return link:
                return $out;
        }
+
+       /**
+        * Determines whether submitted field change functions are valid
+        * and are coming from the system and not from an external abuse.
+        *
+        * @return boolean Whether the submitted field change functions are valid
+        */
+       protected function areFieldChangeFunctionsValid() {
+               return (
+                       isset($this->P['fieldChangeFunc']) && is_array($this->P['fieldChangeFunc']) && isset($this->P['fieldChangeFuncHash'])
+                       && $this->P['fieldChangeFuncHash'] === t3lib_div::hmac(serialize($this->P['fieldChangeFunc']))
+               );
+       }
 }
 
 
-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/wizard_tsconfig.php'])      {
-       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/wizard_tsconfig.php']);
+if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/wizard_tsconfig.php'])) {
+       include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/wizard_tsconfig.php']);
 }