Fixed bug #15853: Improve the look of the admin panel (Thanks to Dmitry Dulepov)
authorJeff Segars <jsegars@alumni.rice.edu>
Mon, 27 Dec 2010 19:31:04 +0000 (19:31 +0000)
committerJeff Segars <jsegars@alumni.rice.edu>
Mon, 27 Dec 2010 19:31:04 +0000 (19:31 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@9924 709f56b5-9817-0410-a4d7-c38de5d9e867

12 files changed:
ChangeLog
t3lib/class.t3lib_timetrack.php
t3lib/js/adminpanel.js
typo3/sysext/cms/tslib/class.tslib_adminpanel.php
typo3/sysext/cms/tslib/index_ts.php
typo3/sysext/lang/locallang_tsfe.xml
typo3/sysext/t3skin/ext_tables.php
typo3/sysext/t3skin/images/arrows/adminpanel-down.png [new file with mode: 0644]
typo3/sysext/t3skin/images/arrows/adminpanel-up.png [new file with mode: 0644]
typo3/sysext/t3skin/images/arrows/module-menu-down-alt.png [new file with mode: 0644]
typo3/sysext/t3skin/images/arrows/module-menu-right-alt.png [new file with mode: 0644]
typo3/sysext/t3skin/stylesheets/visual/admin_panel.css [new file with mode: 0644]

index f917940..bc9e457 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -18,6 +18,7 @@
 
        * Fixed bug #16481: Live search uses hardcoded strings and has unused strings
        * Fixed bug #16681: Live search should reset when an iframe gains focus
 
        * Fixed bug #16481: Live search uses hardcoded strings and has unused strings
        * Fixed bug #16681: Live search should reset when an iframe gains focus
+       * Fixed bug #15853: Improve the look of the admin panel (Thanks to Dmitry Dulepov)
 
 2010-12-27  Steffen Ritter  <typo3@steffen-ritter.net>
 
 
 2010-12-27  Steffen Ritter  <typo3@steffen-ritter.net>
 
index fe714e7..21173fb 100644 (file)
@@ -90,9 +90,6 @@ class t3lib_timeTrack {
                'flag_content' => 0,
                'allTime' => 0,
                'keyLgd' => 40,
                'flag_content' => 0,
                'allTime' => 0,
                'keyLgd' => 40,
-               'factor' => 10,
-               'col' => '#D9D5C9',
-               'highlight_col' => '#FF9933'
        );
 
        var $wrapError = array();
        );
 
        var $wrapError = array();
@@ -307,7 +304,9 @@ class t3lib_timeTrack {
                        $data['endtime'] = $this->getDifferenceToStarttime($data['endtime']);
                        $data['starttime'] = $this->getDifferenceToStarttime($data['starttime']);
                        $data['deltatime'] = $data['endtime'] - $data['starttime'];
                        $data['endtime'] = $this->getDifferenceToStarttime($data['endtime']);
                        $data['starttime'] = $this->getDifferenceToStarttime($data['starttime']);
                        $data['deltatime'] = $data['endtime'] - $data['starttime'];
-                       $data['key'] = implode($data['stackPointer'] ? '.' : '/', end($data['tsStack']));
+                       if (is_array($data['tsStack'])) {
+                               $data['key'] = implode($data['stackPointer'] ? '.' : '/', end($data['tsStack']));
+                       }
                }
 
                        // Create hierarchical array of keys pointing to the stack
                }
 
                        // Create hierarchical array of keys pointing to the stack
@@ -337,7 +336,7 @@ class t3lib_timeTrack {
                $out = '';
                foreach ($outputArr as $row) {
                        $out .= '
                $out = '';
                foreach ($outputArr as $row) {
                        $out .= '
-                               <th style="text-align:center; background:#ABBBB4;"><strong>' . $row . '</strong></th>';
+                               <th><strong>' . $row . '</strong></th>';
                }
                $out = '<tr>' . $out . '</tr>';
 
                }
                $out = '<tr>' . $out . '</tr>';
 
@@ -352,9 +351,10 @@ class t3lib_timeTrack {
 
                $c = 0;
                foreach ($this->tsStackLog as $uniqueId => $data) {
 
                $c = 0;
                foreach ($this->tsStackLog as $uniqueId => $data) {
-                       $bgColor = ' background-color:' . ($c % 2 ? t3lib_div::modifyHTMLColor($col, $factor, $factor, $factor) : $col) . ';';
                        if ($this->highlightLongerThan && intval($data['owntime']) > intval($this->highlightLongerThan)) {
                        if ($this->highlightLongerThan && intval($data['owntime']) > intval($this->highlightLongerThan)) {
-                               $bgColor = ' background-color:' . $highlight_col . ';';
+                               $logRowClass = 'typo3-adminPanel-logRow-highlight';
+                       } else {
+                               $logRowClass = ($c % 2) ? 'typo3-adminPanel-logRow-odd' : 'typo3-adminPanel-logRow-even';
                        }
 
                        $item = '';
                        }
 
                        $item = '';
@@ -386,21 +386,21 @@ class t3lib_timeTrack {
                                $theLabel = $data['key'];
                        }
                        $theLabel = t3lib_div::fixed_lgd_cs($theLabel, -$keyLgd);
                                $theLabel = $data['key'];
                        }
                        $theLabel = t3lib_div::fixed_lgd_cs($theLabel, -$keyLgd);
-                       $theLabel = $data['stackPointer'] ? '<span style="color:maroon;">' . $theLabel . '</span>' : $theLabel;
+                       $theLabel = $data['stackPointer'] ? '<span class="stackPointer">' . $theLabel . '</span>' : $theLabel;
                        $keyLabel = $theLabel . $keyLabel;
                        $keyLabel = $theLabel . $keyLabel;
-                       $item .= '<td valign="top" style="text-align:left; white-space:nowrap; padding-left:2px;' . $bgColor . '">' . ($flag_tree ? $data['icons'] : '') . $this->fw($keyLabel) . '</td>';
+                       $item .= '<td class="' . $logRowClass . '" style="padding-left:2px;">' . ($flag_tree ? $data['icons'] : '') . $this->fw($keyLabel) . '</td>';
 
                                // key value:
                        $keyValue = $data['value'];
 
                                // key value:
                        $keyValue = $data['value'];
-                       $item .= '<td valign="top" style="text-align:left; white-space:nowrap;' . $bgColor . '">' . $this->fw(htmlspecialchars($keyValue)) . '</td>';
+                       $item .= '<td class="' . $logRowClass . ' typo3-adminPanel-tsLogTime" style="' . $bgColor . '">' . $this->fw(htmlspecialchars($keyValue)) . '</td>';
 
                        if ($this->printConf['allTime']) {
 
                        if ($this->printConf['allTime']) {
-                               $item .= '<td valign="top" style="text-align:right; white-space:nowrap;' . $bgColor . '"> ' . $this->fw($data['starttime']) . '</td>';
-                               $item .= '<td valign="top" style="text-align:right; white-space:nowrap;' . $bgColor . '"> ' . $this->fw($data['owntime']) . '</td>';
-                               $item .= '<td valign="top" style="text-align:left; white-space:nowrap;' . $bgColor . '"> ' . $this->fw($data['subtime'] ? '+' . $data['subtime'] : '') . '</td>';
-                               $item .= '<td valign="top" style="text-align:left; white-space:nowrap;' . $bgColor . '"> ' . $this->fw($data['subtime'] ? '=' . $data['deltatime'] : '') . '</td>';
+                               $item .= '<td class="' . $logRowClass . ' typo3-adminPanel-tsLogTime"> ' . $this->fw($data['starttime']) . '</td>';
+                               $item .= '<td class="' . $logRowClass . ' typo3-adminPanel-tsLogTime"> ' . $this->fw($data['owntime']) . '</td>';
+                               $item .= '<td class="' . $logRowClass . ' typo3-adminPanel-tsLogTime"> ' . $this->fw($data['subtime'] ? '+' . $data['subtime'] : '') . '</td>';
+                               $item .= '<td class="' . $logRowClass . ' typo3-adminPanel-tsLogTime"> ' . $this->fw($data['subtime'] ? '=' . $data['deltatime'] : '') . '</td>';
                        } else {
                        } else {
-                               $item .= '<td valign="top" style="text-align:right; white-space:nowrap;' . $bgColor . '"> ' . $this->fw($data['owntime']) . '</td>';
+                               $item .= '<td class="' . $logRowClass . ' typo3-adminPanel-tsLogTime"> ' . $this->fw($data['owntime']) . '</td>';
                        }
 
 
                        }
 
 
@@ -428,11 +428,11 @@ class t3lib_timeTrack {
                        if (count($msgArr)) {
                                $msg = implode($msgArr, '<hr />');
                        }
                        if (count($msgArr)) {
                                $msg = implode($msgArr, '<hr />');
                        }
-                       $item .= '<td valign="top" style="text-align:left;' . $bgColor . '">' . $this->fw($msg) . '</td>';
+                       $item .= '<td valign="top" class="' . $logRowClass . '" style="text-align:left;">' . $this->fw($msg) . '</td>';
                        $out .= '<tr>' . $item . '</tr>';
                        $c++;
                }
                        $out .= '<tr>' . $item . '</tr>';
                        $c++;
                }
-               $out = '<table border="0" cellpadding="0" cellspacing="0" summary="">' . $out . '</table>';
+               $out = '<table id="typo3-adminPanel-tsLog">' . $out . '</table>';
                return $out;
        }
 
                return $out;
        }
 
index 3ec4a80..c337b58 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright notice
  *
  *
  * Copyright notice
  *
- * (c) 2009-2010 Ingo Renner <ingo@typo3.org>
+ * (c) 2010 Dmitry Dulepov <dmitry@typo3.org>
  * All rights reserved
  *
  * This script is part of the TYPO3 project. The TYPO3 project is
  * All rights reserved
  *
  * This script is part of the TYPO3 project. The TYPO3 project is
  ***************************************************************/
 
 /**
  ***************************************************************/
 
 /**
- * @author  Ingo Renner  <ingo@typo3.org>
- * @author     Oliver Hader <oliver@typo3.org>
- * @author  Ingmar Schlecht <ingmar@typo3.org>
- * @author  Jonas Dübi <jd@cabag.ch>
+ * @author  Dmitry Dulepov  <dmitry@typo3.org>
  */
 
  */
 
