*** empty log message ***
authorKasper Skårhøj <kasper@typo3.org>
Tue, 20 Jan 2004 19:49:21 +0000 (19:49 +0000)
committerKasper Skårhøj <kasper@typo3.org>
Tue, 20 Jan 2004 19:49:21 +0000 (19:49 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@117 709f56b5-9817-0410-a4d7-c38de5d9e867

17 files changed:
TODO.txt
t3lib/class.t3lib_cs.php
t3lib/class.t3lib_parsehtml.php
t3lib/class.t3lib_tsfebeuserauth.php
t3lib/config_default.php
t3lib/gfx/edit_fe.gif [new file with mode: 0755]
typo3/alt_main.php
typo3/class.alt_menu_functions.inc
typo3/index.php
typo3/stylesheet.css
typo3/sysext/cms/doc/TODO.txt
typo3/sysext/cms/tslib/class.tslib_content.php
typo3/sysext/cms/tslib/class.tslib_fe.php
typo3/sysext/cms/tslib/class.tslib_menu.php
typo3/sysext/cms/tslib/class.tslib_pagegen.php
typo3/sysext/cms/tslib/class.tslib_pibase.php
typo3/sysext/lang/lang.php

index 745f2f0..209d211 100755 (executable)
--- a/TODO.txt
+++ b/TODO.txt
@@ -80,6 +80,7 @@ TCEmain/TCEforms for FlexForms:
        - mapping values to a plain-text search field(s)  
        - Offering API functions for add/delete/move/copy
        - Cleaning the original data in field since this may have an invalid structure if the data structure has changed in the meantime.
+       - Possibility to write the XML data values into a table instead (see Marc Schlingers idea, stored on paper in my red organizer).
 - TCEforms: 
        - Support for checkboxes which can expand/collapse sections/containers? fold-in, fold-out, passing a list of fields to show (with sub-levels for horizontal display).
        - Visual interface for forms, DHTML for sheets etc, various sheet modes, language menu form.
@@ -166,11 +167,11 @@ Element Browser:
 Wizards:
 - Finish the colorpicker! Some other person can be in charge of this (See "APPENDIX: Colorpicker")
 - Add wizard icon to TSconfig and Setup/Constants fields for immediate syntax highlighting (in popup window)
+- Add wizard icon to see/clean up FlexForm data?
 - wizard_add, _edit and _list can be used fantastic to lead the user through multiple 1:n relations but than he starts to be confused if the records he created apear somewhere else, tries to edit them directly there, relations get lost, phone rings. (Peter K?hn). 
-- forms and table wizards should be configurable for making XML structures alternatively to the currently formatting.
+- forms and table wizards should be configurable for making XML structures alternatively to the currently formatting (programming wise ok, needs implementation)
 
 Interface:
-- Icons (see Bugs/Additions folder)
 - Showing in "frameset-modules" which submodule you are currently inside. And ability to change submodule in the rightmost frame anyways - maybe as a panel in top of the pages (must be cached so all submodules must not be loaded each time...)? (Message-ID: <3ADE655892793D499E2FBF623045AF4B54E9A4@dbwdfx2f.wdf.sap-ag.de>)
 - Ability to create another Main/sub module structure in the backend (Daniel H: Message-ID: <BAB9A920.E95D%daniel@typo3.com>)
        - Change order, level, title, icon.
@@ -196,12 +197,10 @@ Web>List:
 - Support for "grouping": - eg. tt_content elements are grouped by "column" + "language". This should be reflected in the LISTING order (before ordered by the "sorting" column) OR maybe in a hierarchical display?
 - Support for tree-tables (that can be browsed).
 - Support for a "tree-group" -> a chain of tables which are displayed in a tree since each table has a config for a parent field in a former table. (Eg. DS: brand -> domain -> product).
-- BUG: no label when copying an item into the Web>List module...
 - FlexForm tree view / editing: 
        - When a record contains a FlexForm the web>List module could display the fields inside in a nice tree structure which one could expand/collapse! Then by clicking "edit" for a brand you get an interface where you can edit *that branch* of the flexform! Brilliant way to manage large structures inside of flexforms!
                - Can you picture it? That would be like expanding an XML document by a node-tree and add/edit/delete/rearrange any of the internal informational pieces!
 
-               
 File>List:
 - BUG: UNIX: "RW" flag looks only on the permissions for the USER - not the group. So even if PHP via the group of a file can delete it, it is reported that it cannot.
 
@@ -209,16 +208,16 @@ History/Undo:
 - Must present a page/content element view, so a page with content elements can be restored as a whole 
 - Undo must be able to restore attached files as well 
 - Should be possible to disable for certain tables (can it be done already with TSconfig?)
-- Delete saved states (and save whole record content). 
-- Need to implement the diff-feature for windows as well (that is set configuration)
-  
+- Delete saved states (and save whole record content).
+- Need to implement the diff-feature for windows as well (that is; set configuration)
+
 LDAP support:
 - See "APPENDIX: LDAP"
 
 DBAL:
 - Next step: Create PHP-test scripts which performs 98% of the SQL operations we need in TYPO3 and then let people try to implement this; We will then know about all the obstacles first-hand before we do any efforts to implement it.
-- See "APPENDIX: DBAL" for Kaspers internal notes on the subject.
-- "TCEmain/Multiple DBs" as well.
+- See "APPENDIX: DBAL" for Kaspers internal notes on the subject + project description on TYPO3.org
+- "TCEmain/Multiple DBs" as well
 - MySQL practice: "Maybe it's a good idea to quote all table and column names in later versions of typo3 to avoid further problems like this one." (Message-ID: <mailman.1052907363.19535.typo3-english@lists.netfielders.de>) Also good for DBAL? + create API functions for making INSERT/UPDATE query strings.
 
 EM:
@@ -266,24 +265,20 @@ EM:
 - Check mailbox for more... ?
 - Related: The KickStarter Wizard, in particular a) cleaner code output, b) merging updates.
 
