Added feature #7150: Add pageUnavailable_handling for system problems and maintenance
[Packages/TYPO3.CMS.git] / typo3 / alt_menu.php
index af7ca7a..7797561 100755 (executable)
@@ -1,22 +1,22 @@
 <?php
 /***************************************************************
 *  Copyright notice
-*  
-*  (c) 1999-2003 Kasper Skaarhoj (kasper@typo3.com)
+*
+*  (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
-*  This script is part of the TYPO3 project. The TYPO3 project is 
+*  This script is part of the TYPO3 project. The TYPO3 project is
 *  free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
-* 
+*
 *  The GNU General Public License can be found at
 *  http://www.gnu.org/copyleft/gpl.html.
-*  A copy is found in the textfile GPL.txt and important notices to the license 
+*  A copy is found in the textfile GPL.txt and important notices to the license
 *  from the author is found in LICENSE.txt distributed with these scripts.
 *
-* 
+*
 *  This script is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
-/** 
+/**
  * Displays the vertical menu in the left most frame of TYPO3s backend
  *
  * $Id$
  * Revised for TYPO3 3.6 2/2003 by Kasper Skaarhoj
  * XHTML-trans compliant
  *
- * @author     Kasper Skaarhoj <kasper@typo3.com>
+ * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @co-author Sebastian Kurfuerst <sebastian@garbage-group.de>
  */
 /**
  * [CLASS/FUNCTION INDEX of SCRIPT]
  *
  *
  *
- *   79: class SC_alt_menu 
- *   90:     function init()   
- *  106:     function main()   
- *  191:     function removeCacheFiles()       
- *  210:     function printContent()   
+ *   80: class SC_alt_menu
+ *   91:     function init()
+ *  108:     function main()
+ *  190:     function printContent()
  *
- * TOTAL FUNCTIONS: 4
+ * TOTAL FUNCTIONS: 3
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
 
+
 require ('init.php');
 require ('template.php');
 require_once (PATH_t3lib.'class.t3lib_loadmodules.php');
@@ -71,8 +71,9 @@ require_once ('class.alt_menu_functions.inc');
 
 /**
  * Script Class for rendering the vertical menu in the left side of the backend frameset
- * 
- * @author     Kasper Skaarhoj <kasper@typo3.com>
+ *
+ * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @co-author Sebastian Kurfuerst <sebastian@garbage-group.de>
  * @package TYPO3
  * @subpackage core
  */
