* Added a checkbox for be-users to disable IP locking. This is useful if you have...
[Packages/TYPO3.CMS.git] / typo3 / class.alt_menu_functions.inc
index 289c37f..7478d77 100755 (executable)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *  
-*  (c) 1999-2003 Kasper Skaarhoj (kasper@typo3.com)
+*  (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is 
  *
  *
  *
- *   70: class alt_menu_functions 
- *   91:     function topMenu($theModules,$dontLink=0,$backPath='',$descr=0)   
- *  368:     function mIconFile($Ifilename,$backPath)  
- *  383:     function mIconFilename($Ifilename,$backPath)      
- *  395:     function topButtons()     
- *  408:     function wrapLinkWithAB($link)    
+ *   72: class alt_menu_functions 
+ *   93:     function topMenu($theModules,$dontLink=0,$backPath='',$descr=0)   
+ *  386:     function mIconFile($Ifilename,$backPath)  
+ *  401:     function mIconFilename($Ifilename,$backPath)      
+ *  413:     function topButtons()     
+ *  425:     function adminButtons()   
+ *  444:     function adminFunctions($backPath)        
+ *  477:     function wrapLinkWithAB($link)    
  *
- * TOTAL FUNCTIONS: 5
+ * TOTAL FUNCTIONS: 7
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
@@ -62,7 +64,7 @@
 
 /**
  * Class with menu functions
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @package TYPO3
  * @subpackage core
@@ -74,14 +76,14 @@ class alt_menu_functions {
 
        /**
         * Creates the menu of modules.
-        * 
+        *
         * $descr determines the type of menu made:
         *              0 = Ordinary vertical menu
         *              1 = Descriptions for 'About modules' display
         *              2 = selector-box menu
         *              3 = topmenu - horizontal line of icons!
         *              4 = part of JavaScript switch contruct for alt_main.php frameset.
-        * 
+        *
         * @param       array           $theModules is the output from load_modules class ($this->loadModules->modules)
         * @param       boolean         $dontLink == true will prevent the output from being linked with A-tags (used in the 'beuser' extension)
         * @param       string          $backPath must be the 'backPath' to PATH_typo3 from where the the menu is displayed.
@@ -89,7 +91,7 @@ class alt_menu_functions {
         * @return      string          The menu HTML
         */
        function topMenu($theModules,$dontLink=0,$backPath='',$descr=0) {
-               global $LANG, $TBE_TEMPLATE;
+               global $LANG, $TBE_TEMPLATE, $BE_USER;
        
                        // Initialize vars:
                $final='';
@@ -101,11 +103,11 @@ class alt_menu_functions {
                $mJScmds=array();
                $onBlur=$GLOBALS['CLIENT']['FORMSTYLE'] ? 'this.blur();' : '';
        
-               $selectItems[] = '<option value="">[ MODULES ]</option>';
+               $selectItems[] = '<option value="">[ '.$LANG->sL('LLL:EXT:lang/locallang_core.php:buttons.selMenu_modules',1).' ]</option>';
                $mC=0;
        
                        // Remove the 'doc' module?
-               if ($GLOBALS['BE_USER']->getTSConfigVal('options.disableDocModuleInAB'))        {
+               if ($BE_USER->getTSConfigVal('options.disableDocModuleInAB'))   {
                        unset($theModules['doc']);
                }
        
@@ -116,7 +118,7 @@ class alt_menu_functions {
 
                        $prefix='';
                        if ($moduleInfo['navFrameScript'])      {
-                               if ($GLOBALS['BE_USER']->uc['condensedMode'])   {
+                               if ($BE_USER->uc['condensedMode'])      {
                                        $prefix=$moduleInfo['navFrameScript'].'?currentSubScript=';
                                } else {
                                        $prefix='alt_mod_frameset.php?'.
@@ -234,13 +236,15 @@ class alt_menu_functions {
                                                // If there is a script to link to (and linking is not disabled.
                                        if ($link && !$dontLink)        {
                                                        // For condensed mode, send &cMR parameter to frameset script.
-                                               if ($addJS && $GLOBALS['BE_USER']->uc['condensedMode']) {$addJS.=  "+(cMR?'&cMR=1':'')";}
+                                               if ($addJS && $BE_USER->uc['condensedMode'])    {$addJS.=  "+(cMR?'&cMR=1':'')";}
 
                                                        // Command for the selector box:
-                                               $JScmd = "top.content.location=top.getModuleUrl(top.TS.PATH_typo3+'".$this->wrapLinkWithAB($link)."'".$addJS.');';
+                                               $JScmd = "
+                                                               top.content.location=top.getModuleUrl(top.TS.PATH_typo3+'".$this->wrapLinkWithAB($link)."'".$addJS.');
+                                                               top.fsMod.currentMainLoaded="'.$moduleName.'";';
 
                                                        // If there is a frameset script in place:
-                                               if (!$GLOBALS['BE_USER']->uc['condensedMode'] && $moduleInfo['navFrameScript']) {
+                                               if (!$BE_USER->uc['condensedMode'] && $moduleInfo['navFrameScript'])    {
                                                        $JScmd = '
                                                                if (top.content.list_frame && top.fsMod.currentMainLoaded=="'.$moduleName.'") {
                                                                        top.currentSubScript="'.$origLink.'";
@@ -264,7 +268,7 @@ class alt_menu_functions {
                                        $subCode.='
                                                        <tr class="c-subitem-row">
                                                                <td></td>
-                                                               <td align="center">'.(!$GLOBALS['BE_USER']->uc['hideSubmoduleIcons']?$imageCode:'').'</td>
+                                                               <td align="center">'.(!$BE_USER->uc['hideSubmoduleIcons']?$imageCode:'').'</td>
                                                                <td class="c-subitem-label">'.$flabel.'</td>
                                                        </tr>';
 
@@ -335,6 +339,19 @@ class alt_menu_functions {
 
                        // selector-box menu
                if ($descr==2)  {
+
+                               // Add admin-functions for clearing caches:
+                       if ($BE_USER->isAdmin())        {
+                               $functionArray = $this->adminFunctions($backPath);
+                               if (count($functionArray))      {
+                                       $selectItems[] = '<option value=""></option>';
+                                       foreach($functionArray as $fAoptions)   {
+                                               $selectItems[] = '<option value="'.htmlspecialchars("document.location='".$fAoptions['href']."';").'">[ '.htmlspecialchars($fAoptions['title']).' ]</option>';
+                                       }
+                               }
+                       }
+
+                               // Logout item:
                        $selectItems[] = '<option value=""></option>';
                        $selectItems[] = '<option value="'.htmlspecialchars("top.location='logout.php';").'">[ '.$LANG->sL('LLL:EXT:lang/locallang_core.php:buttons.logout',1).' ]</option>';
                        $final = '
@@ -358,9 +375,9 @@ class alt_menu_functions {
        }
 
        /**
-        * Returns $Ifilename readable for script in PATH_typo3. 
+        * Returns $Ifilename readable for script in PATH_typo3.
         * That means absolute names are just returned while relative names are prepended with $backPath (pointing back to typo3/ dir)
-        * 
+        *
         * @param       string          Icon filename
         * @param       string          Back path
         * @return      string          Result
@@ -375,7 +392,7 @@ class alt_menu_functions {
 
        /**
         * Returns relative filename to the $Ifilename (for use in img-tags)
-        * 
+        *
         * @param       string          Icon filename
         * @param       string          Back path
         * @return      string          Result
@@ -390,8 +407,8 @@ class alt_menu_functions {
 
        /**
         * Returns logout button.
-        * 
-        * @return      string          
+        *
+        * @return      string
         */
        function topButtons()   {
                global $LANG;
@@ -401,10 +418,61 @@ class alt_menu_functions {
        }
 
        /**
+        * Returns logout button.
+        *
+        * @return      string
+        */
+       function adminButtons() {
+               global $LANG;
+               
+               $functionArray = $this->adminFunctions('');
+
+               $icons=array();         
+               foreach($functionArray as $fAoptions)   {
+                       $icons[]= '<a href="'.htmlspecialchars($fAoptions['href']).'">'.$fAoptions['icon'].'</a>';
+               }
+               
+               return implode('',$icons);
+       }
+
+       /**
+        * Returns array with parts from which the admin functions can be constructed.
+        *
+        * @param       string          Backpath.
+        * @return      array
+        */
+       function adminFunctions($backPath)      {
+               global $LANG,$BE_USER,$TYPO3_CONF_VARS;
+
+               $functions=array();
+               
+                       // Clearing of cache-files in typo3conf/ + menu
+               if ($TYPO3_CONF_VARS['EXT']['extCache'])        {
+                       $title = $LANG->sL('LLL:EXT:lang/locallang_core.php:rm.clearCache_allTypo3Conf');
+                       $functions[]=array(
+                               'title' => $title,
+                               'href' => $backPath.'tce_db.php?vC='.$BE_USER->veriCode().'&redirect='.rawurlencode(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT')).'&cacheCmd=temp_CACHED',
+                               'icon' => '<img'.t3lib_iconWorks::skinImg($backPath,'gfx/clear_cache_files_in_typo3c.gif','width="21" height="18"').' title="'.htmlspecialchars($title).'" alt="" />'
+                       );
+               }
+
+                       // Clear all page cache
+               $title = $LANG->sL('LLL:EXT:lang/locallang_core.php:rm.clearCache_all');
+               $functions[]=array(
+                       'title' => $title,
+                       'href' => $backPath.'tce_db.php?vC='.$BE_USER->veriCode().'&redirect='.rawurlencode(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT')).'&cacheCmd=all',
+                       'icon' => '<img'.t3lib_iconWorks::skinImg($backPath,'gfx/clear_all_cache.gif','width="21" height="18"').' title="'.htmlspecialchars($title).'" alt="" />'
+               );
+
+                       // Return functions
+               return $functions;
+       }
+
+       /**
         * Appends a '?' if there is none in the string already
-        * 
+        *
         * @param       string          Link URL
-        * @return      string          
+        * @return      string
         */
        function wrapLinkWithAB($link)  {
                if (!strstr($link,'?')) {