-
 The REGEX-{} problem:
 - BUG: Regexs; "Warning: Unmatched \{ in /home/sites/site14/typo3_src-3.5b3/typo3/mod/tools/em/index.php on line 1983" which is a ereg with { WITHOUT preceeding slash! (Message-ID: <003c01c275aa$c0c60c10$e3a1a33e@pentiumriv4v9a>, Message-ID: <20030729082437.79900.qmail@web11305.mail.yahoo.com>)
-  
+
 Install/Servers:
 - FIX: Check safe_mode? Check open_base_dir? (Message-ID: <B9B8E356.1CE0%typo3@ilveneto.net>)
 - FIX: To get PHP to handle PATH_INFO and PATH_TRANSLATED information correctly with this setup, the php parser should be compiled with the --enable-discard-path configure option. 
 - FIX: The "php_sapi_name()=="cgi"||php_sapi_name()=="isapi"" problems (Message-ID: <ADEEJCHPNMOFKAAOJJKKCEKMCAAA.martin.kokes@sitewell.cz>, Message-ID: <200304071146520757.0097D495@smtp.worldonline.dk>, Message-ID: <BACDA028.F428%daniel@typo3.com>)
-- CHECK: MD5 problem on Apache/Windows (Message-ID: <001901c26aeb$99db4c60$a9695651@NIGELJ>)
+- CHECK: MD5 problem on Apache/Windows (Message-ID: <001901c26aeb$99db4c60$a9695651@NIGELJ>) - maybe OK now because of "rb" flag?
 - CHECK: Security: Can HTTP_SERVER_VARS be overridden from URL if global vars are enabled???
 - [Ask Michael Stucki for an overview of bugs...?]
 - TYPO3_PORT bug (Message-ID: <005f01c2df3f$4006db00$0100a8c0@knoell>)
 - BUG: open_base_dir problem with tempnam() (affects: tidy, diff, new resource textfiles created in Web>Template/Info, Indexer (using temp-name for input from pdftotext)
        -> Renes t3lib_exec class useful here?
 
-BE Language:
-- There are a few mails in the Translations mail folder. These files contains some translations which must be integrated manually...
-
 Filepermissions of source:
 - Test that these permissions work OK:
   - chmod 555 typo3_src/ -R
index 9acd5af..e679831 100755 (executable)
@@ -185,6 +185,43 @@ class t3lib_cs {
                KS C 5601 (EUC-KR) 
        */
 
+               // TYPO3 specific: Array with the system charsets used for each system language in TYPO3:
+               // Empty values means "iso-8859-1"
+       var $charSetArray = array(
+               'dk' => '',
+               'de' => '',
+               'no' => '',
+               'it' => '',
+               'fr' => '',
+               'es' => '',
+               'nl' => '',
+               'cz' => 'windows-1250',
+               'pl' => 'iso-8859-2',
+               'si' => 'windows-1250',
+               'fi' => '',
+               'tr' => 'iso-8859-9',
+               'se' => '',
+               'pt' => '',
+               'ru' => 'windows-1251',
+               'ro' => 'iso-8859-2',
+               'ch' => 'gb2312',
+               'sk' => 'windows-1250',
+               'lt' => 'windows-1257',
+               'is' => 'utf-8',
+               'hr' => 'windows-1250',
+               'hu' => 'iso-8859-2',
+               'gl' => '',
+               'th' => 'iso-8859-11',
+               'gr' => 'iso-8859-7',
+               'hk' => 'big5',
+               'eu' => '',
+               'bg' => 'windows-1251',
+               'br' => '',
+               'et' => 'iso-8859-4',
+               'ar' => 'iso-8859-6',
+               'he' => 'utf-8',
+               'ua' => 'windows-1251',
+       );
 
        /**
         * Normalize - changes input character set to lowercase letters.
@@ -194,8 +231,8 @@ class t3lib_cs {
         * @author      Martin Kutschker <martin.t.kutschker@blackbox.net>
         */
        function parse_charset($charset)        {
-               $encoding = strtolower($charset);
-               if (isset($synonyms[$charset])) $encoding = $synonyms[$charset];
+               $charset = strtolower($charset);
+               if (isset($this->synonyms[$charset]))   $charset = $this->synonyms[$charset];
 
                return $charset;
        }
index e43bec8..3a16b83 100644 (file)
@@ -458,7 +458,8 @@ class t3lib_parsehtml {
                $tagStack=array();
                while(list(,$tok)=each($tokArr))        {
                        $firstChar = substr($tok,0,1);
-                       if (strcmp(trim($firstChar),''))        {               // It is a tag...
+#                      if (strcmp(trim($firstChar),''))        {               // It is a tag...
+                       if (ereg('[[:alnum:]\/]',$firstChar))   {               // It is a tag... (first char is a-z0-9 or /) (fixed 19/01 2004)
                                $tagEnd = strcspn($tok,'>');
                                if (strlen($tok)!=$tagEnd)      {       // If there is and end-bracket...
                                        $endTag = $firstChar=='/' ? 1 : 0;
index 2f185f2..7d412d6 100755 (executable)
@@ -155,13 +155,27 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
                        if ($this->extAdmModuleEnabled('info')) $out.= $this->extGetCategory_info();
                }
 
-               $header.='<tr><td bgcolor="#9BA1A8" colspan="2" nowrap="nowrap">';
-               $header.=$this->extItemLink('top','<img src="t3lib/gfx/ol/'.($this->uc['TSFE_adminConfig']['display_top']?'minus':'plus').'bullet.gif" width="18" height="16" align="absmiddle" border="0" alt="" />'.
-                                       $this->extFw('<strong>'.$this->extGetLL('adminOptions').'</strong>')).$this->extFw(': '.$this->user['username']).
-                                       '</td><td bgcolor="#9BA1A8"><img src="clear.gif" width="10" height="1" alt="" /></td><td bgcolor="#9BA1A8"><input type="hidden" name="TSFE_ADMIN_PANEL[display_top]" value="'.$this->uc['TSFE_adminConfig']['display_top'].'" />'.($this->extNeedUpdate?'<input type="submit" value="'.$this->extGetLL('update').'" />':'').'</td></tr>';
+               $header.='
+                       <tr class="typo3-adminPanel-hRow" bgcolor="#9BA1A8">
+                               <td colspan="2" nowrap="nowrap">'.
+                                       $this->extItemLink('top','<img src="t3lib/gfx/ol/'.($this->uc['TSFE_adminConfig']['display_top']?'minus':'plus').'bullet.gif" width="18" height="16" align="absmiddle" border="0" alt="" /><strong>'.$this->extFw($this->extGetLL('adminOptions')).'</strong>').
+                                       $this->extFw(': '.$this->user['username']).
+                                       '</td>
+                               <td><img src="clear.gif" width="10" height="1" alt="" /></td>
+                               <td><input type="hidden" name="TSFE_ADMIN_PANEL[display_top]" value="'.$this->uc['TSFE_adminConfig']['display_top'].'" />'.($this->extNeedUpdate?'<input type="submit" value="'.$this->extGetLL('update').'" />':'').'</td>
+                       </tr>';
+
+               $out='
+<!-- 
+       ADMIN PANEL
+-->
+<a name="TSFE_ADMIN"></a>
+<form name="TSFE_ADMIN_PANEL_FORM" action="'.htmlspecialchars(t3lib_div::getIndpEnv('REQUEST_URI')).'#TSFE_ADMIN" method="post" style="margin: 0 0 0 0;">
+       <table border="0" cellpadding="0" cellspacing="0" class="typo3-adminPanel" bgcolor="#F6F2E6" border="1" bordercolor="black">'.
+               $header.$out.'
+       </table>
+</form>';
 
-               $out='<form name="TSFE_ADMIN_PANEL_FORM" action="'.htmlspecialchars(t3lib_div::getIndpEnv('REQUEST_URI')).'#TSFE_ADMIN" method="post" style="margin: 0 0 0 0;"><table border="0" cellpadding="0" cellspacing="0" bgcolor="#F6F2E6">'.$header.$out.'</table></form>';
-               $out='<a name="TSFE_ADMIN"></a><table border="0" cellpadding="1" cellspacing="0" bgcolor="black"><tr><td>'.$out.'</td></tr></table>';
                if ($this->uc['TSFE_adminConfig']['display_top'])       {
                        $out.='<script type="text/javascript" src="t3lib/jsfunc.evalfield.js"></script>';
                        $out.='
@@ -481,7 +495,10 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
                $out.='<img src="t3lib/gfx/ol/'.($this->uc['TSFE_adminConfig']['display_'.$pre]?'minus':'plus').'bullet.gif" width="18" height="16" align="absmiddle" border="0" alt="" />';
                $out.=$this->extFw($this->extGetLL($pre));
                $out=$this->extItemLink($pre,$out);
-               return '<tr><td bgcolor="#ABBBB4" colspan="4" nowrap="nowrap">'.$out.'<input type="hidden" name="TSFE_ADMIN_PANEL[display_'.$pre.']" value="'.$this->uc['TSFE_adminConfig']['display_'.$pre].'" /></td></tr>';
+               return '
+                               <tr class="typo3-adminPanel-itemHRow" bgcolor="#ABBBB4">
+                                       <td colspan="4" nowrap="nowrap">'.$out.'<input type="hidden" name="TSFE_ADMIN_PANEL[display_'.$pre.']" value="'.$this->uc['TSFE_adminConfig']['display_'.$pre].'" /></td>
+                               </tr>';
        }
 
        /**
@@ -510,12 +527,13 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
         * @see extGetHead()
         */
        function extGetItem($pre,$element)      {
-               return '<tr>
-                       <td><img src="clear.gif" width="50" height="1" alt="" /></td>
-                       <td nowrap="nowrap">'.($pre ? $this->extFw($this->extGetLL($pre)) : '&nbsp;').'</td>
-                       <td><img src="clear.gif" width="10" height="1" alt="" /></td>
-                       <td>'.$element.'</td>
-               </tr>';
+               return '
+                                       <tr class="typo3-adminPanel-itemRow">
+                                               <td><img src="clear.gif" width="50" height="1" alt="" /></td>
+                                               <td nowrap="nowrap">'.($pre ? $this->extFw($this->extGetLL($pre)) : '&nbsp;').'</td>
+                                               <td><img src="clear.gif" width="10" height="1" alt="" /></td>
+                                               <td>'.$element.'</td>
+                                       </tr>';
                
        }
 
@@ -526,7 +544,7 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
         * @return      string          
         */
        function extFw($str)    {
-               return '<font face="Verdana" size="1" color="black"'.($GLOBALS['CLIENT']['FORMSTYLE']?' style="color:black;"':'').'>'.$str.'</font>';
+               return '<font face="verdana,arial" size="1" color="black">'.$str.'</font>';
        }
 
        /**
index 31cfaed..e868b48 100755 (executable)
@@ -209,7 +209,7 @@ define('TYPO3_extTableDef_script', $typo_db_extTableDef_script);
        //              - pages.lang item array (t3lib/stddb/tbl_be.php)
        //              - Kickstarter wizard (ext/extrep_wizard/pi/class.tx_extrepwizard.php)
        //              - Add new file: sysext/lang/locallang_core.[lang_key].php
-       //              - Add character encoding for lang key in sysext/lang/lang.php class
+       //              - Add character encoding for lang key in t3lib/class.t3lib_cs.php
 define('TYPO3_languages', 'default|dk|de|no|it|fr|es|nl|cz|pl|si|fi|tr|se|pt|ru|ro|ch|sk|lt|is|hr|hu|gl|th|gr|hk|eu|bg|br|et|ar|he|ua');
 
        // Unsetting the configured values. Use of these are depreciated.
@@ -314,5 +314,5 @@ unset($LOCAL_LANG);
        // Setting some global vars:
 $EXEC_TIME = time();                                   // $EXEC_TIME is set so that the rest of the script has a common value for the script execution time
 $SIM_EXEC_TIME = $EXEC_TIME;                   // $SIM_EXEC_TIME is set to $EXEC_TIME but can be altered later in the script if we want to simulate another execution-time when selecting from eg. a database 
-$TYPO_VERSION = '3.6.0RC1';                    // TYPO3 version
+$TYPO_VERSION = '3.6.0RC1';                            // TYPO3 version
 ?>
\ No newline at end of file
diff --git a/t3lib/gfx/edit_fe.gif b/t3lib/gfx/edit_fe.gif
new file mode 100755 (executable)
index 0000000..665ce1b
Binary files /dev/null and b/t3lib/gfx/edit_fe.gif differ
index 5bf73dd..46562e9 100755 (executable)
@@ -193,7 +193,7 @@ class SC_alt_main {
 
                        // Detecting the frameset module navigation frame widths (do this AFTER setting new timeout so that any errors in the code below does not prevent another time to be set!)
                if (top && top.content && top.content.nav_frame && top.content.nav_frame.document)      {
-                       TS.navFrameWidth = top.content.nav_frame.document.documentElement.clientWidth ? top.content.nav_frame.document.documentElement.clientWidth : top.content.nav_frame.document.body.clientWidth;
+                       TS.navFrameWidth = (top.content.nav_frame.document.documentElement && top.content.nav_frame.document.documentElement.clientWidth) ? top.content.nav_frame.document.documentElement.clientWidth : top.content.nav_frame.document.body.clientWidth;
                }
        }
        
index 289c37f..ce5e20b 100755 (executable)
@@ -237,7 +237,9 @@ class alt_menu_functions {
                                                if ($addJS && $GLOBALS['BE_USER']->uc['condensedMode']) {$addJS.=  "+(cMR?'&cMR=1':'')";}
 
                                                        // Command for the selector box:
-                                               $JScmd = "top.content.location=top.getModuleUrl(top.TS.PATH_typo3+'".$this->wrapLinkWithAB($link)."'".$addJS.');';
+                                               $JScmd = "
+                                                               top.content.location=top.getModuleUrl(top.TS.PATH_typo3+'".$this->wrapLinkWithAB($link)."'".$addJS.');
+                                                               top.fsMod.currentMainLoaded="'.$moduleName.'";';
 
                                                        // If there is a frameset script in place:
                                                if (!$GLOBALS['BE_USER']->uc['condensedMode'] && $moduleInfo['navFrameScript']) {
index 84415bd..bbf895f 100755 (executable)
@@ -213,14 +213,14 @@ class SC_index {
                $this->content.=$TBE_TEMPLATE->wrapScriptTags('
                
                                // If the login screen is shown in the login_frameset window for re-login, then try to get the username of the current/former login from opening windows main frame:
-                       if (parent.opener && parent.opener.TS && parent.opener.TS.username)     {
+                       if (parent.opener && parent.opener.TS && parent.opener.TS.username && document.loginform && document.loginform.username)        {
                                document.loginform.username.value = parent.opener.TS.username;
                        }
 
                                // If for some reason there already is a username in the username for field, move focus to the password field:
                        if (document.loginform.username && document.loginform.username.value == "") {
                                document.loginform.username.focus();
-                       } else {
+                       } else if (document.loginform.p_field && document.loginform.p_field.type!="hidden") {
                                document.loginform.p_field.focus();
                        }
                ');
index 85ccebc..8f01dc1 100755 (executable)
@@ -59,8 +59,9 @@ H4 {
 
 /* Preformatted text - not used so much in TYPO3 */
 PRE   {
-       font-family: mono-spaced; 
-       font-size: 12px;
+       font-family: monospace; 
+       font-size:11px; 
+       margin: 0 0 0 0;
 }
 
 /* Links in general */
@@ -363,7 +364,7 @@ TABLE.warningbox TD { padding: 20px 20px 20px 20px; font-weight: bold; }
 .diff-r {color: red;}
 .diff-g {color: green;}
 IMG.absmiddle { vertical-align: middle; }
-.smallCheckboxes { width:12; height:12; margin:0 0 0 0; }
+.smallCheckboxes { width:12px; height:12px; margin:0 0 0 0; }
 .uppercase { text-transform : uppercase; }
 
 /* Permissions, green and red */
index 6772c64..d003be9 100755 (executable)
@@ -3,6 +3,7 @@ General:
 - Add a data type getting value from t3lib_div::getIndpVar() to "data" in TS
 - Add a condition, "PIDInFullRootline"
 - Add a data type "level" (general version of eg. "leveltitle") which defines the fieldname as second parameter (see Carlos suggestion in Message-ID: <mailman.1054748584.21635.typo3-features@lists.netfielders.de>)
+- Add "doctype" setting from TS
 - The feature "Get content from page" -> should that be active with "Standard" page type?
 - Some way to show the previous content element in a column ONLY when default display is on (useful for plugins where the default listing normally uses the previous content element, but doesn't want it when showing some details etc.) - probably this is not possible to do well. FlexForms will probably be the long-term answer for many plugins.
 - error-messages in TYPO3 (like "no template found") -> linking (config option)
index 4b3fdbb..cd53a1e 100755 (executable)
  *
  *
  *
- *  242: class tslib_cObj 
- *  339:     function start($data,$table='')   
- *  354:     function setParent($data,$currentRecord)  
+ *  245: class tslib_cObj 
+ *  342:     function start($data,$table='')   
+ *  357:     function setParent($data,$currentRecord)  
  *
  *              SECTION: CONTENT_OBJ:
- *  379:     function getCurrentVal()  
- *  390:     function setCurrentVal($value)    
- *  403:     function cObjGet($setup,$addKey='')       
- *  427:     function cObjGetSingle($name,$conf,$TSkey='__')   
+ *  382:     function getCurrentVal()  
+ *  393:     function setCurrentVal($value)    
+ *  406:     function cObjGet($setup,$addKey='')       
+ *  430:     function cObjGetSingle($name,$conf,$TSkey='__')   
  *
  *              SECTION: Functions rendering content objects (cObjects)
- *  566:     function HTML($conf)      
- *  577:     function TEXT($conf)      
- *  588:     function CLEARGIF($conf)  
- *  607:     function COBJ_ARRAY($conf,$ext='')        
- *  643:     function USER($conf,$ext='')      
- *  670:     function FILE($conf)      
- *  686:     function IMAGE($conf)     
- *  705:     function IMG_RESOURCE($conf)      
- *  717:     function IMGTEXT($conf) 
- * 1091:     function CONTENT($conf)   
- * 1144:     function RECORDS($conf)   
- * 1210:     function HMENU($conf)     
- * 1242:     function CTABLE ($conf)   
- * 1280:     function OTABLE ($conf)   
- * 1295:     function COLUMNS ($conf)  
- * 1374:     function HRULER ($conf)   
- * 1398:     function CASEFUNC ($conf)
- * 1423:     function LOAD_REGISTER($conf,$name)       
- * 1463:     function FORM($conf,$formData='')    
- * 1830:     function SEARCHRESULT($conf)      
- * 1987:     function PHP_SCRIPT($conf,$ext='')        
- * 2030:     function TEMPLATE($conf)  
- * 2174:     function MULTIMEDIA($conf)        
+ *  569:     function HTML($conf)      
+ *  580:     function TEXT($conf)      
+ *  591:     function CLEARGIF($conf)  
+ *  610:     function COBJ_ARRAY($conf,$ext='')        
+ *  646:     function USER($conf,$ext='')      
+ *  673:     function FILE($conf)      
+ *  689:     function IMAGE($conf)     
+ *  708:     function IMG_RESOURCE($conf)      
+ *  720:     function IMGTEXT($conf) 
+ * 1099:     function CONTENT($conf)   
+ * 1152:     function RECORDS($conf)   
+ * 1218:     function HMENU($conf)     
+ * 1250:     function CTABLE ($conf)   
+ * 1288:     function OTABLE ($conf)   
+ * 1303:     function COLUMNS ($conf)  
+ * 1382:     function HRULER ($conf)   
+ * 1406:     function CASEFUNC ($conf)
+ * 1431:     function LOAD_REGISTER($conf,$name)       
+ * 1471:     function FORM($conf,$formData='')    
+ * 1846:     function SEARCHRESULT($conf)      
+ * 2003:     function PHP_SCRIPT($conf,$ext='')        
+ * 2046:     function TEMPLATE($conf)  
+ * 2190:     function MULTIMEDIA($conf)        
  *
  *              SECTION: Various helper functions for content objects:
- * 2258:     function netprintApplication_offsiteLinkWrap($str,$imgConf,$conf) 
- * 2299:     function getFieldDefaultValue($noValueInsert, $fieldName, $defaultVal) 
- * 2317:     function cImage($file,$conf) 
- * 2344:     function imageLinkWrap($string,$imageFile,$conf) 
- * 2408:     function fileResource($fName)     
- * 2431:     function lastChanged($tstamp)     
- * 2448:     function linkWrap($content,$wrap) 
+ * 2279:     function netprintApplication_offsiteLinkWrap($str,$imgConf,$conf) 
+ * 2320:     function getFieldDefaultValue($noValueInsert, $fieldName, $defaultVal) 
+ * 2338:     function cImage($file,$conf) 
+ * 2365:     function imageLinkWrap($string,$imageFile,$conf) 
+ * 2429:     function fileResource($fName)     
+ * 2452:     function lastChanged($tstamp)     
+ * 2469:     function linkWrap($content,$wrap) 
  *
  *              SECTION: HTML template processing functions
- * 2493:     function getSubpart($content, $marker)    
- * 2522:     function substituteSubpart($content,$marker,$subpartContent,$recursive=1) 
- * 2564:     function substituteMarker($content,$marker,$markContent)  
- * 2584:     function substituteMarkerArrayCached($content,$markContentArray=array(),$subpartContentArray=array(),$wrappedSubpartContentArray=array()) 
- * 2682:     function substituteMarkerArray($content,$markContentArray,$wrap='',$uppercase=0)  
- * 2703:     function substituteMarkerInObject(&$tree, $markContentArray) 
- * 2725:     function fillInMarkerArray($markContentArray, $row, $fieldList='', $nl2br=1, $prefix='FIELD_')    
+ * 2514:     function getSubpart($content, $marker)    
+ * 2543:     function substituteSubpart($content,$marker,$subpartContent,$recursive=1) 
+ * 2585:     function substituteMarker($content,$marker,$markContent)  
+ * 2605:     function substituteMarkerArrayCached($content,$markContentArray=array(),$subpartContentArray=array(),$wrappedSubpartContentArray=array()) 
+ * 2703:     function substituteMarkerArray($content,$markContentArray,$wrap='',$uppercase=0)  
+ * 2724:     function substituteMarkerInObject(&$tree, $markContentArray) 
+ * 2746:     function fillInMarkerArray($markContentArray, $row, $fieldList='', $nl2br=1, $prefix='FIELD_')    
  *
  *              SECTION: "stdWrap" + sub functions
- * 2786:     function stdWrap($content,$conf)  
- * 2926:     function numRows($conf)   
- * 2946:     function listNum($content,$listNum,$char) 
- * 2966:     function checkIf($conf)   
- * 3029:     function filelist($data)  
- * 3108:     function clean_directory($theDir) 
- * 3126:     function HTMLparser_TSbridge($theValue, $conf)    
- * 3140:     function dataWrap($content,$wrap) 
- * 3153:     function insertData($str) 
- * 3182:     function substring($content,$options)     
- * 3200:     function crop($content,$options)  
- * 3226:     function textStyle($theValue, $conf) 
- * 3293:     function tableStyle($theValue, $conf) 
- * 3334:     function addParams($content,$conf) 
- * 3372:     function filelink($theValue, $conf)       
- * 3439:     function locDataJU($jumpUrl,$conf)        
- * 3470:     function calc($val)       
- * 3499:     function calcIntExplode($delim, $string)  
- * 3519:     function splitObj($value, $conf)  
- * 3574:     function parseFunc($theValue, $conf) 
- * 3668:     function _parseFunc ($theValue, $conf) 
- * 3870:     function encaps_lineSplit($theValue, $conf)       
- * 3953:     function http_makelinks($data,$conf)      
- * 4012:     function mailto_makelinks($data,$conf)    
- * 4057:     function getImgResource($file,$fileArray) 
+ * 2807:     function stdWrap($content,$conf)  
+ * 2953:     function numRows($conf)   
+ * 2973:     function listNum($content,$listNum,$char) 
+ * 2993:     function checkIf($conf)   
+ * 3056:     function filelist($data)  
+ * 3135:     function clean_directory($theDir) 
+ * 3153:     function HTMLparser_TSbridge($theValue, $conf)    
+ * 3167:     function dataWrap($content,$wrap) 
+ * 3180:     function insertData($str) 
+ * 3210:     function prefixComment($str,$conf,$content)       
+ * 3234:     function substring($content,$options)     
+ * 3252:     function crop($content,$options)  
+ * 3278:     function textStyle($theValue, $conf) 
+ * 3345:     function tableStyle($theValue, $conf) 
+ * 3386:     function addParams($content,$conf) 
+ * 3429:     function filelink($theValue, $conf)       
+ * 3496:     function locDataJU($jumpUrl,$conf)        
+ * 3527:     function calc($val)       
+ * 3556:     function calcIntExplode($delim, $string)  
+ * 3576:     function splitObj($value, $conf)  
+ * 3632:     function parseFunc($theValue, $conf, $ref='') 
+ * 3738:     function _parseFunc ($theValue, $conf) 
+ * 3940:     function encaps_lineSplit($theValue, $conf)       
+ * 4023:     function http_makelinks($data,$conf)      
+ * 4090:     function mailto_makelinks($data,$conf)    
+ * 4135:     function getImgResource($file,$fileArray) 
  *
  *              SECTION: Data retrieval etc.
- * 4229:     function getFieldVal($field)      
- * 4249:     function getData($string,$fieldArray)     
- * 4336:     function rootLineValue($key,$field,$slideBack=0,$altRootLine='')  
- * 4357:     function getGlobal($var) 
- * 4382:     function getKey($key,$arr)        
+ * 4307:     function getFieldVal($field)      
+ * 4327:     function getData($string,$fieldArray)     
+ * 4417:     function rootLineValue($key,$field,$slideBack=0,$altRootLine='')  
+ * 4438:     function getGlobal($var) 
+ * 4463:     function getKey($key,$arr)        
+ * 4485:     function localLangReference($ref,$hsc=FALSE)      
+ * 4520:     function localLangReference_inclLLfile($file,$llKey)      
  *
  *              SECTION: Link functions (typolink)
- * 4437:     function typoLink($linktxt, $conf)        
- * 4682:     function typoLink_URL($conf)      
- * 4700:     function getTypoLink($label,$params,$urlParameters=array(),$target='')    
- * 4730:     function getTypoLink_URL($params,$urlParameters=array(),$target='')       
- * 4742:     function typolinkWrap($conf)      
- * 4755:     function currentPageUrl($urlParameters=array(),$id=0)     
+ * 4573:     function typoLink($linktxt, $conf)        
+ * 4820:     function typoLink_URL($conf)      
+ * 4838:     function getTypoLink($label,$params,$urlParameters=array(),$target='')    
+ * 4868:     function getTypoLink_URL($params,$urlParameters=array(),$target='')       
+ * 4880:     function typolinkWrap($conf)      
+ * 4893:     function currentPageUrl($urlParameters=array(),$id=0)     
  *
  *              SECTION: Miscellaneous functions, stand alone
- * 4799:     function wrap($content,$wrap,$char='|')   
- * 4815:     function noTrimWrap($content,$wrap)       
- * 4829:     function wrapSpace($content, $wrap)       
- * 4855:     function callUserFunction($funcName,$conf,$content)       
- * 4896:     function processParams($params)   
- * 4914:     function keywords($content)       
- * 4931:     function caseshift($theValue, $case)      
- * 4954:     function HTMLcaseshift($theValue, $case)  
- * 4983:     function bytes($sizeInBytes)      
- * 4994:     function calcAge($seconds,$labels)        
- * 5025:     function sendNotifyEmail($msg, $recipients, $cc, $email_from, $email_fromName='', $replyTo='')    
- * 5052:     function URLqMark($url,$params)   
- * 5068:     function checkEmail($email)       
- * 5080:     function clearTSProperties($TSArr,$propList)      
- * 5099:     function mergeTSRef($confArr,$prop)       
- * 5122:     function joinTSarrays($conf,$old_conf)    
- * 5145:     function gifBuilderTextBox($gifbuilderConf, $conf, $text) 
- * 5201:     function linebreaks($string,$chars,$maxLines=0)   
- * 5233:     function getUpdateJS($dataArray, $formName, $arrPrefix, $fieldList, $stripSlashes=1)      
+ * 4937:     function wrap($content,$wrap,$char='|')   
+ * 4953:     function noTrimWrap($content,$wrap)       
+ * 4967:     function wrapSpace($content, $wrap)       
+ * 4993:     function callUserFunction($funcName,$conf,$content)       
+ * 5034:     function processParams($params)   
+ * 5052:     function keywords($content)       
+ * 5069:     function caseshift($theValue, $case)      
+ * 5092:     function HTMLcaseshift($theValue, $case)  
+ * 5121:     function bytes($sizeInBytes,$labels)      
+ * 5132:     function calcAge($seconds,$labels)        
+ * 5163:     function sendNotifyEmail($msg, $recipients, $cc, $email_from, $email_fromName='', $replyTo='')    
+ * 5190:     function URLqMark($url,$params)   
+ * 5206:     function checkEmail($email)       
+ * 5218:     function clearTSProperties($TSArr,$propList)      
+ * 5237:     function mergeTSRef($confArr,$prop)       
+ * 5260:     function joinTSarrays($conf,$old_conf)    
+ * 5283:     function gifBuilderTextBox($gifbuilderConf, $conf, $text) 
+ * 5339:     function linebreaks($string,$chars,$maxLines=0)   
+ * 5371:     function getUpdateJS($dataArray, $formName, $arrPrefix, $fieldList, $stripSlashes=1)      
  *
  *              SECTION: Database functions, making of queries
- * 5304:     function DBgetDelete($table, $uid)        
- * 5330:     function DBgetUpdate($table, $uid, $dataArr, $fieldList, $addSlashes=0)   
- * 5366:     function DBgetInsert($table, $pid, $dataArr, $fieldList, $addSlashes=0)   
- * 5398:     function DBcompileInsert($table,$fp,$vp)  
- * 5414:     function DBmayFEUserEdit($table,$row, $feUserRow, $allowedGroups='',$feEditSelf=0)        
- * 5454:     function DBmayFEUserEditSelect($table,$feUserRow,$allowedGroups='',$feEditSelf=0) 
- * 5494:     function enableFields($table,$show_hidden=0)      
- * 5517:     function getTreeList($id,$depth,$begin=0,$dontCheckEnableFields=0,$addSelectFields='',$moreWhereClauses='')       
- * 5551:     function whereSelectFromList($field,$value)       
- * 5568:     function mm_query($select,$local_table,$mm_table,$foreign_table,$endClause='')    
- * 5587:     function mm_query_uidList($select,$local_table_uidlist,$mm_table,$foreign_table='',$endClause='') 
- * 5603:     function searchWhere($sw,$searchFieldList,$prefixTableName='')    
- * 5638:     function getQuery($table,$conf)   
- * 5696:     function getWhere($table,$conf)   
- * 5764:     function checkPidArray($listArr)  
- * 5788:     function checkPid($uid)   
+ * 5442:     function DBgetDelete($table, $uid)        
+ * 5468:     function DBgetUpdate($table, $uid, $dataArr, $fieldList, $addSlashes=0)   
+ * 5504:     function DBgetInsert($table, $pid, $dataArr, $fieldList, $addSlashes=0)   
+ * 5536:     function DBcompileInsert($table,$fp,$vp)  
+ * 5552:     function DBmayFEUserEdit($table,$row, $feUserRow, $allowedGroups='',$feEditSelf=0)        
+ * 5592:     function DBmayFEUserEditSelect($table,$feUserRow,$allowedGroups='',$feEditSelf=0) 
+ * 5632:     function enableFields($table,$show_hidden=0)      
+ * 5655:     function getTreeList($id,$depth,$begin=0,$dontCheckEnableFields=0,$addSelectFields='',$moreWhereClauses='')       
+ * 5689:     function whereSelectFromList($field,$value)       
+ * 5706:     function mm_query($select,$local_table,$mm_table,$foreign_table,$endClause='')    
+ * 5725:     function mm_query_uidList($select,$local_table_uidlist,$mm_table,$foreign_table='',$endClause='') 
+ * 5741:     function searchWhere($sw,$searchFieldList,$prefixTableName='')    
+ * 5776:     function getQuery($table,$conf)   
+ * 5834:     function getWhere($table,$conf)   
+ * 5902:     function checkPidArray($listArr)  
+ * 5926:     function checkPid($uid)   
  *
  *              SECTION: Frontend editing functions
- * 5845:     function editPanel($content, $conf, $currentRecord='', $dataArr=array())  
- * 5999:     function editIcons($content,$params, $conf=array(), $currentRecord='', $dataArr=array(),$addUrlParamStr='')       
- * 6057:     function editPanelLinkWrap($string,$formName,$cmd,$currentRecord='',$confirm='')  
- * 6095:     function editPanelLinkWrap_doWrap($string,$url,$currentRecord)    
- * 6122:     function editPanelPreviewBorder($table,$row,$content,$thick)      
- * 6139:     function isDisabled($table,$row)  
+ * 5983:     function editPanel($content, $conf, $currentRecord='', $dataArr=array())  
+ * 6138:     function editIcons($content,$params, $conf=array(), $currentRecord='', $dataArr=array(),$addUrlParamStr='')       
+ * 6202:     function editPanelLinkWrap($string,$formName,$cmd,$currentRecord='',$confirm='')  
+ * 6240:     function editPanelLinkWrap_doWrap($string,$url,$currentRecord)    
+ * 6267:     function editPanelPreviewBorder($table,$row,$content,$thick)      
+ * 6284:     function isDisabled($table,$row)  
  *
  *
- * 6170: class tslib_frameset 
- * 6180:     function make($setup)     
- * 6217:     function frameParams($setup, $typeNum)    
- * 6252:     function framesetParams($setup)   
+ * 6315: class tslib_frameset 
+ * 6325:     function make($setup)     
+ * 6362:     function frameParams($setup, $typeNum)    
+ * 6397:     function framesetParams($setup)   
  *
  *
- * 6285: class tslib_tableOffset       
- * 6297:     function start($content,$offset)  
+ * 6430: class tslib_tableOffset       
+ * 6442:     function start($content,$offset)  
  *
  *
- * 6375: class tslib_controlTable      
- * 6410:     function start($offset,$cMargins) 
+ * 6520: class tslib_controlTable      
+ * 6555:     function start($offset,$cMargins) 
  *
- * TOTAL FUNCTIONS: 125
+ * TOTAL FUNCTIONS: 128
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
@@ -1040,7 +1043,7 @@ class tslib_cObj {
                                // Table-tag is inserted
                                $i=$contentPosition;
                                $table_align = (($i==16) ? 'align="'.$align.'"' : '');
-                               $tablecode = '<table'.($tableWidth?' width="'.$tableWidth.'"':'').' border="0" cellspacing="0" cellpadding="0" '.$table_align.'>'.$tablecode;
+                               $tablecode = '<table'.($tableWidth?' width="'.$tableWidth.'"':'').' border="0" cellspacing="0" cellpadding="0" '.$table_align.' class="imgtext-table">'.$tablecode;
                                if ($editIconsHTML)     {       // IF this value is not long since reset.
                                        $tablecode.='<tr><td colspan="'.$colspan.'">'.$editIconsHTML.'</td></tr>';
                                        $editIconsHTML='';
@@ -1065,7 +1068,7 @@ class tslib_cObj {
                                break;
                                case '24':      // in text, no wrap
                                        $theResult = '';
-                                       $theResult.= '<table border="0" cellspacing="0" cellpadding="0"><tr>';
+                                       $theResult.= '<table border="0" cellspacing="0" cellpadding="0" class="imgtext-nowrap"><tr>';
                                        if ($align=='right')    {
                                                $theResult.= '<td valign="top">'.$content.'</td><td valign="top">'.$tablecode.'</td>';
                                        } else {
@@ -1078,6 +1081,11 @@ class tslib_cObj {
                } else {
                        $output= $content;
                }
+
+               if ($conf['stdWrap.']) {
+                       $output = $this->stdWrap($output, $conf['stdWrap.']);
+               }
+               
                return $output;
        }
 
@@ -1187,6 +1195,7 @@ class tslib_cObj {
                                        $renderObjKey = $conf['conf.'][$val['table']] ? 'conf.'.$val['table'] : '';
                                        $renderObjConf = $conf['conf.'][$val['table'].'.'];
                                        $this->currentRecordNumber++;
+                                       $cObj->parentRecordNumber=$this->currentRecordNumber;
                                        $GLOBALS['TSFE']->currentRecord=$val['table'].':'.$val['id'];
                                        $this->lastChanged($row['tstamp']);
                                        $cObj->start($row,$val['table']);
@@ -1694,7 +1703,7 @@ class tslib_cObj {
                                                        $fieldCode = str_replace('<img','<input type="image"'.$addParams.' name="'.$confData['fieldname'].'"' ,$image);
                                                } else {
                                                        $fieldCode=sprintf('<input type="submit" name="%s" value="%s"'.$addParams.' />',
-                                                               $confData['fieldname'], htmlspecialchars($value));
+                                                               $confData['fieldname'], t3lib_div::deHSCentities(htmlspecialchars($value)));
                                                }
                                        break;
                                        default:
@@ -2228,6 +2237,11 @@ class tslib_cObj {
                                }
                        }
                }
+
+               if ($conf['stdWrap.']) {
+                       $content=$this->stdWrap($content, $conf['stdWrap.']);
+               }
+
                return $content;
        }       
 
@@ -2834,7 +2848,8 @@ class tslib_cObj {
                                $content = '';
                        } else {
                                        // Perform data processing:
-                               if ($conf['parseFunc.']) {$content=$this->parseFunc($content,$conf['parseFunc.']);}
+                               if ($conf['csConv'])    { $content=$GLOBALS['TSFE']->csConv($content,$conf['csConv']); }
+                               if ($conf['parseFunc.'] || $conf['parseFunc']) {$content=$this->parseFunc($content,$conf['parseFunc.'],$conf['parseFunc']);}
                                if ($conf['HTMLparser'] && is_array($conf['HTMLparser.'])) {$content=$this->HTMLparser_TSbridge($content,$conf['HTMLparser.']);}
                                if ($conf['split.']){$content=$this->splitObj($content,$conf['split.']);}
                                if ($conf['prioriCalc']){$content=t3lib_div::calcParenthesis($content); if ($conf['prioriCalc']=='intval') $content=intval($content);}
@@ -2903,6 +2918,9 @@ class tslib_cObj {
                                        if ($conf['offsetWrap.']['stdWrap.'])   {       $content=$this->stdWrap($content,$conf['offsetWrap.']['stdWrap.']);     }
                                }
                                if ($conf['postUserFunc'])      {$content = $this->callUserFunction($conf['postUserFunc'], $conf['postUserFunc.'], $content);}
+                               
+                                       // Various:
+                               if ($conf['prefixComment'] && !$GLOBALS['TSFE']->config['config']['disablePrefixComment'])      {$content = $this->prefixComment($conf['prefixComment'], $conf['prefixComment.'], $content);}
 
                                if ($conf['editIcons'] && $GLOBALS['TSFE']->beUserLogin){$content=$this->editIcons($content,$conf['editIcons'],$conf['editIcons.']);}
                                if ($conf['editPanel'] && $GLOBALS['TSFE']->beUserLogin){$content=$this->editPanel($content, $conf['editPanel.']);}
@@ -3180,6 +3198,31 @@ class tslib_cObj {
                } while($pointer<$totalLen);
                return $newVal;
        }
+       
+       /**
+        * Returns a HTML comment with the second part of input string (divided by "|") where first part is an integer telling how many trailing tabs to put before the comment on a new line.
+        * Notice; this function (used by stdWrap) can be disabled by a "config.disablePrefixComment" setting in TypoScript.
+        * 
+        * @param       string          Input value
+        * @param       array           TypoScript Configuration (not used at this point.)
+        * @param       string          The content to wrap the comment around.
+        * @return      string          Processed input value
+        * @see stdWrap()
+        */
+       function prefixComment($str,$conf,$content)     {
+               $parts = explode('|',$str);
+               
+               $output = 
+                       chr(10).str_pad('',$parts[0],chr(9)).
+                       '<!-- '.htmlspecialchars($this->insertData($parts[1])).' [begin] -->'.
+                       chr(10).str_pad('',$parts[0]+1,chr(9)).
+                               $content.
+                       chr(10).str_pad('',$parts[0],chr(9)).
+                       '<!-- '.htmlspecialchars($this->insertData($parts[1])).' [end] -->'.
+                       chr(10).str_pad('',$parts[0]+1,chr(9));
+
+               return $output;
+       }
 
        /**
         * Implements the stdWrap property "substring" which is basically a TypoScript implementation of the PHP function, substr()
@@ -3583,11 +3626,24 @@ class tslib_cObj {
         * 
         * @param       string          The value to process.
         * @param       array           TypoScript configuration for parseFunc
+        * @param       string          Reference to get configuration from. Eg. "< lib.parseFunc" which means that the configuration of the object path "lib.parseFunc" will be retrieved and MERGED with what is in $conf!
         * @return      string          The processed value
         * @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=327&cHash=33331f0396
         * @see _parseFunc()
         */
-       function parseFunc($theValue, $conf) {
+       function parseFunc($theValue, $conf, $ref='') {
+       
+                       // Fetch / merge reference, if any
+               if ($ref)       {
+                       $temp_conf = array(
+                                                               'parseFunc' => $ref,
+                                                               'parseFunc.' => $conf
+                                                       );
+                       $temp_conf = $this->mergeTSRef($temp_conf, 'parseFunc');
+                       $conf = $temp_conf['parseFunc.'];
+               }
+
+                       // Process:
                if (strcmp($conf['externalBlocks'],'')) {
                        $tags = strtolower(implode(',',t3lib_div::trimExplode(',',$conf['externalBlocks'])));
                        $htmlParser = t3lib_div::makeInstance('t3lib_parsehtml');
@@ -4340,6 +4396,16 @@ class tslib_cObj {
                                                $db_rec = $GLOBALS['TSFE']->sys_page->getRawRecord($selectParts[0],$selectParts[1]);
                                                if (is_array($db_rec) && $selectParts[2])       {$retVal = $db_rec[$selectParts[2]];}
                                        break;
+                                       case 'lll':
+                                               $retVal= $GLOBALS['TSFE']->sL('LLL:'.$key);
+                                       break;
+                                       case 'cobj':
+                                               switch((string)$key)    {
+                                                       case 'parentRecordNumber':
+                                                               $retVal = $this->parentRecordNumber;
+                                                       break;
+                                               }
+                                       break;
                                }
                        }
                }
@@ -4429,9 +4495,6 @@ class tslib_cObj {
        
        
        
-       
-       
-       
 
 
 
@@ -4859,10 +4922,10 @@ class tslib_cObj {
                        $wrapBefore = intval($wrapArray[0]);
                        $wrapAfter = intval($wrapArray[1]);
                        if ($wrapBefore)        {
-                               $result = '<img src="'.$GLOBALS['TSFE']->absRefPrefix.'clear.gif" width="1" height="'.$wrapBefore.'" border="0" alt="" /><br />'.$result;
+                               $result = '<img src="'.$GLOBALS['TSFE']->absRefPrefix.'clear.gif" width="1" height="'.$wrapBefore.'" border="0" class="spacer-gif" alt="" /><br />'.$result;
                        }
                        if ($wrapAfter) {
-                               $result.='<img src="'.$GLOBALS['TSFE']->absRefPrefix.'clear.gif" width="1" height="'.$wrapAfter.'" border="0" alt="" /><br />';
+                               $result.='<img src="'.$GLOBALS['TSFE']->absRefPrefix.'clear.gif" width="1" height="'.$wrapAfter.'" border="0" class="spacer-gif" alt="" /><br />';
                        }
                }
                return $result;
@@ -5911,11 +5974,11 @@ class tslib_cObj {
                if ($GLOBALS['TSFE']->displayEditIcons && $table && $mayEdit)   {
                        $GLOBALS['TSFE']->set_no_cache();               // Special content is about to be shown, so the cache must be disabled.
                        $formName = 'TSFE_EDIT_FORM_'.substr($GLOBALS['TSFE']->uniqueHash(),0,4);
-                       $formTag = '<form name="'.$formName.'" action="'.htmlspecialchars(t3lib_div::getIndpEnv('REQUEST_URI')).'" method="post" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'" onsubmit="return TBE_EDITOR_checkSubmit(1);">';
+                       $formTag = '<form name="'.$formName.'" action="'.htmlspecialchars(t3lib_div::getIndpEnv('REQUEST_URI')).'" method="post" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'" onsubmit="return TBE_EDITOR_checkSubmit(1);" style="margin: 0 0 0 0;">';
                        $sortField = $TCA[$table]['ctrl']['sortby'];
                        $labelField = $TCA[$table]['ctrl']['label'];
                        $hideField = $TCA[$table]['ctrl']['enablecolumns']['disabled'];
-                       $blackLine = $conf['line']?'<img src="clear.gif" width="1" height="'.intval($conf['line']).'" alt="" /><br /><table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="black"><tr><td><img src="clear.gif" width="1" height="1" alt="" /></td></tr></table><br />':'';
+                       $blackLine = $conf['line']?'<img src="clear.gif" width="1" height="'.intval($conf['line']).'" alt="" /><br /><table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="black" style="border: 0px;"><tr style="border: 0px;"><td style="border: 0px;"><img src="clear.gif" width="1" height="1" alt="" /></td></tr></table><br />':'';
 
                        $theCmd='';
                        if (is_array($GLOBALS['HTTP_POST_VARS']['TSFE_EDIT']) && $GLOBALS['HTTP_POST_VARS']['TSFE_EDIT']['record']==$currentRecord && !$GLOBALS['HTTP_POST_VARS']['TSFE_EDIT']['update_close']) {
@@ -5993,10 +6056,20 @@ class tslib_cObj {
                                        if (isset($allow['delete']))            {$panel.=$this->editPanelLinkWrap('<img src="t3lib/gfx/delete_record.gif" width="12" height="12" vspace="1" hspace="2" border="0" title="'.$BE_USER->extGetLL('p_delete').'" align="top" alt="" />',$formName,'delete','',$BE_USER->extGetLL('p_deleteConfirm'));       }
 
                                                //      Final                           
-                                       $panel='<tr><td bgcolor="#ABBBB4">'.$panel.'</td>'.($conf['label']?'<td nowrap="nowrap" bgcolor="#F6F2E6"><font face="verdana" size="1" color="black">&nbsp;'.sprintf($conf['label'],htmlspecialchars(t3lib_div::fixed_lgd($dataArr[$labelField],50))).'&nbsp;</font></td>':'').'</tr>';
-                                       $panel=$formTag.'<input type="hidden" name="TSFE_EDIT[cmd]" value="" /><input type="hidden" name="TSFE_EDIT[record]" value="'.$currentRecord.'" />'.$panel.'</form>';
-                                       $panel='<table border="0" cellpadding="0" cellspacing="0" width="100%">'.$panel.'</table>';
-                                       $panel='<table border="0" cellpadding="1" cellspacing="0" bgcolor="black"><tr><td>'.$panel.'</td></tr></table>';
+                                       $labelTxt = $this->stdWrap($conf['label'],$conf['label.']);
+                                       $panel='
+                               
+                                                               <!-- BE_USER Edit Panel: -->
+                                                               '.$formTag.'
+                                                                       <input type="hidden" name="TSFE_EDIT[cmd]" value="" />
+                                                                       <input type="hidden" name="TSFE_EDIT[record]" value="'.$currentRecord.'" />
+                                                                       <table border="0" cellpadding="0" cellspacing="0" border="1" bordercolor="black" class="typo3-editPanel">
+                                                                               <tr>
+                                                                                       <td nowrap="nowrap" bgcolor="#ABBBB4" class="typo3-editPanel-controls">'.$panel.'</td>'.($labelTxt?'
+                                                                                       <td nowrap="nowrap" bgcolor="#F6F2E6" class="typo3-editPanel-label"><font face="verdana" size="1" color="black">&nbsp;'.sprintf($labelTxt,htmlspecialchars(t3lib_div::fixed_lgd($dataArr[$labelField],50))).'&nbsp;</font></td>':'').'
+                                                                               </tr>
+                                                                       </table>
+                                                               </form>';
                                                // add black line:
                                        $panel.=$blackLine;
                                        $finalOut = $content.$panel;
@@ -6051,18 +6124,24 @@ class tslib_cObj {
 
                if ($GLOBALS['TSFE']->displayFieldEditIcons && $table && $mayEdit && $fieldList)        {
                        $GLOBALS['TSFE']->set_no_cache();               // Special content is about to be shown, so the cache must be disabled.
-                       $iconImg = '<img src="t3lib/gfx/edit2.gif" width="11" height="12" border="0" align="top" title="'.htmlspecialchars($conf['iconTitle']).'" alt="" style="position:absolute;" />';
+                       $style = $conf['styleAttribute'] ? ' style="'.htmlspecialchars($conf['styleAttribute']).'"' : '';
+                       $iconTitle = $this->stdWrap($conf['iconTitle'],$conf['iconTitle.']);
+                       $iconImg = $conf['iconImg'] ? $conf['iconImg'] : '<img src="t3lib/gfx/edit_fe.gif" width="11" height="12" border="0" align="top" title="'.t3lib_div::deHSCentities(htmlspecialchars($iconTitle)).'"'.$style.' class="frontEndEditIcons" alt="" />';
                        $nV=t3lib_div::GPvar('ADMCMD_view')?1:0;
                        $icon = $this->editPanelLinkWrap_doWrap($iconImg,TYPO3_mainDir.'alt_doc.php?edit['.$rParts[0].']['.$rParts[1].']=edit&columnsOnly='.rawurlencode($fieldList).'&noView='.$nV.$addUrlParamStr,implode(':',$rParts));
-                       if ($conf['beforeLastTag'])     {
+                       if ($conf['beforeLastTag']<0)   {
+                               $content=$icon.$content;
+                       } elseif ($conf['beforeLastTag']>0)     {
                                $cBuf = rtrim($content);
                                $securCount=10;
-                               while($securCount && substr($cBuf,-1)=='>')     {
+                               while($securCount && substr($cBuf,-1)=='>' && substr($cBuf,-4)!='</a>') {
                                        $cBuf = rtrim(ereg_replace('<[^<]*>$','',$cBuf));
                                        $securCount--;
                                }
-                               $content=strlen($cBuf)&&$securCount? substr($content,0,strlen($cBuf)).$icon.substr($content,strlen($cBuf)) : $content=$icon.$content;
-                       } else $content.=$icon;
+                               $content = strlen($cBuf)&&$securCount ? substr($content,0,strlen($cBuf)).$icon.substr($content,strlen($cBuf)) : $content=$icon.$content;
+                       } else {
+                               $content.=$icon;
+                       }
                }
                return $content;
        }
index 6d800f9..f318a89 100755 (executable)
  *
  *
  *  176: class tslib_fe        
- *  324:     function tslib_fe($TYPO3_CONF_VARS, $id, $type, $no_cache='', $cHash='', $jumpurl='',$MP='',$RDCT='')     
- *  346:     function connectToMySQL() 
- *  382:     function sendRedirect()   
+ *  326:     function tslib_fe($TYPO3_CONF_VARS, $id, $type, $no_cache='', $cHash='', $jumpurl='',$MP='',$RDCT='')     
+ *  348:     function connectToMySQL() 
+ *  384:     function sendRedirect()   
  *
  *              SECTION: Initializing, resolving page id
- *  422:     function initFEuser()     
- *  477:     function checkAlternativeIdMethods()      
- *  523:     function clear_preview()  
- *  536:     function determineId()    
- *  608:     function fetch_the_id()   
- *  714:     function getPageAndRootline() 
- *  776:     function getPageShortcut($SC,$mode,$thisUid,$itera=20,$pageLog=array())   
- *  821:     function checkRootlineForIncludeSection() 
- *  855:     function checkEnableFields($row)  
- *  873:     function checkPagerecordForIncludeSection($row)   
- *  885:     function setIDfromArgV()  
- *  901:     function getPageAndRootlineWithDomain($domainStartPage)   
- *  929:     function findDomainRecord($recursive=0)   
- *  950:     function pageNotFoundHandler($code,$header='')    
- *  972:     function checkAndSetAlias()       
- *  987:     function idPartsAnalyze($str)     
+ *  424:     function initFEuser()     
+ *  479:     function checkAlternativeIdMethods()      
+ *  525:     function clear_preview()  
+ *  538:     function determineId()    
+ *  610:     function fetch_the_id()   
+ *  716:     function getPageAndRootline() 
+ *  778:     function getPageShortcut($SC,$mode,$thisUid,$itera=20,$pageLog=array())   
+ *  823:     function checkRootlineForIncludeSection() 
+ *  857:     function checkEnableFields($row)  
+ *  875:     function checkPagerecordForIncludeSection($row)   
+ *  887:     function setIDfromArgV()  
+ *  903:     function getPageAndRootlineWithDomain($domainStartPage)   
+ *  931:     function findDomainRecord($recursive=0)   
+ *  952:     function pageNotFoundHandler($code,$header='')    
+ *  974:     function checkAndSetAlias()       
+ *  989:     function idPartsAnalyze($str)     
  *
  *              SECTION: Template and caching related functions.
- * 1042:     function makeCacheHash()  
- * 1063:     function cHashParams($addQueryParams) 
- * 1082:     function initTemplate()   
- * 1094:     function getFromCache()   
- * 1149:     function getHash()        
- * 1168:     function getConfigArray() 
+ * 1044:     function makeCacheHash()  
+ * 1065:     function cHashParams($addQueryParams) 
+ * 1086:     function initTemplate()   
+ * 1098:     function getFromCache()   
+ * 1153:     function getHash()        
+ * 1172:     function getConfigArray() 
  *
  *              SECTION: Further initialization and data processing
- * 1282:     function getCompressedTCarray()   
- * 1319:     function includeTCA($TCAloaded=1) 
- * 1346:     function settingLanguage()        
- * 1386:     function checkDataSubmission()    
- * 1411:     function fe_tce() 
- * 1425:     function locDataCheck($locationData)      
- * 1441:     function sendFormmail()   
- * 1459:     function checkJumpUrl()   
- * 1531:     function jumpUrl()        
- * 1574:     function setUrlIdToken()  
+ * 1286:     function getCompressedTCarray()   
+ * 1323:     function includeTCA($TCAloaded=1) 
+ * 1349:     function settingLanguage()        
+ * 1389:     function checkDataSubmission()    
+ * 1414:     function fe_tce() 
+ * 1428:     function locDataCheck($locationData)      
+ * 1444:     function sendFormmail()   
+ * 1462:     function checkJumpUrl()   
+ * 1534:     function jumpUrl()        
+ * 1577:     function setUrlIdToken()  
  *
  *              SECTION: Page generation; cache handling
- * 1617:     function isGeneratePage() 
- * 1627:     function tempPageCacheContent()   
- * 1658:     function realPageCacheContent()   
- * 1680:     function setPageCacheContent($c,$d,$t)    
- * 1692:     function clearPageCacheContent()  
- * 1702:     function clearPageCacheContent_pidList($pidList)  
- * 1713:     function setSysLastChanged()      
+ * 1620:     function isGeneratePage() 
+ * 1630:     function tempPageCacheContent()   
+ * 1661:     function realPageCacheContent()   
+ * 1683:     function setPageCacheContent($c,$d,$t)    
+ * 1695:     function clearPageCacheContent()  
+ * 1705:     function clearPageCacheContent_pidList($pidList)  
+ * 1716:     function setSysLastChanged()      
  *
  *              SECTION: Page generation; rendering and inclusion
- * 1750:     function generatePage_preProcessing()     
- * 1786:     function generatePage_whichScript()       
- * 1798:     function generatePage_postProcessing()    
- * 1856:     function INTincScript()   
- * 1914:     function INTincScript_loadJSCode()        
- * 1955:     function isINTincScript() 
- * 1964:     function isSearchIndexPage()      
- * 1973:     function doXHTML_cleaning()       
+ * 1753:     function generatePage_preProcessing()     
+ * 1789:     function generatePage_whichScript()       
+ * 1801:     function generatePage_postProcessing()    
+ * 1859:     function INTincScript()   
+ * 1917:     function INTincScript_loadJSCode()        
+ * 1958:     function isINTincScript() 
+ * 1967:     function isSearchIndexPage()      
+ * 1976:     function doXHTML_cleaning()       
  *
  *              SECTION: Finished off; outputting, storing session data, statistics...
- * 2005:     function isOutputting()   
- * 2016:     function processOutput()  
- * 2068:     function isEXTincScript() 
- * 2077:     function storeSessionData()       
- * 2087:     function setParseTime()   
- * 2099:     function statistics()     
- * 2176:     function previewInfo()    
- * 2197:     function beLoginLinkIPList()      
+ * 2008:     function isOutputting()   
+ * 2019:     function processOutput()  
+ * 2071:     function isEXTincScript() 
+ * 2080:     function storeSessionData()       
+ * 2090:     function setParseTime()   
+ * 2102:     function statistics()     
+ * 2179:     function previewInfo()    
+ * 2200:     function beLoginLinkIPList()      
  *
  *              SECTION: Various internal API functions
- * 2252:     function makeSimulFileName($inTitle,$page,$type,$addParams='',$no_cache='')       
- * 2294:     function simulateStaticDocuments_pEnc_onlyP_proc($linkVars)       
- * 2322:     function getSimulFileName()       
- * 2335:     function encryptEmail($string,$back=0)    
- * 2352:     function checkFileInclude($incFile)       
- * 2367:     function newCObj()        
- * 2380:     function setAbsRefPrefix()        
- * 2396:     function printError($label,$header='Error!')      
- * 2407:     function updateMD5paramsRecord($hash)     
- * 2419:     function tidyHTML($content)               
+ * 2255:     function makeSimulFileName($inTitle,$page,$type,$addParams='',$no_cache='')       
+ * 2297:     function simulateStaticDocuments_pEnc_onlyP_proc($linkVars)       
+ * 2325:     function getSimulFileName()       
+ * 2338:     function encryptEmail($string,$back=0)    
+ * 2355:     function checkFileInclude($incFile)       
+ * 2370:     function newCObj()        
+ * 2383:     function setAbsRefPrefix()        
+ * 2399:     function printError($label,$header='Error!')      
+ * 2410:     function updateMD5paramsRecord($hash)     
+ * 2422:     function tidyHTML($content)               
  *
  *              SECTION: Various external API functions - for use in plugins etc.
- * 2480:     function getStorageSiterootPids() 
- * 2495:     function getPagesTSconfig()       
- * 2528:     function setJS($key,$content='')  
- * 2566:     function setCSS($key,$content)    
- * 2581:     function make_seed() 
- * 2594:     function uniqueHash($str='')      
- * 2603:     function set_no_cache()   
- * 2613:     function set_cache_timeout_default($seconds)      
- * 2629:     function plainMailEncoded($email,$subject,$message,$headers='')   
- * 2652:     function sL($input)       
- * 2683:     function readLLfile($fileRef)     
- * 2698:     function getLLL($index,$LOCAL_LANG)       
- * 2712:     function initLLvars()     
+ * 2483:     function getStorageSiterootPids() 
+ * 2498:     function getPagesTSconfig()       
+ * 2531:     function setJS($key,$content='')  
+ * 2569:     function setCSS($key,$content)    
+ * 2584:     function make_seed() 
+ * 2597:     function uniqueHash($str='')      
+ * 2606:     function set_no_cache()   
+ * 2616:     function set_cache_timeout_default($seconds)      
+ * 2632:     function plainMailEncoded($email,$subject,$message,$headers='')   
+ * 2655:     function sL($input)       
+ * 2686:     function readLLfile($fileRef)     
+ * 2701:     function getLLL($index,$LOCAL_LANG)       
+ * 2715:     function initLLvars()     
  *
  * TOTAL FUNCTIONS: 81
  * (This index is automatically created/updated by the extension "extdeveval")
        
                // Character set (charset) conversion object:
        var $csConvObj;                                         // An instance of the "t3lib_cs" class. May be used by any application.
+       var $defaultCharSet='iso-8859-1';       // The default charset used in the frontend if nothing else is set.
        
                // CONTENT accumulation
        var $content='';                                        // All page content is accumulated in this variable. See pagegen.php
        
                // GENERAL
-       var $clientInfo='';                             // Set to the browser: net / msie if 4+ browsers
+       var $clientInfo='';                                     // Set to the browser: net / msie if 4+ browsers
        var $scriptParseTime=0;
-       var $TCAloaded = 0;                     // Set ONLY if the full TCA is loaded
+       var $TCAloaded = 0;                                     // Set ONLY if the full TCA is loaded
        
                // LANG:
-       var $lang='';
-       var $langSplitIndex=0;
+       var $lang='';                                           // Set to the system language key (used on the site)
+       var $langSplitIndex=0;                          // Set to the index number of the language key
+       var $labelsCharset='';                          // Charset of the labels from locallang (based on $this->lang)
+       var $siteCharset='';                            // Charset of the website.
+       var $convCharsetToFrom='';                      // Set to the charsets to convert from/to IF there are any difference. Otherwise this stays a string
        var $LL_labels_cache=array();
        var $LL_files_cache=array();
        
@@ -2671,13 +2675,38 @@ if (version == "n3") {
                                if (!isset($this->LL_files_cache[$parts[0]]))   {       // Getting data if not cached
                                        $this->LL_files_cache[$parts[0]] = $this->readLLfile($parts[0]);
                                }
-                               $this->LL_labels_cache[$this->lang][$input] = $this->getLLL($parts[1],$this->LL_files_cache[$parts[0]]);
+                               $this->LL_labels_cache[$this->lang][$input] = $this->csConv($this->getLLL($parts[1],$this->LL_files_cache[$parts[0]]));
                        }
                        return $this->LL_labels_cache[$this->lang][$input];
                }
        }
        
        /**
+        * Converts the charset of the input string if applicable.
+        * The "from" charset is determined by the TYPO3 system charset for the current language key ($this->lang)
+        * The "to" charset is determined by the currently used charset for the page which is "iso-8859-1" by default or set by $GLOBALS['TSFE']->config['config']['metaCharset']
+        * Only if there is a difference between the two charsets will a conversion be made
+        * The conversion is done real-time - no caching for performance at this point!
+        * 
+        * @param       string          String to convert charset for
+        * @param       string          Optional "from" charset.
+        * @return      string          Output string, converted if needed.
+        * @see initLLvars(), t3lib_cs
+        */
+       function csConv($str,$from='')  {
+               if (!$this->lang)       $this->initLLvars();
+
+               if ($from)      {
+                       $output = $this->csConvObj->conv($str,$this->csConvObj->parse_charset($from),$this->siteCharset,1);
+                       return $output ? $output : $str;
+               } elseif (is_array($this->convCharsetToFrom))   {
+                       return $this->csConvObj->conv($str,$this->convCharsetToFrom['from'],$this->convCharsetToFrom['to'],1);
+               } else {
+                       return $str;
+               }
+       }
+       
+       /**
         * Read locallang files - for frontend applications
         * 
         * @param       string          Reference to a relative filename to include.
@@ -2714,10 +2743,21 @@ if (version == "n3") {
         */
        function initLLvars()   {
                $this->lang = $this->config['config']['language'] ? $this->config['config']['language'] : 'default';
+
                $ls = explode('|',TYPO3_languages);
                while(list($i,$v)=each($ls))    {
                        if ($v==$this->lang)    {$this->langSplitIndex=$i; break;}
                }
+
+                       // Setting charsets:
+               $this->siteCharset = $this->csConvObj->parse_charset($GLOBALS['TSFE']->config['config']['metaCharset'] ? $GLOBALS['TSFE']->config['config']['metaCharset'] : $GLOBALS['TSFE']->defaultCharSet);
+               $this->labelsCharset = $this->csConvObj->parse_charset($this->csConvObj->charSetArray[$this->lang] ? $this->csConvObj->charSetArray[$this->lang] : 'iso-8859-1');
+               if ($this->siteCharset != $this->labelsCharset) {
+                       $this->convCharsetToFrom=array(
+                               'from' => $this->labelsCharset,
+                               'to' => $this->siteCharset
+                       );
+               }
        }
 }
 
index 5032aa1..ee8dd8f 100755 (executable)
  *
  *
  *  139: class tslib_menu 
- *  182:     function start($tmpl,$sys_page,$id,$conf,$menuNumber)     
- *  231:     function makeMenu()       
- *  663:     function includeMakeMenu($conf,$altSortField)     
- *  680:     function procesItemStates($splitCount)    
- *  863:     function subMenu($uid,$mount_point=0)     
- *  905:     function link($key,$altTarget='',$typeOverride='') 
- *  961:     function isActive($uid)   
- *  972:     function isCurrent($uid)  
- *  985:     function isSubMenu($uid,$mount_point=0)   
- * 1009:     function isItemState($kind,$key)  
- * 1046:     function accessKey($title)        
- * 1072:     function userProcess($mConfKey,$passVar)  
- * 1087:     function setATagParts()   
- * 1100:     function getPageTitle($title,$nav_title)  
+ *  181:     function start($tmpl,$sys_page,$id,$conf,$menuNumber)     
+ *  230:     function makeMenu()       
+ *  662:     function includeMakeMenu($conf,$altSortField)     
+ *  679:     function procesItemStates($splitCount)    
+ *  862:     function subMenu($uid,$mount_point=0)     
+ *  904:     function link($key,$altTarget='',$typeOverride='') 
+ *  960:     function isActive($uid)   
+ *  971:     function isCurrent($uid)  
+ *  984:     function isSubMenu($uid,$mount_point=0)   
+ * 1008:     function isItemState($kind,$key)  
+ * 1045:     function accessKey($title)        
+ * 1071:     function userProcess($mConfKey,$passVar)  
+ * 1086:     function setATagParts()   
+ * 1099:     function getPageTitle($title,$nav_title)  
  *
  *
- * 1131: class tslib_tmenu extends tslib_menu 
- * 1140:     function generate()       
- * 1156:     function writeMenu()      
- * 1286:     function getBeforeAfter($pref)    
- * 1316:     function addJScolorShiftFunction()        
- * 1338:     function extProc_init()   
- * 1349:     function extProc_RO($key) 
- * 1360:     function extProc_beforeLinking($key)      
- * 1372:     function extProc_afterLinking($key)       
- * 1389:     function extProc_beforeAllWrap($item,$key)        
- * 1400:     function extProc_finish() 
+ * 1130: class tslib_tmenu extends tslib_menu 
+ * 1139:     function generate()       
+ * 1155:     function writeMenu()      
+ * 1285:     function getBeforeAfter($pref)    
+ * 1315:     function addJScolorShiftFunction()        
+ * 1337:     function extProc_init()   
+ * 1348:     function extProc_RO($key) 
+ * 1359:     function extProc_beforeLinking($key)      
+ * 1371:     function extProc_afterLinking($key)       
+ * 1388:     function extProc_beforeAllWrap($item,$key)        
+ * 1399:     function extProc_finish() 
  *
  *
- * 1436: class tslib_gmenu extends tslib_menu 
- * 1445:     function generate()       
- * 1483:     function makeGifs($conf, $resKey) 
- * 1680:     function findLargestDims($conf,$items,$Hobjs,$Wobjs,$minDim,$maxDim)      
- * 1752:     function writeMenu()      
- * 1850:     function extProc_init()   
- * 1861:     function extProc_RO($key) 
- * 1872:     function extProc_beforeLinking($key)      
- * 1885:     function extProc_afterLinking($key)       
- * 1902:     function extProc_beforeAllWrap($item,$key)        
- * 1913:     function extProc_finish() 
+ * 1435: class tslib_gmenu extends tslib_menu 
+ * 1444:     function generate()       
+ * 1482:     function makeGifs($conf, $resKey) 
+ * 1679:     function findLargestDims($conf,$items,$Hobjs,$Wobjs,$minDim,$maxDim)      
+ * 1751:     function writeMenu()      
+ * 1849:     function extProc_init()   
+ * 1860:     function extProc_RO($key) 
+ * 1871:     function extProc_beforeLinking($key)      
+ * 1884:     function extProc_afterLinking($key)       
+ * 1901:     function extProc_beforeAllWrap($item,$key)        
+ * 1912:     function extProc_finish() 
  *
  *
- * 1947: class tslib_imgmenu extends tslib_menu 
- * 1956:     function generate()       
- * 1974:     function makeImageMap($conf)      
- * 2143:     function writeMenu()      
+ * 1946: class tslib_imgmenu extends tslib_menu 
+ * 1955:     function generate()       
+ * 1973:     function makeImageMap($conf)      
+ * 2142:     function writeMenu()      
  *
  *
- * 2186: class tslib_jsmenu extends tslib_menu 
- * 2193:     function generate()       
- * 2201:     function writeMenu()      
- * 2261:     function generate_level($levels,$count,$pid,$menuItemArray='')    
+ * 2185: class tslib_jsmenu extends tslib_menu 
+ * 2192:     function generate()       
+ * 2200:     function writeMenu()      
+ * 2260:     function generate_level($levels,$count,$pid,$menuItemArray='')    
  *
  * TOTAL FUNCTIONS: 40
  * (This index is automatically created/updated by the extension "extdeveval")
index e897815..1e47a8c 100755 (executable)
@@ -47,7 +47,7 @@
  *  309:     function renderContentWithHeader($pageContent)    
  *
  *
- *  610: class FE_loadDBGroup extends t3lib_loadDBGroup        
+ *  638: class FE_loadDBGroup extends t3lib_loadDBGroup        
  *
  * TOTAL FUNCTIONS: 5
  * (This index is automatically created/updated by the extension "extdeveval")
@@ -313,7 +313,7 @@ function linkTo_UnCryptMailto(s)    {       //
                } else $customContent='';
 
                        // Setting charset:             
-               $theCharset = ($GLOBALS['TSFE']->config['config']['metaCharset'] ? $GLOBALS['TSFE']->config['config']['metaCharset'] : 'iso-8859-1');
+               $theCharset = ($GLOBALS['TSFE']->config['config']['metaCharset'] ? $GLOBALS['TSFE']->config['config']['metaCharset'] : $GLOBALS['TSFE']->defaultCharSet);
                
                        // Reset the content variables:
                $GLOBALS['TSFE']->content='';
@@ -462,6 +462,20 @@ SELECT {  font-family: Verdana, Arial, Helvetica; font-size: 10px }
 TEXTAREA  {  font-family: Verdana, Arial, Helvetica; font-size: 10px} 
 INPUT   {  font-family: Verdana, Arial, Helvetica; font-size: 10px }';
                }
+               if ($GLOBALS['TSFE']->pSetup['adminPanelStyles'])       {
+                       $style.='
+
+/* Default styles for the Admin Panel */
+TABLE.typo3-adminPanel { border: 1px solid black; background-color: #F6F2E6; }
+TABLE.typo3-adminPanel TR.typo3-adminPanel-hRow TD { background-color: #9BA1A8; }
+TABLE.typo3-adminPanel TR.typo3-adminPanel-itemHRow TD { background-color: #ABBBB4; }
+TABLE.typo3-adminPanel TABLE, TABLE.typo3-adminPanel TD { border: 0px; }
+TABLE.typo3-adminPanel TD FONT { font-family: verdana; font-size: 10px; color: black; }
+TABLE.typo3-adminPanel TD A FONT { font-family: verdana; font-size: 10px; color: black; }                      
+TABLE.typo3-editPanel { border: 1px solid black; background-color: #F6F2E6; }
+TABLE.typo3-editPanel TD { border: 0px; }
+                       ';
+               }
                
                if (trim($style))       {
                $GLOBALS['TSFE']->content.='
index 0aa3513..cbb7e6a 100755 (executable)
  *
  *
  *
- *  128: class tslib_pibase 
+ *  131: class tslib_pibase 
  *
  *              SECTION: Init functions
- *  207:     function tslib_pibase()   
- *  221:     function pi_setPiVarDefaults()    
+ *  210:     function tslib_pibase()   
+ *  224:     function pi_setPiVarDefaults()    
  *
  *              SECTION: Link functions
- *  260:     function pi_getPageLink($id,$target='',$urlParameters=array())    
- *  276:     function pi_linkToPage($str,$id,$target='',$urlParameters=array())        
- *  290:     function pi_linkTP($str,$urlParameters=array(),$cache=0)  
- *  312:     function pi_linkTP_keepPIvars($str,$overrulePIvars=array(),$cache=0,$clearAnyway=0)       
- *  335:     function pi_linkTP_keepPIvars_url($overrulePIvars=array(),$cache=0,$clearAnyway=0)        
- *  351:     function pi_list_linkSingle($str,$uid,$cache=0,$mergeArr=array()) 
- *  374:     function pi_openAtagHrefInJSwindow($str,$winName='',$winParams='width=670,height=500,status=0,menubar=0,scrollbars=1,resizable=1')        
+ *  263:     function pi_getPageLink($id,$target='',$urlParameters=array())    
+ *  279:     function pi_linkToPage($str,$id,$target='',$urlParameters=array())        
+ *  293:     function pi_linkTP($str,$urlParameters=array(),$cache=0)  
+ *  315:     function pi_linkTP_keepPIvars($str,$overrulePIvars=array(),$cache=0,$clearAnyway=0)       
+ *  338:     function pi_linkTP_keepPIvars_url($overrulePIvars=array(),$cache=0,$clearAnyway=0)        
+ *  355:     function pi_list_linkSingle($str,$uid,$cache=FALSE,$mergeArr=array(),$urlOnly=FALSE)      
+ *  383:     function pi_openAtagHrefInJSwindow($str,$winName='',$winParams='width=670,height=500,status=0,menubar=0,scrollbars=1,resizable=1')        
  *
  *              SECTION: Functions for listing, browsing, searching etc.
- *  414:     function pi_list_browseresults($showResultCount=1,$tableParams='')        
- *  467:     function pi_list_searchBox($tableParams='')       
- *  486:     function pi_list_modeSelector($items=array(),$tableParams='')     
- *  513:     function pi_list_makelist($res,$tableParams='')   
- *  538:     function pi_list_row($c)  
- *  550:     function pi_list_header() 
+ *  423:     function pi_list_browseresults($showResultCount=1,$tableParams='')        
+ *  492:     function pi_list_searchBox($tableParams='')       
+ *  520:     function pi_list_modeSelector($items=array(),$tableParams='')     
+ *  558:     function pi_list_makelist($res,$tableParams='')   
+ *  593:     function pi_list_row($c)  
+ *  605:     function pi_list_header() 
  *
  *              SECTION: Stylesheet, CSS
- *  581:     function pi_getClassName($class)  
- *  593:     function pi_classParam($class)    
- *  607:     function pi_setClassStyle($class,$data,$selector='')      
- *  618:     function pi_wrapInBaseClass($str) 
+ *  636:     function pi_getClassName($class)  
+ *  648:     function pi_classParam($class)    
+ *  662:     function pi_setClassStyle($class,$data,$selector='')      
+ *  673:     function pi_wrapInBaseClass($str) 
  *
  *              SECTION: Frontend editing: Edit panel, edit icons
- *  654:     function pi_getEditPanel($row='',$tablename='',$label='',$conf=Array())   
- *  695:     function pi_getEditIcon($content,$fields,$title='',$row='',$tablename='') 
+ *  722:     function pi_getEditPanel($row='',$tablename='',$label='',$conf=Array())   
+ *  763:     function pi_getEditIcon($content,$fields,$title='',$row='',$tablename='') 
  *
  *              SECTION: Localization, locallang functions
- *  741:     function pi_getLL($key,$alt='')   
- *  757:     function pi_loadLL()      
+ *  810:     function pi_getLL($key,$alt='',$hsc=FALSE)        
+ *  831:     function pi_loadLL()      
  *
  *              SECTION: Database, queries
- *  819:     function pi_list_query($table,$count=0,$addWhere='',$mm_cat='',$groupBy='',$orderBy='',$query='') 
- *  880:     function pi_getRecord($table,$uid,$checkPage=0)   
- *  891:     function pi_getPidList($pid_list,$recursive=0)    
- *  912:     function pi_prependFieldsWithTable($table,$fieldList)     
- *  929:     function pi_getCategoryTableContents($table,$pid,$addWhere='')    
+ *  893:     function pi_list_query($table,$count=0,$addWhere='',$mm_cat='',$groupBy='',$orderBy='',$query='') 
+ *  954:     function pi_getRecord($table,$uid,$checkPage=0)   
+ *  965:     function pi_getPidList($pid_list,$recursive=0)    
+ *  986:     function pi_prependFieldsWithTable($table,$fieldList)     
+ * 1003:     function pi_getCategoryTableContents($table,$pid,$addWhere='')    
  *
  *              SECTION: Various
- *  965:     function pi_isOnlyFields($fList,$lowerThan=-1)    
- *  985:     function pi_autoCache($inArray)   
- * 1016:     function pi_RTEcssText($str)      
- * 1030:     function pi_getFFvalue($T3FlexForm_array,$fieldName,$sheet='sDEF',$lang='lDEF',$value='vDEF')     
- * 1045:     function pi_getFFvalueFromSheetArray($sheetArray,$fieldNameArr,$value)    
+ * 1039:     function pi_isOnlyFields($fList,$lowerThan=-1)    
+ * 1059:     function pi_autoCache($inArray)   
+ * 1090:     function pi_RTEcssText($str)      
  *
- * TOTAL FUNCTIONS: 33
+ *              SECTION: FlexForms related functions
+ * 1111:     function pi_initPIflexForm()      
+ * 1129:     function pi_getFFvalue($T3FlexForm_array,$fieldName,$sheet='sDEF',$lang='lDEF',$value='vDEF')     
+ * 1146:     function pi_getFFvalueFromSheetArray($sheetArray,$fieldNameArr,$value)    
+ *
+ * TOTAL FUNCTIONS: 34
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
@@ -806,7 +809,7 @@ class tslib_pibase {
         */
        function pi_getLL($key,$alt='',$hsc=FALSE)      {
                if (isset($this->LOCAL_LANG[$this->LLkey][$key]))       {
-                       $word = $this->LOCAL_LANG[$this->LLkey][$key];
+                       $word = $GLOBALS['TSFE']->csConv($this->LOCAL_LANG[$this->LLkey][$key]);
                } elseif (isset($this->LOCAL_LANG['default'][$key]))    {
                        $word = $this->LOCAL_LANG['default'][$key];
                } else {
@@ -1103,7 +1106,7 @@ class tslib_pibase {
        /**
         * Converts $this->cObj->data['pi_flexform'] from XML string to flexForm array.
         * 
-        * @return      void
+        * @return      void            
         */
        function pi_initPIflexForm()    {
                        // Converting flexform data into array:
@@ -1137,8 +1140,8 @@ class tslib_pibase {
         * @param       array           Array where each value points to a key in the FlexForms content - the input array will have the value returned pointed to by these keys. All integer keys will not take their integer counterparts, but rather traverse the current position in the array an return element number X (whether this is right behavior is not settled yet...)
         * @param       string          Value for outermost key, typ. "vDEF" depending on language.
         * @return      mixed           The value, typ. string.
-        * @see pi_getFFvalue()
         * @access private
+        * @see pi_getFFvalue()
         */
        function pi_getFFvalueFromSheetArray($sheetArray,$fieldNameArr,$value)  {
        
index b7b6cdd..dcda36d 100755 (executable)
@@ -83,42 +83,8 @@ class language {
                // Default charset in backend
        var $charSet = 'iso-8859-1';
        
-               // Array with alternative charsets for other languages.
-       var $charSetArray = array(
-               'dk' => '',
-               'de' => '',
-               'no' => '',
-               'it' => '',
-               'fr' => '',
-               'es' => '',
-               'nl' => '',
-               'cz' => 'windows-1250',
-               'pl' => 'iso-8859-2',
-               'si' => 'windows-1250',
-               'fi' => '',
-               'tr' => 'iso-8859-9',
-               'se' => '',
-               'pt' => '',
-               'ru' => 'windows-1251',
-               'ro' => 'iso-8859-2',
-               'ch' => 'gb2312',
-               'sk' => 'windows-1250',
-               'lt' => 'windows-1257',
-               'is' => 'utf-8',
-               'hr' => 'windows-1250',
-               'hu' => 'iso-8859-2',
-               'gl' => '',
-               'th' => 'iso-8859-11',
-               'gr' => 'iso-8859-7',
-               'hk' => 'big5',
-               'eu' => '',
-               'bg' => 'windows-1251',
-               'br' => '',
-               'et' => 'iso-8859-4',
-               'ar' => 'iso-8859-6',
-               'he' => 'utf-8',
-               'ua' => 'windows-1251',
-       );
+               // Array with alternative charsets for other languages. (Moved to t3lib_cs, Set from csConvObj!)
+       var $charSetArray = array();
        
                // This is the url to the TYPO3 manual
        var $typo3_help_url= 'http://www.typo3.com/man_uk/';
@@ -175,6 +141,7 @@ class language {
 
                        // Initialize the conversion object:
                $this->csConvObj = t3lib_div::makeInstance('t3lib_cs');
+               $this->charSetArray = $this->csConvObj->charSetArray;
 
                        // If a forced charset is used and different from the charset otherwise used:
                if ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] && $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']!=$this->charSet)     {