@@ -82,101 +83,113 @@ class SC_alt_menu {
        var $_clearCacheFiles;
 
        /**
+        * Menu functions object
+        *
+        * @var alt_menu_functions
+        */
+       var $alt_menuObj;
+
+       /**
         * Initialize
         * Loads the backend modules available for the logged in user.
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function init() {
-               global $TBE_MODULES;
-               
+               global $TBE_MODULES, $TBE_TEMPLATE;
+
                        // Setting GPvars:
-               $this->_clearCacheFiles = t3lib_div::GPvar('_clearCacheFiles');
+               $this->_clearCacheFiles = t3lib_div::_GP('_clearCacheFiles');
 
                        // Loads the backend modules available for the logged in user.
                $this->loadModules = t3lib_div::makeInstance('t3lib_loadModules');
+               $this->loadModules->observeWorkspaces = TRUE;
                $this->loadModules->load($TBE_MODULES);
+
+                       // Instantiates the menu object which will generate some JavaScript for the goToModule() JS function in this frame.
+               $this->alt_menuObj = t3lib_div::makeInstance('alt_menu_functions');
+
+               $TBE_TEMPLATE->JScodeArray[] = $this->alt_menuObj->generateMenuJScode($this->loadModules->modules);
        }
 
        /**
         * Main content generated
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function main() {
-               global $BE_USER,$TYPO3_CONF_VARS,$TBE_TEMPLATE,$TYPO_VERSION;
-               
+               global $BE_USER,$TYPO3_CONF_VARS,$TBE_TEMPLATE;
+
                $TBE_TEMPLATE->docType='xhtml_trans';
                $TBE_TEMPLATE->divClass='vertical-menu';
+               $TBE_TEMPLATE->bodyTagAdditions = 'onload="top.restoreHighlightedModuleMenuItem()"';
+
                $this->content.=$TBE_TEMPLATE->startPage('Vertical Backend Menu');
+               $backPath = $GLOBALS['BACK_PATH'];
 
                        // Printing the menu
                $alt_menuObj = t3lib_div::makeInstance('alt_menu_functions');
-               $this->content.=$alt_menuObj->topMenu($this->loadModules->modules);
-               
+               $this->content.= $alt_menuObj->topMenu($this->loadModules->modules);
+
                        // clear cache commands for Admins
-               if($BE_USER->isAdmin()) {
+               if($BE_USER->isAdmin()) {       //  && $BE_USER->workspace===0 NOT used anyway because under a workspace developers might still like to clear cache!
+                       $functionsArray = $alt_menuObj->adminFunctions($backPath);
+
                        $this->content.='
-                       
-<!-- 
+
+<!--
   Menu with admin functions: Clearing cache:
 -->
 <div id="typo3-alt-menu-php-adminFunc">';
-                               
-                               // Header: Admin functions
-                       $this->content.='<h2 class="bgColor5">'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:rm.adminFunctions',1).'</h2>';
+
 
                                // Table with those admin functions
                        $this->content.='
-                               <table border="0" cellpadding="0" cellspacing="1" width="100%">';
-                       
-                               // Clearing of cache-files in typo3conf/ + menu
-                       if ($TYPO3_CONF_VARS['EXT']['extCache'])        {
-                               if ($this->_clearCacheFiles)    {
-                                       $this->removeCacheFiles();
-                               }
-                               $this->content.='
-                                       <tr>
-                                               <td valign="top" align="center"><img'.t3lib_iconWorks::skinImg($backPath,'gfx/clear_cache_files_in_typo3c.gif','width="21" height="18"').' alt="" /></td>
-                                               <td><a href="'.htmlspecialchars(t3lib_div::linkThisScript(array('_clearCacheFiles'=>1))).'">'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:rm.clearCache_allTypo3Conf',1).'</a></td>
+                               <table border="0" cellpadding="0" cellspacing="1" width="100%" id="typo3-adminmenu">';
+
+                               // Header: Admin functions
+                       $this->content.='
+                                       <tr class="c-mainitem">
+                                               <td colspan="2"><span class="c-label"><b>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:rm.adminFunctions',1).'</b>&nbsp;</span><span class="c-iconCollapse"></span></td>
                                        </tr>';
 
-                                       // Divider
-                               $this->content.='
-                                       <tr>
-                                               <td colspan="2"><img'.t3lib_iconWorks::skinImg($backPath,'gfx/altmenuline.gif','width="105" height="3"').' alt="" /></td>
+                       $rows=array();
+                       foreach($functionsArray as $functionsArraySetup)        {
+                               $rows[]='
+                                       <tr class="c-subitem">
+                                               <td valign="top" align="center" class="icon">'.$functionsArraySetup['icon'].'</td>
+                                               <td><a href="'.htmlspecialchars($functionsArraySetup['href']).'">'.htmlspecialchars($functionsArraySetup['title']).'</a></td>
                                        </tr>';
                        }
 
-                               // clear all page cache
-                       $href = htmlspecialchars($this->backPath.'tce_db.php?vC='.$BE_USER->veriCode().
-                                               '&redirect='.rawurlencode(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT')).
-                                               '&cacheCmd=all'
-                                       );
-                       $this->content.='
-                               <tr>
-                                       <td valign="top" align="center"><img'.t3lib_iconWorks::skinImg($backPath,'gfx/clear_all_cache.gif','width="21" height="18"').' alt="" /></td>
-                                       <td><a href="'.$href.'">'.
-                                       $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:rm.clearCache_all',1).
-                                       '</a></td>
-                               </tr>';
+                               // Imploding around the divider table row:
+                       $this->content.=implode('
+                                       <tr>
+                                               <td colspan="2"><img'.t3lib_iconWorks::skinImg($backPath,'gfx/altmenuline.gif','width="105" height="3"').' alt="" /></td>
+                                       </tr>',$rows);
 
                        $this->content.='
                                </table>';
+                       $this->content.=t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'menu_adminFunction', $GLOBALS['BACK_PATH']);
                        $this->content.='
 </div>
 ';
                }
 
+                       // superuser mode
+               if($BE_USER->user['ses_backuserid']) {
+                       $username = '<p id="username" class="typo3-red-background">[SU: '.htmlspecialchars($BE_USER->user['username']).']</p>';
+               } else {
+                       $username = '<p id="username">['.htmlspecialchars($BE_USER->user['username']).']</p>';
+               }
                        // Printing bottons (logout button)
                $this->content.='
-               
 
-<!-- 
+
+<!--
   Logout button / username
 -->
-<div id="typo3-alt-menu-php-logininfo">'.$alt_menuObj->topButtons().
-                                               '<p id="username">['.htmlspecialchars($BE_USER->user['username']).']</p>
+<div id="typo3-alt-menu-php-logininfo">'.$alt_menuObj->topButtons().$username.'
 </div>';
 
                        // End page:
@@ -184,28 +197,9 @@ class SC_alt_menu {
        }
 
        /**
-        * Unlink (delete) cache files
-        * 
-        * @return      integer         The number of files deleted
-        */
-       function removeCacheFiles()     {
-               $cacheFiles=t3lib_extMgm::currentCacheFiles();
-               $out=0;
-               if (is_array($cacheFiles))      {
-                       reset($cacheFiles);
-                       while(list(,$cfile)=each($cacheFiles))  {
-                               @unlink($cfile);
-                               clearstatcache();
-                               $out++;
-                       }
-               }
-               return $out;
-       }
-
-       /**
         * Outputting the accumulated content to screen
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function printContent() {
                echo $this->content;