-var TYPO3AdminPanel = {
-
-       positionRestored: false,
-       dragObject: null,
-       dragX: 0,
-       dragY: 0,
-       posX: 0,
-       posY: 0,
-
-       savePosition: function(panel) {
-               var admPanelPosX = panel.offsetLeft;
-               var admPanelPosY = panel.offsetTop;
-
-               TYPO3AdminPanel.setCookie('admPanelPosX', admPanelPosX, '', '/');
-               TYPO3AdminPanel.setCookie('admPanelPosY', admPanelPosY, '', '/');
+var TYPO3AdminPanel = function() {
+       this.boxElement = null;
+       this.dragging = false;
+       this.dragElement = document;
+       this.previousMouseUpHandler = null;
+       this.previousMouseMoveHandler = null;
+       this.mouseOffset = {
+               x: 0,
+               y: 0
+       };
+}
+
+TYPO3AdminPanel.prototype = {
+
+       init: function(headerElementId, boxElementId) {
+               this.boxElement = document.getElementById(boxElementId);
+               this.setInitialPosition();
+               this.setMouseDownHandler(headerElementId);
        },
 
        },
 
-       restorePosition: function() {
-               if (TYPO3AdminPanel.positionRestored == false) {
-
-                       var admPanelPosX = TYPO3AdminPanel.getCookie('admPanelPosX');
-                       if (admPanelPosX > 0) {
-                               document.getElementById('admPanel').style.left = admPanelPosX + 'px';
-                       }
-
-                       var admPanelPosY = TYPO3AdminPanel.getCookie('admPanelPosY');
-                       if (admPanelPosY > 0) {
-                               document.getElementById('admPanel').style.top = admPanelPosY + 'px';
+       dragStart: function(event) {
+               if (!this.dragging) {
+                       if (!event) {
+                               event = window.event;
                        }
                        }
+                       this.dragging = true;
+                       this.setMouseOffsets(event);
+                       this.setDragHandlers();
+               }
+       },
 
 
-                       TYPO3AdminPanel.positionRestored = true;
+       dragEnd: function() {
+               if (this.dragging) {
+                       this.dragging = false;
+                       this.dragElement.onmouseup = this.previousMouseUpHandler;
+                       this.dragElement.onmousemove = this.previousMouseMoveHandler;
+                       this.setCookie("admPanelPosX", this.boxElement.style.left);
+                       this.setCookie("admPanelPosY", this.boxElement.style.top);
                }
        },
 
                }
        },
 
-       setCookie: function(name, value, expires, path, domain, secure) {
-               document.cookie = name + '=' + escape(value)
-                       + (expires ? '; expires=' + expires.toGMTString() : '')
-                       + (path ? '; path=' + path : '')
-                       + (domain ? '; domain=' + domain : '')
-                       + (secure ? '; secure' : '');
+       drag: function(event) {
+               if (this.dragging) {
+                       if (!event) {
+                               event = window.event;
+                       }
+                       this.boxElement.style.left = (event.clientX + this.mouseOffset.x) + "px";
+                       this.boxElement.style.top = (event.clientY + this.mouseOffset.y) + "px";
+               }
        },
 
        getCookie: function(name) {
                var dc = document.cookie;
        },
 
        getCookie: function(name) {
                var dc = document.cookie;
-               var prefix = name + '=';
-               var begin = dc.indexOf('; ' + prefix);
+               var prefix = name + "=";
+               var begin = dc.indexOf("; " + prefix);
 
                if (begin == -1) {
                        begin = dc.indexOf(prefix);
 
                if (begin == -1) {
                        begin = dc.indexOf(prefix);
@@ -88,7 +94,7 @@ var TYPO3AdminPanel = {
                        begin += 2;
                }
 
                        begin += 2;
                }
 
-               var end = dc.indexOf(';', begin);
+               var end = dc.indexOf(";", begin);
                if (end == -1) {
                        end = dc.length;
                }
                if (end == -1) {
                        end = dc.length;
                }
@@ -96,28 +102,46 @@ var TYPO3AdminPanel = {
                return unescape(dc.substring(begin + prefix.length, end));
        },
 
                return unescape(dc.substring(begin + prefix.length, end));
        },
 
-       dragInit: function() {
-               document.onmousemove = TYPO3AdminPanel.drag;
-               document.onmouseup = TYPO3AdminPanel.dragStop;
+       setCookie: function(name, value) {
+               document.cookie = name + "=" + escape(value);
        },
 
        },
 
-       dragStart: function(element) {
-               TYPO3AdminPanel.dragObject = element;
-               TYPO3AdminPanel.dragX = TYPO3AdminPanel.posX - TYPO3AdminPanel.dragObject.offsetLeft;
-               TYPO3AdminPanel.dragY = TYPO3AdminPanel.posY - TYPO3AdminPanel.dragObject.offsetTop;
-       },
+       setDragHandlers: function() {
+               var _this = this;
 
 
-       dragStop: function() {
-               TYPO3AdminPanel.dragObject = null;
+               this.previousMouseUpHandler = this.dragElement.onmouseup;
+               this.dragElement.onmouseup = function() {
+                       _this.dragEnd.apply(_this, arguments);
+               }
+               this.previousMouseMoveHandler = this.dragElement.onmousemove;
+               this.dragElement.onmousemove = function() {
+                       _this.drag.apply(_this, arguments);
+               }
        },
 
        },
 
-       drag: function(dragEvent) {
-               TYPO3AdminPanel.posX = document.all ? window.event.clientX : dragEvent.pageX;
-               TYPO3AdminPanel.posY = document.all ? window.event.clientY : dragEvent.pageY;
+       setInitialPosition: function() {
+               this.boxElement.style.position = "absolute";
+
+               var pos = this.getCookie("admPanelPosX");
+               if (pos) {
+                       this.boxElement.style.left =  pos;
+               }
+               pos = this.getCookie("admPanelPosY");
+               if (pos) {
+                       this.boxElement.style.top = pos;
+               }
+       },
 
 
-               if (TYPO3AdminPanel.dragObject != null) {
-                       TYPO3AdminPanel.dragObject.style.left = (TYPO3AdminPanel.posX - TYPO3AdminPanel.dragX) + 'px';
-                       TYPO3AdminPanel.dragObject.style.top = (TYPO3AdminPanel.posY - TYPO3AdminPanel.dragY) + 'px';
+       setMouseDownHandler: function(headerElementId) {
+               var _this = this, headerElement = document.getElementById(headerElementId);
+               headerElement.onmousedown = function() {
+                       _this.dragStart.apply(_this, arguments);
                }
                }
+       },
+
+       setMouseOffsets: function(event) {
+               this.mouseOffset.x = this.boxElement.offsetLeft - event.clientX;
+               this.mouseOffset.y = this.boxElement.offsetTop - event.clientY;
        }
        }
+
 };
 };
index 2755a0c..21db902 100644 (file)
@@ -23,7 +23,7 @@
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
-*  This copyright notice MUST APPEAR in all copies of the script!
+*  This copyright notice MUST APPEAR in all copies of the scri.pt!
 ***************************************************************/
 /**
  * View class for the admin panel in frontend editing.
 ***************************************************************/
 /**
  * View class for the admin panel in frontend editing.
@@ -32,6 +32,7 @@
  *
  * @author     Jeff Segars <jeff@webempoweredchurch.org>
  * @author     David Slayback <dave@webempoweredchurch.org>
  *
  * @author     Jeff Segars <jeff@webempoweredchurch.org>
  * @author     David Slayback <dave@webempoweredchurch.org>
+ * @author Dmitry Dulepov <dmitry@typo3.org>
  * @package TYPO3
  * @subpackage tslib
  */
  * @package TYPO3
  * @subpackage tslib
  */
@@ -90,7 +91,7 @@ class tslib_AdminPanel {
 
                if (t3lib_div::_GP('ADMCMD_editIcons')) {
                        $GLOBALS['TSFE']->displayFieldEditIcons=1;
 
                if (t3lib_div::_GP('ADMCMD_editIcons')) {
                        $GLOBALS['TSFE']->displayFieldEditIcons=1;
-                       $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_editNoPopup']=1;
+                       $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_editNoPopup'] = 1;
                }
 
                if (t3lib_div::_GP('ADMCMD_simUser')) {
                }
 
                if (t3lib_div::_GP('ADMCMD_simUser')) {
@@ -109,25 +110,48 @@ class tslib_AdminPanel {
        }
 
        /**
        }
 
        /**
+        * Obtains header data for the admin panel.
+        *
+        * @return string
+        */
+       public function getAdminPanelHeaderData() {
+               $result = '';
+
+               // Include BE styles
+               $GLOBALS['TSFE']->includeTCA();
+
+               if(!empty($GLOBALS['TBE_STYLES']['stylesheets']['admPanel'])) {
+                       $result =       '<link rel="stylesheet" type="text/css" href="' .
+                               htmlspecialchars(t3lib_div::locationHeaderUrl($GLOBALS['TBE_STYLES']['stylesheets']['admPanel'])) .
+                               '" />';
+               }
+               return $result;
+       }
+
+       /**
         * Checks if a Admin Panel section ("module") is available for the user. If so, true is returned.
         *
         * @param       string          The module key, eg. "edit", "preview", "info" etc.
         * @return      boolean
         */
        public function isAdminModuleEnabled($key) {
         * Checks if a Admin Panel section ("module") is available for the user. If so, true is returned.
         *
         * @param       string          The module key, eg. "edit", "preview", "info" etc.
         * @return      boolean
         */
        public function isAdminModuleEnabled($key) {
+               $result = false;
+
                        // Returns true if the module checked is "preview" and the forcePreview flag is set.
                        // Returns true if the module checked is "preview" and the forcePreview flag is set.
-               if ($key=='preview' && $this->ext_forcePreview) {
-                       return true;
+               if ($key == 'preview' && $this->ext_forcePreview) {
+                       $result = true;
                }
 
                        // If key is not set, only "all" is checked
                if ($GLOBALS['BE_USER']->extAdminConfig['enable.']['all']) {
                }
 
                        // If key is not set, only "all" is checked
                if ($GLOBALS['BE_USER']->extAdminConfig['enable.']['all']) {
-                       return true;
+                       $result = true;
                }
 
                if ($GLOBALS['BE_USER']->extAdminConfig['enable.'][$key]) {
                }
 
                if ($GLOBALS['BE_USER']->extAdminConfig['enable.'][$key]) {
-                       return true;
+                       $result = true;
                }
                }
+
+               return $result;
        }
 
        /**
        }
 
        /**
@@ -181,37 +205,33 @@ class tslib_AdminPanel {
         * @param       string          Setting key
         * @return      string          The setting value
         */
         * @param       string          Setting key
         * @return      string          The setting value
         */
-       public function extGetFeAdminValue($pre, $val='') {
+       public function extGetFeAdminValue($sectionName, $val = '') {
                        // Check if module is enabled.
                        // Check if module is enabled.
-               if ($this->isAdminModuleEnabled($pre)) {
+               if ($this->isAdminModuleEnabled($sectionName)) {
                                // Exceptions where the values can be overridden from backend:
                                // deprecated
                                // Exceptions where the values can be overridden from backend:
                                // deprecated
-                       if ($pre . '_' . $val == 'edit_displayIcons' && $GLOBALS['BE_USER']->extAdminConfig['module.']['edit.']['forceDisplayIcons']) {
+                       if ($sectionName . '_' . $val == 'edit_displayIcons' && $GLOBALS['BE_USER']->extAdminConfig['module.']['edit.']['forceDisplayIcons']) {
                                return true;
                        }
                                return true;
                        }
-                       if ($pre . '_' . $val == 'edit_displayFieldIcons' && $GLOBALS['BE_USER']->extAdminConfig['module.']['edit.']['forceDisplayFieldIcons']) {
+                       if ($sectionName . '_' . $val == 'edit_displayFieldIcons' && $GLOBALS['BE_USER']->extAdminConfig['module.']['edit.']['forceDisplayFieldIcons']) {
                                return true;
                        }
 
                                // override all settings with user TSconfig
                                return true;
                        }
 
                                // override all settings with user TSconfig
-                       if ($GLOBALS['BE_USER']->extAdminConfig['override.'][$pre . '.'][$val] && $val) {
-                               return $GLOBALS['BE_USER']->extAdminConfig['override.'][$pre . '.'][$val];
+                       if ($val && $GLOBALS['BE_USER']->extAdminConfig['override.'][$sectionName . '.'][$val]) {
+                               return $GLOBALS['BE_USER']->extAdminConfig['override.'][$sectionName . '.'][$val];
                        }
                        }
-                       if ($GLOBALS['BE_USER']->extAdminConfig['override.'][$pre]) {
-                               return $GLOBALS['BE_USER']->extAdminConfig['override.'][$pre];
+                       if ($GLOBALS['BE_USER']->extAdminConfig['override.'][$sectionName]) {
+                               return $GLOBALS['BE_USER']->extAdminConfig['override.'][$sectionName];
                        }
 
                        }
 
-                       $retVal = $val ? $GLOBALS['BE_USER']->uc['TSFE_adminConfig'][$pre . '_' . $val] : 1;
+                       $retVal = $val ? $GLOBALS['BE_USER']->uc['TSFE_adminConfig'][$sectionName . '_' . $val] : 1;
 
 
-                       if ($pre=='preview' && $this->ext_forcePreview) {
-                               if (!$val) {
-                                       return true;
-                               } else {
-                                       return $retVal;
-                               }
+                       if ($sectionName == 'preview' && $this->ext_forcePreview) {
+                               return (!$val ? true : $retVal);
                        }
                                // regular check:
                        }
                                // regular check:
-                       if ($this->isAdminModuleOpen($pre)) {   // See if the menu is expanded!
+                       if ($this->isAdminModuleOpen($sectionName)) {   // See if the menu is expanded!
                                return $retVal;
                        }
 
                                return $retVal;
                        }
 
@@ -219,9 +239,9 @@ class tslib_AdminPanel {
                                // @deprecated  since TYPO3 4.3
                        if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['extEditAction-postProc'])) {
                                t3lib_div::deprecationLog('Frontend admin post processing hook extEditAction-postProc is deprecated since TYPO3 4.3.');
                                // @deprecated  since TYPO3 4.3
                        if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['extEditAction-postProc'])) {
                                t3lib_div::deprecationLog('Frontend admin post processing hook extEditAction-postProc is deprecated since TYPO3 4.3.');
-                               $_params = array('cmd' => &$cmd, 'tce' => &$this->tce, 'pObj' => &$this);
-                               foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['extEditAction-postProc'] as $_funcRef) {
-                                       t3lib_div::callUserFunction($_funcRef, $_params, $this);
+                               $params = array('cmd' => &$cmd, 'tce' => &$this->tce, 'pObj' => &$this);
+                               foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['extEditAction-postProc'] as $funcRef) {
+                                       t3lib_div::callUserFunction($funcRef, $params, $this);
                                }
                        }
                }
                                }
                        }
                }
@@ -269,81 +289,75 @@ class tslib_AdminPanel {
        public function display() {
                $GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_tsfe.php');
 
        public function display() {
                $GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_tsfe.php');
 
-               $out = '<script type="text/javascript" src="t3lib/js/adminpanel.js"></script>';
-               //CSS
-               // @todo Check how this was handled before and if it's required here
-               // $GLOBALS['TSFE']->additionalHeaderData['admPanelCSS'] = '<link rel="stylesheet" type="text/css" href="' . t3lib_extMgm::extRelPath('feedit') . 'admpanel.css' . '" />';
-               if(!empty($GLOBALS['TBE_STYLES']['stylesheets']['admPanel'])) {
-                               $GLOBALS['TSFE']->additionalHeaderData['admPanelCSS-Skin'] = '
-                       <link rel="stylesheet" type="text/css" href="' . $GLOBALS['TBE_STYLES']['stylesheets']['admPanel'].'" />
-                               ';
-               }
+               $moduleContent = '';
 
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_top']) {
                        if ($this->isAdminModuleEnabled('preview')) {
 
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_top']) {
                        if ($this->isAdminModuleEnabled('preview')) {
-                               $out .= $this->getPreviewModule();
+                               $moduleContent .= $this->getPreviewModule();
                        }
                        if ($this->isAdminModuleEnabled('cache')) {
                        }
                        if ($this->isAdminModuleEnabled('cache')) {
-                               $out .= $this->getCacheModule();
+                               $moduleContent .= $this->getCacheModule();
                        }
                        if ($this->isAdminModuleEnabled('publish')) {
                        }
                        if ($this->isAdminModuleEnabled('publish')) {
-                               $out .= $this->getPublishModule();
+                               $moduleContent .= $this->getPublishModule();
                        }
                        }
-                       if ($this->isAdminModuleEnabled('edit')){
-                               $out .= $this->getEditModule();
+                       if ($this->isAdminModuleEnabled('edit')) {
+                               $moduleContent .= $this->getEditModule();
                        }
                        if ($this->isAdminModuleEnabled('tsdebug')) {
                        }
                        if ($this->isAdminModuleEnabled('tsdebug')) {
-                               $out .= $this->getTSDebugModule();
+                               $moduleContent .= $this->getTSDebugModule();
                        }
                        if ($this->isAdminModuleEnabled('info')) {
                        }
                        if ($this->isAdminModuleEnabled('info')) {
-                               $out .= $this->getInfoModule();
+                               $moduleContent .= $this->getInfoModule();
                        }
                }
 
                        }
                }
 
-               $row = '<img src="' . TYPO3_mainDir . 'gfx/ol/blank.gif" width="18" height="16" align="absmiddle" border="0" alt="" />';
-               $row .= '<img src="' . TYPO3_mainDir . 'gfx/ol/' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_top']?'minus':'plus') . 'bullet.gif" width="18" height="16" align="absmiddle" border="0" alt="" />';
-               $row .= '<strong>' . $this->extFw($this->extGetLL('adminOptions')) . '</strong>';
-               $row .= $this->extFw(': ' . $GLOBALS['BE_USER']->user['username']);
-
-               $header = '
-                       <tr class="typo3-adminPanel-hRow" style="background-color: #9ba1a8; cursor: move;">
-                               <td colspan="4" style="text-align:left; white-space:nowrap;">' .
-                                       $this->extItemLink('top',$row) . '
-                                       <img src="clear.gif" width="40" height="1" alt="" />
-                                       <input type="hidden" name="TSFE_ADMIN_PANEL[display_top]" value="' . $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_top'] . '" />' . ($this->extNeedUpdate ? '<input type="submit" value="' . $this->extGetLL('update') . '" />' : '') . '</td>
-                       </tr>';
+               $row = $this->extGetLL('adminPanelTitle') . ': <span class="typo3-adminPanel-beuser">' .
+                       htmlspecialchars($GLOBALS['BE_USER']->user['username']) . '</span>';
+
+               $isVisible = $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_top'];
+               $cssClassName = 'typo3-adminPanel-panel-' . ($isVisible ? 'open' : 'closed');
+               $header = '<tr class="typo3-adminPanel-hRow">' .
+                               '<td colspan="2" id="typo3-adminPanel-header" class="' . $cssClassName . '">' .
+                                       '<span class="typo3-adminPanel-header-title">' . $row . '</span>' .
+                                       $this->linkSectionHeader('top', '<span class="typo3-adminPanel-header-button"></span>', 'typo3-adminPanel-header-buttonWrapper') .
+                                       '<input type="hidden" name="TSFE_ADMIN_PANEL[display_top]" value="' . $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_top'] . '" /><div></td>' .
+                       '</tr>';
+
+               if ($moduleContent) {
+                       $footer = '<tr class="typo3-adminPanel-fRow">' .
+                                       '<td colspan="2" id="typo3-adminPanel-header">' .
+                                               ($this->extNeedUpdate ? ' <input class="typo3-adminPanel-update" type="submit" value="' . $this->extGetLL('update') . '" />' : '') . '</td>' .
+                               '</tr>';
+               } else {
+                       $footer = '';
+               }
 
 
-               $query = !t3lib_div::_GET('id') ? ('<input type="hidden" name="id" value="' . $GLOBALS['TSFE']->id . '" />' . LF) : '';
+               $query = !t3lib_div::_GET('id') ? ('<input type="hidden" name="id" value="' . $GLOBALS['TSFE']->id . '" />') : '';
                        // the dummy field is needed for Firefox: to force a page reload on submit with must change the form value with JavaScript (see "onsubmit" attribute of the "form" element")
                        // the dummy field is needed for Firefox: to force a page reload on submit with must change the form value with JavaScript (see "onsubmit" attribute of the "form" element")
-               $query .= '<input type="hidden" name="TSFE_ADMIN_PANEL[DUMMY]" value="">';
+               $query .= '<input type="hidden" name="TSFE_ADMIN_PANEL[DUMMY]" value="" />';
                foreach (t3lib_div::_GET() as $key => $value) {
                        if ($key != 'TSFE_ADMIN_PANEL') {
                                if (is_array($value)) {
                                        $query .= $this->getHiddenFields($key, $value);
                                } else {
                foreach (t3lib_div::_GET() as $key => $value) {
                        if ($key != 'TSFE_ADMIN_PANEL') {
                                if (is_array($value)) {
                                        $query .= $this->getHiddenFields($key, $value);
                                } else {
-                                       $query .= '<input type="hidden" name="' . htmlspecialchars($key) . '" value="' . htmlspecialchars($value) . '">' . LF;
+                                       $query .= '<input type="hidden" name="' . htmlspecialchars($key) . '" value="' . htmlspecialchars($value) . '" />';
                                }
                        }
                }
 
                $out = '
 <!--
                                }
                        }
                }
 
                $out = '
 <!--
-       ADMIN PANEL
+       TYPO3 admin panel start
 -->
 -->
-<a name="TSFE_ADMIN"></a>
-<form name="TSFE_ADMIN_PANEL_FORM" action="' . htmlspecialchars(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT')) . '#TSFE_ADMIN" method="get" style="margin:0;" onsubmit="document.forms.TSFE_ADMIN_PANEL_FORM[\'TSFE_ADMIN_PANEL[DUMMY]\'].value=Math.random().toString().substring(2,8)">' .
-$query . '
-       <table border="0" cellpadding="0" cellspacing="0" class="typo3-adminPanel" style="background-color:#f6f2e6; border: 1px solid black; z-index:0; position:absolute;" summary="">' .
-               $header .
-               $out . '
-       </table>
-</form>';
+<a id="TSFE_ADMIN"></a>
+<form id="TSFE_ADMIN_PANEL_FORM" name="TSFE_ADMIN_PANEL_FORM" action="' . htmlspecialchars(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT')) . '#TSFE_ADMIN" method="get" onsubmit="document.forms.TSFE_ADMIN_PANEL_FORM[\'TSFE_ADMIN_PANEL[DUMMY]\'].value=Math.random().toString().substring(2,8)">' .
+$query . '<table class="typo3-adminPanel">' .
+               $header . $moduleContent . $footer . '</table></form>';
 
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_top']) {
                        $out .= '<script type="text/javascript" src="t3lib/jsfunc.evalfield.js"></script>';
 
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_top']) {
                        $out .= '<script type="text/javascript" src="t3lib/jsfunc.evalfield.js"></script>';
-                       $out .= '
-                       <script type="text/javascript">
-                                       /*<![CDATA[*/
+                       $out .= '<script type="text/javascript">/*<![CDATA[*/' . t3lib_div::minifyJavaScript('
                                var evalFunc = new evalFunc();
                                        // TSFEtypo3FormFieldSet()
                                function TSFEtypo3FormFieldSet(theField, evallist, is_in, checkbox, checkboxValue) {    //
                                var evalFunc = new evalFunc();
                                        // TSFEtypo3FormFieldSet()
                                function TSFEtypo3FormFieldSet(theField, evallist, is_in, checkbox, checkboxValue) {    //
@@ -351,10 +365,13 @@ $query . '
                                        var theValue = document.TSFE_ADMIN_PANEL_FORM[theField].value;
                                        if (checkbox && theValue==checkboxValue) {
                                                document.TSFE_ADMIN_PANEL_FORM[theField+"_hr"].value="";
                                        var theValue = document.TSFE_ADMIN_PANEL_FORM[theField].value;
                                        if (checkbox && theValue==checkboxValue) {
                                                document.TSFE_ADMIN_PANEL_FORM[theField+"_hr"].value="";
+                                               alert(theField);
                                                document.TSFE_ADMIN_PANEL_FORM[theField+"_cb"].checked = "";
                                        } else {
                                                document.TSFE_ADMIN_PANEL_FORM[theField+"_hr"].value = evalFunc.outputObjValue(theFObj, theValue);
                                                document.TSFE_ADMIN_PANEL_FORM[theField+"_cb"].checked = "";
                                        } else {
                                                document.TSFE_ADMIN_PANEL_FORM[theField+"_hr"].value = evalFunc.outputObjValue(theFObj, theValue);
-                                               document.TSFE_ADMIN_PANEL_FORM[theField+"_cb"].checked = "on";
+                                               if (document.TSFE_ADMIN_PANEL_FORM[theField+"_cb"]) {
+                                                       document.TSFE_ADMIN_PANEL_FORM[theField+"_cb"].checked = "on";
+                                               }
                                        }
                                }
                                        // TSFEtypo3FormFieldGet()
                                        }
                                }
                                        // TSFEtypo3FormFieldGet()
@@ -366,20 +383,17 @@ $query . '
                                                document.TSFE_ADMIN_PANEL_FORM[theField].value = evalFunc.evalObjValue(theFObj, document.TSFE_ADMIN_PANEL_FORM[theField+"_hr"].value);
                                        }
                                        TSFEtypo3FormFieldSet(theField, evallist, is_in, checkbox, checkboxValue);
                                                document.TSFE_ADMIN_PANEL_FORM[theField].value = evalFunc.evalObjValue(theFObj, document.TSFE_ADMIN_PANEL_FORM[theField+"_hr"].value);
                                        }
                                        TSFEtypo3FormFieldSet(theField, evallist, is_in, checkbox, checkboxValue);
-                               }
-                                       /*]]>*/
-                       </script>
-                       <script language="javascript" type="text/javascript">' . $this->extJSCODE . '</script>';
+                               }') . '/*]]>*/</script><script language="javascript" type="text/javascript">' .
+                               $this->extJSCODE . '</script>';
                }
 
                }
 
-               $out = '
-               <div onmousedown="TYPO3AdminPanel.dragStart(this)" onmouseup="TYPO3AdminPanel.savePosition(this)" id="admPanel" style="position:absolute; z-index: 10000;">
-               ' . $out . '
-               <br /></div>
-               <script type="text/javascript">
-                       TYPO3AdminPanel.dragInit();
-                       TYPO3AdminPanel.restorePosition();
-               </script>';
+               $out .= '<script src="' . t3lib_div::locationHeaderUrl('t3lib/js/adminpanel.js') . '" type="text/javascript"></script><script type="text/javascript">/*<![CDATA[*/' .
+                       'typo3AdminPanel = new TYPO3AdminPanel();typo3AdminPanel.init("typo3-adminPanel-header", "TSFE_ADMIN_PANEL_FORM");' .
+                       '/*]]>*/</script>
+<!--
+       TYPO3 admin panel end
+-->
+';
 
                return $out;
        }
 
                return $out;
        }
@@ -393,7 +407,7 @@ $query . '
         * @return      string          hidden fields
         * @see display()
         */
         * @return      string          hidden fields
         * @see display()
         */
-       protected function getHiddenFields($key, &$val) {
+       protected function getHiddenFields($key, array $val) {
                $out = '';
                foreach ($val as $k => $v) {
                        if (is_array($v)) {
                $out = '';
                foreach ($val as $k => $v) {
                        if (is_array($v)) {
@@ -414,20 +428,19 @@ $query . '
        /**
         * Creates the content for the "preview" section ("module") of the Admin Panel
         *
        /**
         * Creates the content for the "preview" section ("module") of the Admin Panel
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
-       protected function getPreviewModule($out = '') {
-               $out .= $this->extGetHead('preview');
+       protected function getPreviewModule() {
+               $out = $this->extGetHead('preview');
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_preview']) {
                        $this->extNeedUpdate = true;
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_preview']) {
                        $this->extNeedUpdate = true;
-                       $out .= $this->extGetItem('preview_showHiddenPages', '<input type="hidden" name="TSFE_ADMIN_PANEL[preview_showHiddenPages]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[preview_showHiddenPages]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['preview_showHiddenPages'] ? ' checked="checked"' : '') . ' />');
-                       $out .= $this->extGetItem('preview_showHiddenRecords', '<input type="hidden" name="TSFE_ADMIN_PANEL[preview_showHiddenRecords]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[preview_showHiddenRecords]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['preview_showHiddenRecords'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('preview_showHiddenPages', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[preview_showHiddenPages]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[preview_showHiddenPages]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['preview_showHiddenPages'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('preview_showHiddenRecords', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[preview_showHiddenRecords]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[preview_showHiddenRecords]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['preview_showHiddenRecords'] ? ' checked="checked"' : '') . ' />');
 
                                // Simulate date
 
                                // Simulate date
-                       $out .= $this->extGetItem('preview_simulateDate', '<input type="checkbox" name="TSFE_ADMIN_PANEL[preview_simulateDate]_cb" onclick="TSFEtypo3FormFieldGet(\'TSFE_ADMIN_PANEL[preview_simulateDate]\', \'datetime\', \'\',1,0,1);" /><input type="text" name="TSFE_ADMIN_PANEL[preview_simulateDate]_hr" onchange="TSFEtypo3FormFieldGet(\'TSFE_ADMIN_PANEL[preview_simulateDate]\', \'datetime\', \'\', 1,0);" /><input type="hidden" name="TSFE_ADMIN_PANEL[preview_simulateDate]" value="' . $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['preview_simulateDate'] . '" />');
-                       $this->extJSCODE .= 'TSFEtypo3FormFieldSet("TSFE_ADMIN_PANEL[preview_simulateDate]", "datetime", "", 1,0);';
+                       $out .= $this->extGetItem('preview_simulateDate', '<input type="text" name="TSFE_ADMIN_PANEL[preview_simulateDate]_hr" onchange="TSFEtypo3FormFieldGet(\'TSFE_ADMIN_PANEL[preview_simulateDate]\', \'datetime\', \'\', 1,0);" /><input type="hidden" name="TSFE_ADMIN_PANEL[preview_simulateDate]" value="' . $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['preview_simulateDate'] . '" />');
+                       $this->extJSCODE .= 'TSFEtypo3FormFieldSet("TSFE_ADMIN_PANEL[preview_simulateDate]", "datetime", "", 0, 0);';
 
                                // Simulate fe_user:
                        $options = '<option value="0">&nbsp;</option>';
 
                                // Simulate fe_user:
                        $options = '<option value="0">&nbsp;</option>';
@@ -448,21 +461,21 @@ $query . '
        /**
         * Creates the content for the "cache" section ("module") of the Admin Panel
         *
        /**
         * Creates the content for the "cache" section ("module") of the Admin Panel
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
-       protected function getCacheModule($out = '') {
-               $out.= $this->extGetHead('cache');
+       protected function getCacheModule() {
+               $out = $this->extGetHead('cache');
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_cache']) {
                        $this->extNeedUpdate = true;
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_cache']) {
                        $this->extNeedUpdate = true;
-                       $out .= $this->extGetItem('cache_noCache', '<input type="hidden" name="TSFE_ADMIN_PANEL[cache_noCache]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[cache_noCache]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['cache_noCache'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('cache_noCache', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[cache_noCache]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[cache_noCache]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['cache_noCache'] ? ' checked="checked"' : '') . ' />');
+                       $levels = $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['cache_clearCacheLevels'];
                        $options = '';
                        $options = '';
-                       $options .= '<option value="0"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['cache_clearCacheLevels'] == 0 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_0') . '</option>';
-                       $options .= '<option value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['cache_clearCacheLevels'] == 1 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_1') . '</option>';
-                       $options .= '<option value="2"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['cache_clearCacheLevels'] == 2 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_2') . '</option>';
+                       $options .= '<option value="0"' . ($levels == 0 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_0') . '</option>';
+                       $options .= '<option value="1"' . ($levels == 1 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_1') . '</option>';
+                       $options .= '<option value="2"' . ($levels == 2 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_2') . '</option>';
                        $out .= $this->extGetItem('cache_clearLevels', '<select name="TSFE_ADMIN_PANEL[cache_clearCacheLevels]">' . $options . '</select>' .
                        $out .= $this->extGetItem('cache_clearLevels', '<select name="TSFE_ADMIN_PANEL[cache_clearCacheLevels]">' . $options . '</select>' .
-                                       '<input type="hidden" name="TSFE_ADMIN_PANEL[cache_clearCacheId]" value="' . $GLOBALS['TSFE']->id . '" /><input type="submit" value="' . $this->extGetLL('update') . '" />');
+                                       '<input type="hidden" name="TSFE_ADMIN_PANEL[cache_clearCacheId]" value="' . $GLOBALS['TSFE']->id . '" /> <input type="submit" value="' . $this->extGetLL('update') . '" />');
 
                                // Generating tree:
                        $depth = $this->extGetFeAdminValue('cache', 'clearCacheLevels');
 
                                // Generating tree:
                        $depth = $this->extGetFeAdminValue('cache', 'clearCacheLevels');
@@ -471,15 +484,13 @@ $query . '
                        $GLOBALS['BE_USER']->extPageInTreeInfo[] = array($GLOBALS['TSFE']->page['uid'], htmlspecialchars($GLOBALS['TSFE']->page['title']), $depth+1);
                        $GLOBALS['BE_USER']->extGetTreeList($GLOBALS['TSFE']->id, $depth, 0, $GLOBALS['BE_USER']->getPagePermsClause(1));
                        foreach ($GLOBALS['BE_USER']->extPageInTreeInfo as $row) {
                        $GLOBALS['BE_USER']->extPageInTreeInfo[] = array($GLOBALS['TSFE']->page['uid'], htmlspecialchars($GLOBALS['TSFE']->page['title']), $depth+1);
                        $GLOBALS['BE_USER']->extGetTreeList($GLOBALS['TSFE']->id, $depth, 0, $GLOBALS['BE_USER']->getPagePermsClause(1));
                        foreach ($GLOBALS['BE_USER']->extPageInTreeInfo as $row) {
-                               $outTable .= '
-                                       <tr>
-                                               <td style="white-space:nowrap;"><img src="clear.gif" width="' . (($depth+1-$row[2])*18) . '" height="1" alt="" /><img src="' . TYPO3_mainDir . 'gfx/i/pages.gif" width="18" height="16" align="absmiddle" border="0" alt="" />' . $this->extFw($row[1]) . '</td>
-                                               <td><img src="clear.gif" width="10" height="1" alt="" /></td>
-                                               <td>' . $this->extFw($GLOBALS['BE_USER']->extGetNumberOfCachedPages($row[0])) . '</td>
-                                       </tr>';
+                               $outTable .= '<tr>' .
+                                               '<td><img src="typo3/gfx/clear.gif" width="' . (($depth+1-$row[2])*18) . '" height="1" alt="" /><img ' .
+                                               t3lib_iconWorks::skinImg(TYPO3_mainDir, 'gfx/i/pages.gif', 'width="18" height="16"') . ' align="top" alt="" /> ' . htmlspecialchars($row[1]) .
+                                               '</td><td>' . $GLOBALS['BE_USER']->extGetNumberOfCachedPages($row[0]) . '</td></tr>';
                        }
 
                        }
 
-                       $outTable = '<br /><table border="0" cellpadding="0" cellspacing="0" summary="">' . $outTable . '</table>';
+                       $outTable = '<br /><table>' . $outTable . '</table>';
                        $outTable .= '<input type="submit" name="TSFE_ADMIN_PANEL[action][clearCache]" value="' . $this->extGetLL('cache_doit') . '" />';
 
                        $out .= $this->extGetItem('cache_cacheEntries', $outTable);
                        $outTable .= '<input type="submit" name="TSFE_ADMIN_PANEL[action][clearCache]" value="' . $this->extGetLL('cache_doit') . '" />';
 
                        $out .= $this->extGetItem('cache_cacheEntries', $outTable);
@@ -495,14 +506,15 @@ $query . '
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
-       protected function getPublishModule($out = '') {
-               $out .= $this->extGetHead('publish');
+       protected function getPublishModule() {
+               $out = $this->extGetHead('publish');
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_publish']) {
                        $this->extNeedUpdate = true;
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_publish']) {
                        $this->extNeedUpdate = true;
+                       $levels = $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['publish_levels'];
                        $options = '';
                        $options = '';
-                       $options .= '<option value="0"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['publish_levels'] == 0 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_0') . '</option>';
-                       $options .= '<option value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['publish_levels'] == 1 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_1') . '</option>';
-                       $options .= '<option value="2"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['publish_levels'] == 2 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_2') . '</option>';
+                       $options .= '<option value="0"' . ($levels == 0 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_0') . '</option>';
+                       $options .= '<option value="1"' . ($levels ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_1') . '</option>';
+                       $options .= '<option value="2"' . ($levels == 2 ? ' selected="selected"' : '') . '>' . $this->extGetLL('div_Levels_2') . '</option>';
                        $out .= $this->extGetItem('publish_levels', '<select name="TSFE_ADMIN_PANEL[publish_levels]">' . $options . '</select>' .
                                        '<input type="hidden" name="TSFE_ADMIN_PANEL[publish_id]" value="' . $GLOBALS['TSFE']->id . '" />&nbsp;<input type="submit" value="' . $this->extGetLL('update') . '" />');
 
                        $out .= $this->extGetItem('publish_levels', '<select name="TSFE_ADMIN_PANEL[publish_levels]">' . $options . '</select>' .
                                        '<input type="hidden" name="TSFE_ADMIN_PANEL[publish_id]" value="' . $GLOBALS['TSFE']->id . '" />&nbsp;<input type="submit" value="' . $this->extGetLL('update') . '" />');
 
@@ -513,14 +525,12 @@ $query . '
                        $GLOBALS['BE_USER']->extPageInTreeInfo[] = array($GLOBALS['TSFE']->page['uid'], htmlspecialchars($GLOBALS['TSFE']->page['title']), $depth+1);
                        $GLOBALS['BE_USER']->extGetTreeList($GLOBALS['TSFE']->id, $depth, 0, $GLOBALS['BE_USER']->getPagePermsClause(1));
                        foreach ($GLOBALS['BE_USER']->extPageInTreeInfo as $row) {
                        $GLOBALS['BE_USER']->extPageInTreeInfo[] = array($GLOBALS['TSFE']->page['uid'], htmlspecialchars($GLOBALS['TSFE']->page['title']), $depth+1);
                        $GLOBALS['BE_USER']->extGetTreeList($GLOBALS['TSFE']->id, $depth, 0, $GLOBALS['BE_USER']->getPagePermsClause(1));
                        foreach ($GLOBALS['BE_USER']->extPageInTreeInfo as $row) {
-                               $outTable.= '
-                                       <tr>
-                                               <td style="white-space:nowrap;"><img src="clear.gif" width="' . (($depth + 1 - $row[2]) * 18) . '" height="1" alt="" /><img src="' . TYPO3_mainDir . 'gfx/i/pages.gif" width="18" height="16" align="absmiddle" border="0" alt="" />' . $this->extFw($row[1]) . '</td>
-                                               <td><img src="clear.gif" width="10" height="1" alt="" /></td>
-                                               <td>' . $this->extFw('...') . '</td>
-                                       </tr>';
+                               $outTable.= '<tr>' .
+                                               '<td style="white-space:nowrap;"><img src="typo3/gfx/clear.gif" width="' . (($depth + 1 - $row[2]) * 18) . '" height="1" alt="" /><img ' .
+                                               t3lib_iconWorks::skinImg(TYPO3_mainDir, 'gfx/i/pages.gif', 'width="18" height="16"') . ' align="top" border="0" alt="" />' . $row[1] .
+                                               '</td><td><img src="typo3/gfx/clear.gif" width="10" height="1" alt="" /></td><td>...</td></tr>';
                        }
                        }
-                       $outTable = '<br /><table border="0" cellpadding="0" cellspacing="0" summary="">' . $outTable . '</table>';
+                       $outTable = '<br /><table>' . $outTable . '</table>';
                        $outTable .= '<input type="submit" name="TSFE_ADMIN_PANEL[action][publish]" value="' . $this->extGetLL('publish_doit') . '" />';
 
                        $out .= $this->extGetItem('publish_tree', $outTable);
                        $outTable .= '<input type="submit" name="TSFE_ADMIN_PANEL[action][publish]" value="' . $this->extGetLL('publish_doit') . '" />';
 
                        $out .= $this->extGetItem('publish_tree', $outTable);
@@ -532,12 +542,11 @@ $query . '
        /**
         * Creates the content for the "edit" section ("module") of the Admin Panel
         *
        /**
         * Creates the content for the "edit" section ("module") of the Admin Panel
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
-       protected function getEditModule($out = '') {
-               $out .= $this->extGetHead('edit');
+       protected function getEditModule() {
+               $out = $this->extGetHead('edit');
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_edit']) {
 
                                // If another page module was specified, replace the default Page module with the new one
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_edit']) {
 
                                // If another page module was specified, replace the default Page module with the new one
@@ -545,10 +554,10 @@ $query . '
                        $pageModule = t3lib_BEfunc::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout';
 
                        $this->extNeedUpdate = true;
                        $pageModule = t3lib_BEfunc::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout';
 
                        $this->extNeedUpdate = true;
-                       $out .= $this->extGetItem('edit_displayFieldIcons', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_displayFieldIcons'] ? ' checked="checked"' : '') . ' />');
-                       $out .= $this->extGetItem('edit_displayIcons', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_displayIcons'] ? ' checked="checked"' : '') . ' />');
-                       $out .= $this->extGetItem('edit_editFormsOnPage', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_editFormsOnPage]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_editFormsOnPage]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_editFormsOnPage'] ? ' checked="checked"':'') . ' />');
-                       $out .= $this->extGetItem('edit_editNoPopup', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_editNoPopup]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_editNoPopup]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_editNoPopup'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('edit_displayFieldIcons', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_displayFieldIcons'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('edit_displayIcons', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_displayIcons'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('edit_editFormsOnPage', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_editFormsOnPage]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_editFormsOnPage]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_editFormsOnPage'] ? ' checked="checked"':'') . ' />');
+                       $out .= $this->extGetItem('edit_editNoPopup', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_editNoPopup]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_editNoPopup]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_editNoPopup'] ? ' checked="checked"' : '') . ' />');
                        $out .= $this->extGetItem('', $this->ext_makeToolBar());
 
                        if (!t3lib_div::_GP('ADMCMD_view')) {
                        $out .= $this->extGetItem('', $this->ext_makeToolBar());
 
                        if (!t3lib_div::_GP('ADMCMD_view')) {
@@ -567,7 +576,7 @@ $query . '
                                                }
                                                return false;
                                                ').
                                                }
                                                return false;
                                                ').
-                                       '">' . $this->extFw($this->extGetLL('edit_openAB')) . '</a>');
+                                       '">' . $this->extGetLL('edit_openAB') . '</a>');
                        }
                }
 
                        }
                }
 
@@ -577,22 +586,21 @@ $query . '
        /**
         * Creates the content for the "tsdebug" section ("module") of the Admin Panel
         *
        /**
         * Creates the content for the "tsdebug" section ("module") of the Admin Panel
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
-       protected function getTSDebugModule($out = '') {
-               $out .= $this->extGetHead('tsdebug');
+       protected function getTSDebugModule() {
+               $out = $this->extGetHead('tsdebug');
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_tsdebug']) {
                        $this->extNeedUpdate = true;
 
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_tsdebug']) {
                        $this->extNeedUpdate = true;
 
-                       $out .= $this->extGetItem('tsdebug_tree', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_tree]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_tree]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_tree'] ? ' checked="checked"' : '') . ' />');
-                       $out .= $this->extGetItem('tsdebug_displayTimes', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayTimes]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayTimes]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_displayTimes'] ? ' checked="checked"' : '') . ' />');
-                       $out .= $this->extGetItem('tsdebug_displayMessages', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayMessages]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayMessages]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_displayMessages'] ? ' checked="checked"':'') . ' />');
-                       $out .= $this->extGetItem('tsdebug_LR', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_LR]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_LR]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_LR'] ? ' checked="checked"' : '') . ' />');
-                       $out .= $this->extGetItem('tsdebug_displayContent', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayContent]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayContent]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_displayContent'] ? ' checked="checked"' : '') . ' />');
-                       $out .= $this->extGetItem('tsdebug_displayQueries', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayQueries]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayQueries]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_displayQueries'] ? ' checked="checked"' : '') . ' />');
-                       $out .= $this->extGetItem('tsdebug_forceTemplateParsing', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_forceTemplateParsing]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_forceTemplateParsing]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_forceTemplateParsing'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('tsdebug_tree', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_tree]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_tree]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_tree'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('tsdebug_displayTimes', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayTimes]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayTimes]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_displayTimes'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('tsdebug_displayMessages', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayMessages]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayMessages]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_displayMessages'] ? ' checked="checked"':'') . ' />');
+                       $out .= $this->extGetItem('tsdebug_LR', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_LR]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_LR]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_LR'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('tsdebug_displayContent', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayContent]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayContent]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_displayContent'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('tsdebug_displayQueries', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayQueries]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayQueries]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_displayQueries'] ? ' checked="checked"' : '') . ' />');
+                       $out .= $this->extGetItem('tsdebug_forceTemplateParsing', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_forceTemplateParsing]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_forceTemplateParsing]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['tsdebug_forceTemplateParsing'] ? ' checked="checked"' : '') . ' />');
 
                        $GLOBALS['TT']->printConf['flag_tree'] = $this->extGetFeAdminValue('tsdebug', 'tree');
                        $GLOBALS['TT']->printConf['allTime'] = $this->extGetFeAdminValue('tsdebug', 'displayTimes');
 
                        $GLOBALS['TT']->printConf['flag_tree'] = $this->extGetFeAdminValue('tsdebug', 'tree');
                        $GLOBALS['TT']->printConf['allTime'] = $this->extGetFeAdminValue('tsdebug', 'displayTimes');
@@ -600,11 +608,7 @@ $query . '
                        $GLOBALS['TT']->printConf['flag_content'] = $this->extGetFeAdminValue('tsdebug', 'displayContent');
                        $GLOBALS['TT']->printConf['flag_queries'] = $this->extGetFeAdminValue('tsdebug', 'displayQueries');
 
                        $GLOBALS['TT']->printConf['flag_content'] = $this->extGetFeAdminValue('tsdebug', 'displayContent');
                        $GLOBALS['TT']->printConf['flag_queries'] = $this->extGetFeAdminValue('tsdebug', 'displayQueries');
 
-                       $out.= '
-                               <tr>
-                                       <td><img src="clear.gif" width="50" height="1" alt="" /></td>
-                                       <td colspan="3">' . $GLOBALS['TT']->printTSlog() . '</td>
-                               </tr>';
+                       $out.= '<tr><td colspan="2">' . $GLOBALS['TT']->printTSlog() . '</td></tr>';
                }
 
                return $out;
                }
 
                return $out;
@@ -613,12 +617,11 @@ $query . '
        /**
         * Creates the content for the "info" section ("module") of the Admin Panel
         *
        /**
         * Creates the content for the "info" section ("module") of the Admin Panel
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
         * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
         * @see display()
         */
-       protected function getInfoModule($out = '') {
-               $out .= $this->extGetHead('info');
+       protected function getInfoModule() {
+               $out = $this->extGetHead('info');
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_info']) {
                        $tableArr = array();
 
                if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_info']) {
                        $tableArr = array();
 
@@ -660,28 +663,21 @@ $query . '
                        foreach ($tableArr as $arr) {
                                if (strlen($arr[0])) {  // Put text wrapped by "*" between <strong> tags
                                        $value1 = preg_replace('/^\*(.*)\*$/', '$1', $arr[0], -1, $count);
                        foreach ($tableArr as $arr) {
                                if (strlen($arr[0])) {  // Put text wrapped by "*" between <strong> tags
                                        $value1 = preg_replace('/^\*(.*)\*$/', '$1', $arr[0], -1, $count);
-                                       $value1 = ($count?'<strong>':'') . $this->extFw($value1) . ($count?'</strong>':'');
+                                       $value1 = ($count?'<strong>':'') . $value1 . ($count?'</strong>':'');
                                } else {
                                } else {
-                                       $value1 = $this->extFw('&nbsp;');
+                                       $value1 = '&nbsp;';
                                }
 
                                $value2 = strlen($arr[1]) ? $arr[1] : '&nbsp;';
                                }
 
                                $value2 = strlen($arr[1]) ? $arr[1] : '&nbsp;';
-                               $value2 = $this->extFw($value2);
+                               $value2 = $value2;
 
 
-                               $table .= '
-                                       <tr>
-                                               <td style="text-align:left">' . $value1 . '</td>
-                                               <td style="text-align:right">' . $value2 . '</td>
-                                       </tr>';
+                               $table .= '<tr class="typo3-adminPanel-itemRow">' .
+                                               '<td class="typo3-adminPanel-section-content-title">' . $value1 . '</td>' .
+                                               '<td class="typo3-adminPanel-section-content">' . $value2 . '</td>' .
+                                       '</tr>';
                        }
 
                        }
 
-                       $table = '<table border="0" cellpadding="0" cellspacing="0" summary="">' . $table . '</table>';
-
-                       $out .= '
-                               <tr>
-                                       <td><img src="clear.gif" width="50" height="1" alt="" /></td>
-                                       <td colspan="3">' . $table . '</td>
-                               </tr>';
+                       $out .= $table;
                }
 
                return $out;
                }
 
                return $out;
@@ -703,16 +699,15 @@ $query . '
         * @access private
         * @see extGetItem()
         */
         * @access private
         * @see extGetItem()
         */
-       protected function extGetHead($pre) {
-               $out = '<img src="' . TYPO3_mainDir . 'gfx/ol/blank.gif" width="18" height="16" align="absmiddle" border="0" alt="" />';
-               $out .= '<img src="' . TYPO3_mainDir . 'gfx/ol/' . ($GLOBALS['BE_USER']->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 class="typo3-adminPanel-itemHRow" style="background-color:#abbbb4;">
-                                       <td colspan="4" style="text-align:left; border-top:dashed 1px #007a8c; white-space:nowrap;">' . $out . '<input type="hidden" name="TSFE_ADMIN_PANEL[display_' . $pre . ']" value="' . $GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_' . $pre] . '" /></td>
-                               </tr>';
+       protected function extGetHead($sectionSuffix) {
+               $settingName = 'display_' . $sectionSuffix;
+               $isVisible = $GLOBALS['BE_USER']->uc['TSFE_adminConfig'][$settingName];
+               $cssClassName = 'typo3-adminPanel-section-' . ($isVisible ? 'open' : 'closed');
+
+               return '<tr class="typo3-adminPanel-section-title"><td colspan="2">' .
+                               $this->linkSectionHeader($sectionSuffix, $this->extGetLL($sectionSuffix), $cssClassName) .
+                               '<input type="hidden" name="TSFE_ADMIN_PANEL[' . $settingName .
+                               ']" value="' . $isVisible . '" /></td></tr>';
        }
 
        /**
        }
 
        /**
@@ -724,10 +719,10 @@ $query . '
         * @access private
         * @see extGetHead()
         */
         * @access private
         * @see extGetHead()
         */
-       protected function extItemLink($pre, $str) {
-               return '<a href="#" style="text-decoration:none;" onclick="' .
-                       htmlspecialchars('document.TSFE_ADMIN_PANEL_FORM[\'TSFE_ADMIN_PANEL[display_' . $pre . ']\'].value=' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_' . $pre] ? '0' : '1') . '; document.TSFE_ADMIN_PANEL_FORM.submit(); return false;') .
-                       '">' . $str . '</a>';
+       protected function linkSectionHeader($sectionSuffix, $sectionTitle, $className = '') {
+               return '<a href="javascript:void(0)" onclick="' .
+                       htmlspecialchars('document.TSFE_ADMIN_PANEL_FORM[\'TSFE_ADMIN_PANEL[display_' . $sectionSuffix . ']\'].value=' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_' . $sectionSuffix] ? '0' : '1') . ';document.TSFE_ADMIN_PANEL_FORM.submit();return false;') .
+                       '"' . ($className ? ' class="' . $className . '"' : '') . '><div class="typo3-adminPanel-label">' . $sectionTitle . '</div></a>';
        }
 
        /**
        }
 
        /**
@@ -740,67 +735,52 @@ $query . '
         * @access private
         * @see extGetHead()
         */
         * @access private
         * @see extGetHead()
         */
-       protected function extGetItem($pre, $element) {
-               $out = '
-                                       <tr class="typo3-adminPanel-itemRow">
-                                               <td><img src="clear.gif" width="50" height="1" alt="" /></td>
-                                               <td style="text-align:left; white-space:nowrap;">' . ($pre ? $this->extFw($this->extGetLL($pre)) : '&nbsp;') . '</td>
-                                               <td><img src="clear.gif" width="30" height="1" alt="" /></td>
-                                               <td style="text-align:left; white-space:nowrap;">' . $element . '</td>
-                                       </tr>';
+       protected function extGetItem($title, $content = '', $checkboxContent = '') {
+               $out = '<tr class="typo3-adminPanel-itemRow">' .
+                       '<td class="typo3-adminPanel-section-content">' . $checkboxContent . ($title ? $this->extGetLL($title) : '&nbsp;') . $content . '</td></tr>';
 
                return $out;
        }
 
        /**
 
                return $out;
        }
 
        /**
-        * Wraps a string in a span-tag with black verdana font
-        *
-        * @param       string          The string to wrap
-        * @return      string
-        */
-       protected function extFw($str) {
-               return '<span style="font-family:Verdana,Arial,Helvetica,sans-serif; font-size:10px; color:black;">' . $str . '</span>';
-       }
-
-       /**
         * Creates the tool bar links for the "edit" section of the Admin Panel.
         *
         * @return      string          A string containing images wrapped in <a>-tags linking them to proper functions.
         */
        public function ext_makeToolBar() {
                        //  If mod.web_list.newContentWiz.overrideWithExtension is set, use that extension's create new content wizard instead:
         * Creates the tool bar links for the "edit" section of the Admin Panel.
         *
         * @return      string          A string containing images wrapped in <a>-tags linking them to proper functions.
         */
        public function ext_makeToolBar() {
                        //  If mod.web_list.newContentWiz.overrideWithExtension is set, use that extension's create new content wizard instead:
-               $tmpTSc = t3lib_BEfunc::getModTSconfig($this->pageinfo['uid'],'mod.web_list');
-               $tmpTSc = $tmpTSc ['properties']['newContentWiz.']['overrideWithExtension'];
-               $newContentWizScriptPath = t3lib_extMgm::isLoaded($tmpTSc) ? (t3lib_extMgm::extRelPath($tmpTSc) . 'mod1/db_new_content_el.php') : (TYPO3_mainDir . 'sysext/cms/layout/db_new_content_el.php');
+               $tsConfig = t3lib_BEfunc::getModTSconfig($this->pageinfo['uid'],'mod.web_list');
+               $tsConfig = $tsConfig ['properties']['newContentWiz.']['overrideWithExtension'];
+               $newContentWizScriptPath = t3lib_extMgm::isLoaded($tsConfig) ? (t3lib_extMgm::extRelPath($tsConfig) . 'mod1/db_new_content_el.php') : (TYPO3_mainDir . 'sysext/cms/layout/db_new_content_el.php');
 
                $perms = $GLOBALS['BE_USER']->calcPerms($GLOBALS['TSFE']->page);
                $langAllowed = $GLOBALS['BE_USER']->checkLanguageAccess($GLOBALS['TSFE']->sys_language_uid);
 
 
                $perms = $GLOBALS['BE_USER']->calcPerms($GLOBALS['TSFE']->page);
                $langAllowed = $GLOBALS['BE_USER']->checkLanguageAccess($GLOBALS['TSFE']->sys_language_uid);
 
-               $toolBar = '';
                $id = $GLOBALS['TSFE']->id;
                $id = $GLOBALS['TSFE']->id;
-               $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . 'show_rechis.php?element=' . rawurlencode('pages:' . $id) . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '#latest">' .
-                                       '<img src="' . TYPO3_mainDir . 'gfx/history2.gif" width="13" height="12" hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_recordHistory') . '" alt="" /></a>';
+               $toolBar = '<a href="' . htmlspecialchars(TYPO3_mainDir . 'show_rechis.php?element=' . rawurlencode('pages:' . $id) . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '#latest">' .
+                                       '<img ' . t3lib_iconWorks::skinImg(TYPO3_mainDir, 'gfx/history2.gif', 'width="13" height="12"') .
+                                       ' hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_recordHistory') . '" alt="" /></a>';
 
 
-               if ($perms&16 && $langAllowed) {
+               if (($perms & 16) && $langAllowed) {
                        $params = '';
                        if ($GLOBALS['TSFE']->sys_language_uid) {
                                $params = '&sys_language_uid=' . $GLOBALS['TSFE']->sys_language_uid;
                        }
                        $toolBar .= '<a href="' . htmlspecialchars($newContentWizScriptPath . '?id=' . $id . $params . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
                        $params = '';
                        if ($GLOBALS['TSFE']->sys_language_uid) {
                                $params = '&sys_language_uid=' . $GLOBALS['TSFE']->sys_language_uid;
                        }
                        $toolBar .= '<a href="' . htmlspecialchars($newContentWizScriptPath . '?id=' . $id . $params . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
-                                               '<img src="' . TYPO3_mainDir . 'gfx/new_record.gif" width="16" height="12" hspace="1" border="0" align="top" title="' . $this->extGetLL('edit_newContentElement') . '" alt="" /></a>';
+                                       '<img ' . t3lib_iconWorks::skinImg(TYPO3_mainDir, 'gfx/new_record.gif', 'width="16" height="12"') . ' hspace="1" border="0" align="top" title="' . $this->extGetLL('edit_newContentElement') . '" alt="" /></a>';
                }
                }
-               if ($perms&2) {
+               if (($perms & 2)) {
                        $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . 'move_el.php?table=pages&uid=' . $id . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
                        $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . 'move_el.php?table=pages&uid=' . $id . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
-                                       '<img src="' . TYPO3_mainDir . 'gfx/move_page.gif" width="11" height="12" hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_move_page') . '" alt="" /></a>';
+                                       '<img ' . t3lib_iconWorks::skinImg(TYPO3_mainDir, 'gfx/move_page.gif', 'width="11" height="12') . ' hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_move_page') . '" alt="" /></a>';
                }
                }
-               if ($perms&8) {
+               if (($perms & 8)) {
                        $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . 'db_new.php?id=' . $id . '&pagesOnly=1&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
                        $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . 'db_new.php?id=' . $id . '&pagesOnly=1&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
-                                       '<img src="' . TYPO3_mainDir . 'gfx/new_page.gif" width="13" height="12" hspace="0" border="0" align="top" title="' . $this->extGetLL('edit_newPage') . '" alt="" /></a>';
+                                       '<img ' . t3lib_iconWorks::skinImg(TYPO3_mainDir, 'gfx/new_page.gif', 'width="13" height="12"') . ' hspace="0" border="0" align="top" title="' . $this->extGetLL('edit_newPage') . '" alt="" /></a>';
                }
                }
-               if ($perms&2) {
+               if (($perms & 2)) {
                        $params = '&edit[pages][' . $id . ']=edit';
                        $params = '&edit[pages][' . $id . ']=edit';
-                       $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . 'alt_doc.php?' . $params . '&noView=1&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
-                                       '<img src="' . TYPO3_mainDir . 'gfx/edit2.gif" width="11" height="12" hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_editPageProperties') . '" alt="" /></a>';
+                       $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . 'alt_document.php?' . $params . '&noView=1&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
+                                       '<img ' . t3lib_iconWorks::skinImg(TYPO3_mainDir . 'gfx/edit2.gif', 'width="11" height="12"') . 'hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_editPageProperties') . '" alt="" /></a>';
 
                        if ($GLOBALS['TSFE']->sys_language_uid && $langAllowed) {
                                $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
 
                        if ($GLOBALS['TSFE']->sys_language_uid && $langAllowed) {
                                $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
@@ -811,8 +791,8 @@ $query . '
                                $GLOBALS['TSFE']->sys_page->versionOL('pages_language_overlay',$row);
                                if (is_array($row)) {
                                        $params = '&edit[pages_language_overlay][' . $row['uid'] . ']=edit';
                                $GLOBALS['TSFE']->sys_page->versionOL('pages_language_overlay',$row);
                                if (is_array($row)) {
                                        $params = '&edit[pages_language_overlay][' . $row['uid'] . ']=edit';
-                                       $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . 'alt_doc.php?' . $params . '&noView=1&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
-                                                       '<img src="' . TYPO3_mainDir . 'gfx/edit3.gif" width="11" height="12" hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_editPageOverlay') . '" alt="" /></a>';
+                                       $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . 'alt_document.php?' . $params . '&noView=1&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' .
+                                                       '<img ' . t3lib_iconWorks::skinImg(TYPO3_mainDir, 'gfx/edit3.gif', 'width="11" height="12"') . ' hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_editPageOverlay') . '" alt="" /></a>';
                                }
                        }
                }
                                }
                        }
                }
@@ -820,8 +800,8 @@ $query . '
                        $urlParams = array();
                        $urlParams['id'] = $id;
                        $urlParams['returnUrl'] = t3lib_div::getIndpEnv('REQUEST_URI');
                        $urlParams = array();
                        $urlParams['id'] = $id;
                        $urlParams['returnUrl'] = t3lib_div::getIndpEnv('REQUEST_URI');
-                       $toolBar .= '<a href="' . htmlspecialchars(t3lib_BEfunc::getModuleUrl('web_list', $urlParams, '', TRUE)) . '">' .
-                                       '<img src="' . TYPO3_mainDir . 'gfx/list.gif" width="11" height="11" hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_db_list') . '" alt="" /></a>';
+                       $toolBar .= '<a href="' . htmlspecialchars(TYPO3_mainDir . t3lib_BEfunc::getModuleUrl('web_list', $urlParams)) . '">' .
+                                       '<img ' . t3lib_iconWorks::skinImg(TYPO3_mainDir, 'gfx/list.gif', 'width="11" height="11"') . ' hspace="2" border="0" align="top" title="' . $this->extGetLL('edit_db_list') . '" alt="" /></a>';
                }
 
                return $toolBar;
                }
 
                return $toolBar;
@@ -831,6 +811,8 @@ $query . '
         * Returns the label for key, $key. If a translation for the language set in $GLOBALS['BE_USER']->uc['lang'] is found that is returned, otherwise the default value.
         * IF the global variable $LOCAL_LANG is NOT an array (yet) then this function loads the global $LOCAL_LANG array with the content of "sysext/lang/locallang_tsfe.php" so that the values therein can be used for labels in the Admin Panel
         *
         * Returns the label for key, $key. If a translation for the language set in $GLOBALS['BE_USER']->uc['lang'] is found that is returned, otherwise the default value.
         * IF the global variable $LOCAL_LANG is NOT an array (yet) then this function loads the global $LOCAL_LANG array with the content of "sysext/lang/locallang_tsfe.php" so that the values therein can be used for labels in the Admin Panel
         *
+        * FIXME The function should onvert to $TSFE->renderCharset, not to UTF8!
+        *
         * @param       string          Key for a label in the $LOCAL_LANG array of "sysext/lang/locallang_tsfe.php"
         * @return      string          The value for the $key
         */
         * @param       string          Key for a label in the $LOCAL_LANG array of "sysext/lang/locallang_tsfe.php"
         * @return      string          The value for the $key
         */
@@ -838,7 +820,7 @@ $query . '
                $labelStr = htmlspecialchars($GLOBALS['LANG']->getLL($key));    // Label string in the default backend output charset.
 
                        // Convert to utf-8, then to entities:
                $labelStr = htmlspecialchars($GLOBALS['LANG']->getLL($key));    // Label string in the default backend output charset.
 
                        // Convert to utf-8, then to entities:
-               if ($GLOBALS['LANG']->charSet!='utf-8') {
+               if ($GLOBALS['LANG']->charSet != 'utf-8') {
                        $labelStr = $GLOBALS['LANG']->csConvObj->utf8_encode($labelStr,$GLOBALS['LANG']->charSet);
                }
                $labelStr = $GLOBALS['LANG']->csConvObj->utf8_to_entities($labelStr);
                        $labelStr = $GLOBALS['LANG']->csConvObj->utf8_encode($labelStr,$GLOBALS['LANG']->charSet);
                }
                $labelStr = $GLOBALS['LANG']->csConvObj->utf8_to_entities($labelStr);
index 7f8debd..5206707 100644 (file)
@@ -211,7 +211,7 @@ $TSFE = t3lib_div::makeInstance('tslib_fe',
        t3lib_div::_GP('MP'),
        t3lib_div::_GP('RDCT')
 );
        t3lib_div::_GP('MP'),
        t3lib_div::_GP('RDCT')
 );
-/* @var $TSFE tslib_fe */
+/** @var $TSFE tslib_fe */
 
 if($TYPO3_CONF_VARS['FE']['pageUnavailable_force'] &&
        !t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $TYPO3_CONF_VARS['SYS']['devIPmask'])) {
 
 if($TYPO3_CONF_VARS['FE']['pageUnavailable_force'] &&
        !t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $TYPO3_CONF_VARS['SYS']['devIPmask'])) {
@@ -275,6 +275,7 @@ if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/index_ts.php']['preBeUser']))
 // BE_USER
 // *********
 $BE_USER = NULL;
 // BE_USER
 // *********
 $BE_USER = NULL;
+/** @var $BE_USER t3lib_tsfeBeUserAuth */
 if ($_COOKIE['be_typo_user']) {                // If the backend cookie is set, we proceed and checks if a backend user is logged in.
        $TYPO3_MISC['microtime_BE_USER_start'] = microtime(true);
        $TT->push('Back End user initialized','');
 if ($_COOKIE['be_typo_user']) {                // If the backend cookie is set, we proceed and checks if a backend user is logged in.
        $TYPO3_MISC['microtime_BE_USER_start'] = microtime(true);
        $TT->push('Back End user initialized','');
@@ -468,6 +469,7 @@ if ($TSFE->isINTincScript())                {
 // ***************
 // Output content
 // ***************
 // ***************
 // Output content
 // ***************
+$sendTSFEContent = false;
 if ($TSFE->isOutputting())     {
        $TT->push('Print Content','');
        $TSFE->processOutput();
 if ($TSFE->isOutputting())     {
        $TT->push('Print Content','');
        $TSFE->processOutput();
@@ -507,7 +509,7 @@ if ($TSFE->isOutputting())  {
 
                $TT->pull();
        } else {
 
                $TT->pull();
        } else {
-               echo $TSFE->content;
+               $sendTSFEContent = true;
        }
        $TT->pull();
 }
        }
        $TT->pull();
 }
@@ -575,7 +577,12 @@ echo $TSFE->beLoginLinkIPList();
 // Admin panel
 // *************
 if (is_object($BE_USER) && $BE_USER->isAdminPanelVisible() && $TSFE->beUserLogin) {
 // Admin panel
 // *************
 if (is_object($BE_USER) && $BE_USER->isAdminPanelVisible() && $TSFE->beUserLogin) {
-       echo $BE_USER->displayAdminPanel();
+       $TSFE->content = str_ireplace('</head>',  $BE_USER->adminPanel->getAdminPanelHeaderData() . '</head>', $TSFE->content);
+       $TSFE->content = str_ireplace('</body>',  $BE_USER->displayAdminPanel() . '</body>', $TSFE->content);
+}
+
+if ($sendTSFEContent) {
+       echo $TSFE->content;
 }
 
 // *************
 }
 
 // *************
index 1602de3..9f81609 100755 (executable)
@@ -7,25 +7,26 @@
        <data type="array">
                <languageKey index="default" type="array">
                        <label index="adminOptions">ADMIN PANEL</label>
        <data type="array">
                <languageKey index="default" type="array">
                        <label index="adminOptions">ADMIN PANEL</label>
+                       <label index="adminPanelTitle">TYPO3 ADMIN PANEL</label>
                        <label index="preview">Preview</label>
                        <label index="preview">Preview</label>
-                       <label index="preview_showHiddenPages">Show Hidden Pages:</label>
-                       <label index="preview_showHiddenRecords">Show Hidden Records:</label>
-                       <label index="preview_simulateDate">Simulate Time:</label>
-                       <label index="preview_simulateUserGroup">Simulate User Group:</label>
+                       <label index="preview_showHiddenPages">Show hidden pages</label>
+                       <label index="preview_showHiddenRecords">Show hidden records</label>
+                       <label index="preview_simulateDate">Simulate time</label>
+                       <label index="preview_simulateUserGroup">Simulate user group</label>
                        <label index="cache">Cache</label>
                        <label index="cache">Cache</label>
-                       <label index="cache_noCache">No caching:</label>
+                       <label index="cache_noCache">No caching</label>
                        <label index="cache_doit">Clear cache now!</label>
                        <label index="cache_doit">Clear cache now!</label>
-                       <label index="cache_clearLevels">Clear levels:</label>
-                       <label index="cache_cacheEntries">Cache entries:</label>
+                       <label index="cache_clearLevels">Clear levels</label>
+                       <label index="cache_cacheEntries">Cache entries</label>
                        <label index="publish">Publish</label>
                        <label index="publish">Publish</label>
-                       <label index="publish_levels">Publish levels:</label>
-                       <label index="publish_tree">Publish pages:</label>
+                       <label index="publish_levels">Publish levels</label>
+                       <label index="publish_tree">Publish pages</label>
                        <label index="publish_doit">Publish now!</label>
                        <label index="edit">Editing</label>
                        <label index="publish_doit">Publish now!</label>
                        <label index="edit">Editing</label>
-                       <label index="edit_displayIcons">Display Edit Panels:</label>
-                       <label index="edit_displayFieldIcons">Display Edit Icons:</label>
-                       <label index="edit_editFormsOnPage">Editforms on-page:</label>
-                       <label index="edit_editNoPopup">No popup window:</label>
+                       <label index="edit_displayIcons">Display edit panels</label>
+                       <label index="edit_displayFieldIcons">Display edit icons</label>
+                       <label index="edit_editFormsOnPage">Editforms on page</label>
+                       <label index="edit_editNoPopup">No popup window</label>
                        <label index="edit_openAB">Open TYPO3 Backend</label>
                        <label index="edit_recordHistory">View record change history</label>
                        <label index="edit_newContentElement">Create new content element</label>
                        <label index="edit_openAB">Open TYPO3 Backend</label>
                        <label index="edit_recordHistory">View record change history</label>
                        <label index="edit_newContentElement">Create new content element</label>
                        <label index="edit_editPageOverlay">Edit properties of translated page</label>
                        <label index="edit_db_list">Web&gt;List module</label>
                        <label index="tsdebug">TypoScript</label>
                        <label index="edit_editPageOverlay">Edit properties of translated page</label>
                        <label index="edit_db_list">Web&gt;List module</label>
                        <label index="tsdebug">TypoScript</label>
-                       <label index="tsdebug_tree">Tree display:</label>
-                       <label index="tsdebug_LR">Track content rendering:</label>
-                       <label index="tsdebug_forceTemplateParsing">Force TS Rendering:</label>
-                       <label index="tsdebug_displayTimes">Display all times:</label>
-                       <label index="tsdebug_displayMessages">Display messages:</label>
-                       <label index="tsdebug_displayContent">Display content:</label>
-                       <label index="tsdebug_displayQueries">Explain SELECT queries:</label>
+                       <label index="tsdebug_tree">Tree display</label>
+                       <label index="tsdebug_LR">Track content rendering</label>
+                       <label index="tsdebug_forceTemplateParsing">Force TS Rendering</label>
+                       <label index="tsdebug_displayTimes">Display all times</label>
+                       <label index="tsdebug_displayMessages">Display messages</label>
+                       <label index="tsdebug_displayContent">Display content</label>
+                       <label index="tsdebug_displayQueries">Explain SELECT queries</label>
                        <label index="info">Info</label>
                        <label index="div_Levels_0">This page</label>
                        <label index="div_Levels_1">+ 1 sublevel</label>
                        <label index="info">Info</label>
                        <label index="div_Levels_0">This page</label>
                        <label index="div_Levels_1">+ 1 sublevel</label>
index 8116bdd..ff26d6f 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 if (!defined ('TYPO3_MODE'))   die ('Access denied.');
 
 <?php
 if (!defined ('TYPO3_MODE'))   die ('Access denied.');
 
-if (TYPO3_MODE == 'BE' || (TYPO3_MODE == 'FE' && isset($GLOBALS['BE_USER']) && $GLOBALS['BE_USER']->isFrontendEditingActive())) {
+if (TYPO3_MODE == 'BE' || (TYPO3_MODE == 'FE' && isset($GLOBALS['BE_USER']))) {
        global $TBE_STYLES;
 
                // register as a skin
        global $TBE_STYLES;
 
                // register as a skin
@@ -179,6 +179,8 @@ if (TYPO3_MODE == 'BE' || (TYPO3_MODE == 'FE' && isset($GLOBALS['BE_USER']) && $
 
        $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preHeaderRenderHook'][] = t3lib_extMgm::extPath('t3skin').'pngfix/class.tx_templatehook.php:tx_templatehook->registerPngFix';
 
 
        $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preHeaderRenderHook'][] = t3lib_extMgm::extPath('t3skin').'pngfix/class.tx_templatehook.php:tx_templatehook->registerPngFix';
 
+       $GLOBALS['TBE_STYLES']['stylesheets']['admPanel'] = t3lib_extMgm::siteRelPath('t3skin') . 'stylesheets/visual/admin_panel.css';
+
        t3lib_SpriteManager::addIconSprite(
                array(
                        'flags-ad',
        t3lib_SpriteManager::addIconSprite(
                array(
                        'flags-ad',
diff --git a/typo3/sysext/t3skin/images/arrows/adminpanel-down.png b/typo3/sysext/t3skin/images/arrows/adminpanel-down.png
new file mode 100644 (file)
index 0000000..76031b1
Binary files /dev/null and b/typo3/sysext/t3skin/images/arrows/adminpanel-down.png differ
diff --git a/typo3/sysext/t3skin/images/arrows/adminpanel-up.png b/typo3/sysext/t3skin/images/arrows/adminpanel-up.png
new file mode 100644 (file)
index 0000000..0c35a0a
Binary files /dev/null and b/typo3/sysext/t3skin/images/arrows/adminpanel-up.png differ
diff --git a/typo3/sysext/t3skin/images/arrows/module-menu-down-alt.png b/typo3/sysext/t3skin/images/arrows/module-menu-down-alt.png
new file mode 100644 (file)
index 0000000..b1c5ca3
Binary files /dev/null and b/typo3/sysext/t3skin/images/arrows/module-menu-down-alt.png differ
diff --git a/typo3/sysext/t3skin/images/arrows/module-menu-right-alt.png b/typo3/sysext/t3skin/images/arrows/module-menu-right-alt.png
new file mode 100644 (file)
index 0000000..1a31bec
Binary files /dev/null and b/typo3/sysext/t3skin/images/arrows/module-menu-right-alt.png differ
diff --git a/typo3/sysext/t3skin/stylesheets/visual/admin_panel.css b/typo3/sysext/t3skin/stylesheets/visual/admin_panel.css
new file mode 100644 (file)
index 0000000..cfaf846
--- /dev/null
@@ -0,0 +1,450 @@
+#TSFE_ADMIN_PANEL_FORM {
+       background-color: #ffffff;
+       border: 1px solid black;
+       -moz-box-shadow: 0px 3px 15px #808080;
+       -webkit-box-shadow: 0px 3px 15px #808080;
+       box-shadow: 0px 3px 15px #808080;
+       margin: 0;
+       padding: 0;
+       z-index:0;
+}
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel {
+       border-collapse: separate;
+       margin: 0;
+       min-width: 315px;
+       padding: 0;
+}
+
+#TSFE_ADMIN_PANEL_FORM,
+#TSFE_ADMIN_PANEL_FORM a {
+       color: black;
+       font-family: Arial, sans-serif;
+       font-size: 12px;
+       text-decoration: none;
+}
+
+#TSFE_ADMIN_PANEL_FORM a:active,
+#TSFE_ADMIN_PANEL_FORM a:focus {
+       -moz-outline-style: none;
+       outline-style: none;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-hRow td,
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-fRow td {
+       background-image: -moz-linear-gradient(center top, #555555 10%, #444547 90%);
+       background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.1, #555555), color-stop(0.1, #555555), color-stop(0.9, #444547), color-stop(1.0, #444547));
+       background-color: #555555;
+       color: white;
+       font-weight: bold;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-hRow td {
+       cursor: move;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-fRow td {
+       padding-right: 5px;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-hRow td a,
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-fRow td a {
+       color: #ffffff;
+}
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-header-title {
+       float: left;
+}
+
+#TSFE_ADMIN_PANEL_FORM input.typo3-adminPanel-update {
+       float: right;
+}
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-header-buttonWrapper {
+       display: inline-block;
+       float: right;
+       margin-left: 10px;
+}
+
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-panel-open .typo3-adminPanel-header-button,
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-panel-closed .typo3-adminPanel-header-button {
+       background: url(../../images/arrows/adminpanel-down.png) no-repeat;
+       display: inline-block;
+       height: 19px;
+       float: right;
+       width: 19px;
+}
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-panel-closed .typo3-adminPanel-header-button {
+       background: url(../../images/arrows/adminpanel-up.png) no-repeat;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td {
+       background-color: #e2e0e0;
+       border-bottom: 1px solid #cccccc;
+       border-top: 1px solid #cccccc;
+       clear: left;
+       margin: 0;
+       padding: 0;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td a {
+       display: block;
+       height: 26px;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td a .typo3-adminPanel-label {
+       font-weight: bold;
+       padding-top: 4px;
+       white-space: nowrap;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td:hover {
+       background-color: #7e7e7e;
+       border-color: black;
+       color: #ffffff;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td:hover a {
+       color: #ffffff;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title .typo3-adminPanel-section-open,
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title .typo3-adminPanel-section-closed {
+       background: url(../../images/arrows/module-menu-down.png) no-repeat 12px 9px;
+       display: inline-block;
+       padding-left: 26px;
+       width: 100%;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title .typo3-adminPanel-section-closed {
+       background: url(../../images/arrows/module-menu-right.png) no-repeat 12px 7px;
+}
+
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td:hover a.typo3-adminPanel-section-open {
+       background-image: url(../../images/arrows/module-menu-down-alt.png);
+}
+
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td:hover a.typo3-adminPanel-section-closed {
+       background-image: url(../../images/arrows/module-menu-right-alt.png);
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-itemRow td {
+       padding: 3px 5px 3px 26px;
+       text-align: left;
+       white-space: nowrap;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-itemRow td.typo3-adminPanel-section-content-title {
+       padding-right: 9px;
+       padding-top: 5px;
+       width: 1%;
+}
+
+#TSFE_ADMIN_PANEL_FORM td.typo3-adminPanel-section-content {
+       padding-right: 11px;
+       width: 99%;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog {
+       border: 1px solid #7e7e7e;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog tr,
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog td {
+       margin: 0;
+       padding: 0;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog th {
+       background-color: #7e7e7e;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog th span[style] {
+       color: #fff !important;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-logRow-odd,
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-logRow-even,
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminpanel-logRow-highlight {
+       background-color: #f0f0f0;
+       text-align: left;
+       vertical-align: top;
+       white-space: nowrap;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-tsLogTime {
+       text-align: center;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-logRow-odd {
+       background-color: #dedede;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-logRow-highlight {
+       background-color: #fcd3cf;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .stackPointer {
+       color: maroon;
+       vertical-align: top;
+}
+
+/**
+ * General Form Styles
+ **/
+#TSFE_ADMIN_PANEL_FORM input[type="submit"] {
+       -moz-border-radius: 1px 1px 1px 1px;
+       background-color: #F6F6F6;
+       background-image: url('../../typo3/sysext/t3skin/images/backgrounds/button-hover.png');
+       background-image: -moz-linear-gradient(center top , #F6F6F6 10%, #C8C8C8 90%);
+       background-image: -webkit-gradient(linear,0% 0%,0% 100%,color-stop(0.1,#F6F6F6),color-stop(0.9,#C8C8C8));
+       background-image: linear-gradient(center top,#F6F6F6 10%,#C8C8C8 90%);
+       background-position: center bottom;
+       background-repeat:repeat-x;
+       border:1px solid #737C7C;
+       color:#434343;
+       cursor:pointer;
+       padding: 3px;
+}
+
+#TSFE_ADMIN_PANEL_FORM input,
+#TSFE_ADMIN_PANEL_FORM select {
+       position: static;
+       margin: 0 5px;
+       padding: 0;
+}
+
+#TSFE_ADMIN_PANEL_FORM input[type="checkbox"] {
+       margin-left: 0;
+}
+
+/** End General Form Styles **/
+#TSFE_ADMIN_PANEL_FORM {
+       background-color: #ffffff;
+       border: 1px solid black;
+       -moz-box-shadow: 0px 3px 15px #808080;
+       -webkit-box-shadow: 0px 3px 15px #808080;
+       box-shadow: 0px 3px 15px #808080;
+       margin: 0;
+       padding: 0;
+       z-index:0;
+}
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel {
+       border-collapse: separate;
+       margin: 0;
+       min-width: 315px;
+       padding: 0;
+}
+
+#TSFE_ADMIN_PANEL_FORM,
+#TSFE_ADMIN_PANEL_FORM a {
+       color: black;
+       font-family: Arial, sans-serif;
+       font-size: 12px;
+       text-decoration: none;
+}
+
+#TSFE_ADMIN_PANEL_FORM a:active,
+#TSFE_ADMIN_PANEL_FORM a:focus {
+       -moz-outline-style: none;
+       outline-style: none;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-hRow td,
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-fRow td {
+       background-image: -moz-linear-gradient(center top, #555555 10%, #444547 90%);
+       background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.1, #555555), color-stop(0.1, #555555), color-stop(0.9, #444547), color-stop(1.0, #444547));
+       background-color: #555555;
+       color: white;
+       font-weight: bold;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-hRow td {
+       cursor: move;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-fRow td {
+       padding-right: 5px;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-hRow td a,
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-fRow td a {
+       color: #ffffff;
+}
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-header-title {
+       float: left;
+}
+
+#TSFE_ADMIN_PANEL_FORM input.typo3-adminPanel-update {
+       float: right;
+}
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-header-buttonWrapper {
+       display: inline-block;
+       float: right;
+       margin-left: 10px;
+}
+
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-panel-open .typo3-adminPanel-header-button,
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-panel-closed .typo3-adminPanel-header-button {
+       background: url(../../images/arrows/adminpanel-up.png) no-repeat;
+       display: inline-block;
+       height: 19px;
+       float: right;
+       width: 19px;
+}
+
+#TSFE_ADMIN_PANEL_FORM .typo3-adminPanel-panel-closed .typo3-adminPanel-header-button {
+       background: url(../../images/arrows/adminpanel-down.png) no-repeat;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td {
+       background-color: #e2e0e0;
+       border-bottom: 1px solid #cccccc;
+       border-top: 1px solid #cccccc;
+       clear: left;
+       margin: 0;
+       padding: 0;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td a {
+       display: block;
+       height: 26px;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td a .typo3-adminPanel-label {
+       font-weight: bold;
+       padding-top: 4px;
+       white-space: nowrap;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td:hover {
+       background-color: #7e7e7e;
+       border-color: black;
+       color: #ffffff;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td:hover a {
+       color: #ffffff;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title .typo3-adminPanel-section-open,
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title .typo3-adminPanel-section-closed {
+       background: url(../../images/arrows/module-menu-down.png) no-repeat 12px 9px;
+       display: inline-block;
+       padding-left: 26px;
+       width: 100%;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title .typo3-adminPanel-section-closed {
+       background: url(../../images/arrows/module-menu-right.png) no-repeat 12px 7px;
+}
+
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td:hover a.typo3-adminPanel-section-open {
+       background-image: url(../../images/arrows/module-menu-down-alt.png);
+}
+
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-section-title td:hover a.typo3-adminPanel-section-closed {
+       background-image: url(../../images/arrows/module-menu-right-alt.png);
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-itemRow td {
+       padding: 3px 5px 3px 26px;
+       text-align: left;
+       white-space: nowrap;
+}
+
+#TSFE_ADMIN_PANEL_FORM tr.typo3-adminPanel-itemRow td.typo3-adminPanel-section-content-title {
+       padding-right: 9px;
+       padding-top: 5px;
+       width: 1%;
+}
+
+#TSFE_ADMIN_PANEL_FORM td.typo3-adminPanel-section-content {
+       padding-right: 11px;
+       width: 99%;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog {
+       border: 1px solid #7e7e7e;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog tr,
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog td {
+       margin: 0;
+       padding: 0;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog th {
+       background-color: #7e7e7e;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog th span[style] {
+       color: #fff !important;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-logRow-odd,
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-logRow-even,
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminpanel-logRow-highlight {
+       background-color: #f0f0f0;
+       text-align: left;
+       vertical-align: top;
+       white-space: nowrap;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-tsLogTime {
+       text-align: center;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-logRow-odd {
+       background-color: #dedede;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .typo3-adminPanel-logRow-highlight {
+       background-color: #fcd3cf;
+}
+
+#TSFE_ADMIN_PANEL_FORM #typo3-adminPanel-tsLog .stackPointer {
+       color: maroon;
+       vertical-align: top;
+}
+
+/**
+ * General Form Styles
+ **/
+#TSFE_ADMIN_PANEL_FORM input[type="submit"] {
+       -moz-border-radius: 1px 1px 1px 1px;
+       background-color: #F6F6F6;
+       background-image: url('../../typo3/sysext/t3skin/images/backgrounds/button-hover.png');
+       background-image: -moz-linear-gradient(center top , #F6F6F6 10%, #C8C8C8 90%);
+       background-image: -webkit-gradient(linear,0% 0%,0% 100%,color-stop(0.1,#F6F6F6),color-stop(0.9,#C8C8C8));
+       background-image: linear-gradient(center top,#F6F6F6 10%,#C8C8C8 90%);
+       background-position: center bottom;
+       background-repeat:repeat-x;
+       border:1px solid #737C7C;
+       color:#434343;
+       cursor:pointer;
+       padding: 3px;
+}
+
+#TSFE_ADMIN_PANEL_FORM input,
+#TSFE_ADMIN_PANEL_FORM select {
+       position: static;
+       margin: 0 5px;
+       padding: 0;
+}
+
+#TSFE_ADMIN_PANEL_FORM input[type="checkbox"] {
+       margin-left: 0;
+}
+
+/** End General Form Styles **/