[TASK] Disable compression for inlineJs in Backend
[Packages/TYPO3.CMS.git] / t3lib / class.t3lib_extmgm.php
index 1f08af8..502e7fc 100644 (file)
  *
  *  This copyright notice MUST APPEAR in all copies of the script!
  ***************************************************************/
-/**
- * Contains a class with Extension Management functions
- *
- * Revised for TYPO3 3.6 July/2003 by Kasper Skårhøj
- *
- * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-
 
 /**
  * Extension Management functions
  * This class is never instantiated, rather the methods inside is called as functions like
  *              t3lib_extMgm::isLoaded('my_extension');
  *
- * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
+ * @author Kasper Skårhøj <kasperYYYY@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
  */
 final class t3lib_extMgm {
+
        protected static $extensionKeyMap;
 
 
@@ -55,7 +48,6 @@ final class t3lib_extMgm {
 
        /**
         * Returns TRUE if the extension with extension key $key is loaded.
-        * Usage: 109
         *
         * @param       string          Extension key to test
         * @param       boolean         If $exitOnError is TRUE and the extension is not loaded the function will die with an error message
@@ -75,7 +67,6 @@ final class t3lib_extMgm {
         * Returns the absolute path to the extension with extension key $key
         * If the extension is not loaded the function will die with an error message
         * Useful for internal fileoperations
-        * Usage: 136
         *
         * @param $key string Extension key
         * @param $script string $script is appended to the output if set.
@@ -124,7 +115,6 @@ final class t3lib_extMgm {
         * Returns the relative path to the extension as measured from from the TYPO3_mainDir
         * If the extension is not loaded the function will die with an error message
         * Useful for images and links from backend
-        * Usage: 54
         *
         * @param       string          Extension key
         * @return      string
@@ -143,7 +133,6 @@ final class t3lib_extMgm {
         * Returns the relative path to the extension as measured from the PATH_site (frontend)
         * If the extension is not loaded the function will die with an error message
         * Useful for images and links from the frontend
-        * Usage: 6
         *
         * @param       string          Extension key
         * @return      string
@@ -154,7 +143,6 @@ final class t3lib_extMgm {
 
        /**
         * Returns the correct class name prefix for the extension key $key
-        * Usage: 3
         *
         * @param       string          Extension key
         * @return      string
@@ -240,7 +228,6 @@ final class t3lib_extMgm {
         * This function adds the configuration needed for rendering of the field in TCEFORMS - but it does NOT add the field names to the types lists!
         * So to have the fields displayed you must also call fx. addToAllTCAtypes or manually add the fields to the types list.
         * FOR USE IN ext_tables.php FILES
-        * Usage: 4
         *
         * @param       string          $table is the table name of a table already present in $GLOBALS['TCA'] with a columns section
         * @param       array           $columnArray is the array with the additional columns (typical some fields an extension wants to add)
@@ -265,7 +252,6 @@ final class t3lib_extMgm {
         * This is needed to have new fields shown automatically in the TCEFORMS of a record from $table.
         * Typically this function is called after having added new columns (database fields) with the addTCAcolumns function
         * FOR USE IN ext_tables.php FILES
-        * Usage: 1
         *
         * @param       string          Table name
         * @param       string          Field list to add.
@@ -756,7 +742,6 @@ final class t3lib_extMgm {
         * Add tablename to default list of allowed tables on pages (in $PAGES_TYPES)
         * Will add the $table to the list of tables allowed by default on pages as setup by $PAGES_TYPES['default']['allowedTables']
         * FOR USE IN ext_tables.php FILES
-        * Usage: 11
         *
         * @param       string          Table name
         * @return      void
@@ -768,16 +753,14 @@ final class t3lib_extMgm {
        /**
         * Adds a module (main or sub) to the backend interface
         * FOR USE IN ext_tables.php FILES
-        * Usage: 18
         *
         * @param       string          $main is the main module key, $sub is the submodule key. So $main would be an index in the $TBE_MODULES array and $sub could be an element in the lists there.
         * @param       string          $sub is the submodule key. If $sub is not set a blank $main module is created.
         * @param       string          $position can be used to set the position of the $sub module within the list of existing submodules for the main module. $position has this syntax: [cmd]:[submodule-key]. cmd can be "after", "before" or "top" (or blank which is default). If "after"/"before" then submodule will be inserted after/before the existing submodule with [submodule-key] if found. If not found, the bottom of list. If "top" the module is inserted in the top of the submodule list.
         * @param       string          $path is the absolute path to the module. If this value is defined the path is added as an entry in $TBE_MODULES['_PATHS'][  main_sub  ] = $path; and thereby tells the backend where the newly added modules is found in the system.
-        * @param       boolean         $addJsAutomatically adds automatically the card for this module the TYPO3 BE - if you use ExtJS you may disable this option
         * @return      void
         */
-       public static function addModule($main, $sub = '', $position = '', $path = '', $addJsAutomatically = TRUE) {
+       public static function addModule($main, $sub = '', $position = '', $path = '') {
                if (isset($GLOBALS['TBE_MODULES'][$main]) && $sub) {
                        // if there is already a main module by this name:
 
@@ -826,18 +809,48 @@ final class t3lib_extMgm {
                        // Adding path:
                if ($path) {
                        $GLOBALS['TBE_MODULES']['_PATHS'][$main . ($sub ? '_' . $sub : '')] = $path;
-                       if ($addJsAutomatically) {
-                               $GLOBALS['TBE_MODULES']['_JSINIT'][$main . ($sub ? '_' . $sub : '')]  = '
-                                       TYPO3.Viewport.ContentCards.addContentCard("' . $main . ($sub ? '_' . $sub : '') . '",
-                                               {
-                                                       xtype: "iframePanel"
-                                               }
-                                       );
-                               ';
-                       }
+               }
+                       //add module JS
+               self::addModuleContentCard('{xtype: "iframePanel"}', $main, $sub);
+       }
+
+       /**
+        * Sets the JS card of an ExtJS module for the card layout
+        * Replaces default JS
+        * Used by Card Layout
+        *
+        * @param       string          $jsCode is plain valid JavaScript, which is added directly, usefull for small modules only!
+        * @param       string          $mainModule is the main module key, $sub is the submodule key. So $main would be an index in the $TBE_MODULES array and $sub could be an element in the lists there.
+        * @param       string          $subModule is the submodule key. If $sub is not set a blank $main module is created.
+        * @return      void
+        */
+       public static function addModuleContentCard($jsCode, $mainModule, $subModule = '') {
+               $moduleName = $mainModule . ($subModule ? '_' . $subModule : '');
+               $GLOBALS['TBE_MODULES']['_JSINIT'][$moduleName] = '
+                       TYPO3.Viewport.ContentCards.addContentCard(
+                               "' . $moduleName . '",
+                               ' . $jsCode . '
+                       );
+               ';
+       }
+
+       /**
+        * Removes the JS card of an ExtJS module directly
+        * Used by Card Layout
+        *
+        * @param       string          $mainModule is the main module key, $sub is the submodule key. So $main would be an index in the $TBE_MODULES array and $sub could be an element in the lists there.
+        * @param       string          $subModule is the submodule key. If $sub is not set a blank $main module is created.
+        * @return void
+        */
+       public static function removeModuleContentCard($mainModule, $subModule = '') {
+               $moduleName = $mainModule . ($subModule ? '_' . $subModule : '');
+               if (array_key_exists($moduleName, $GLOBALS['TBE_MODULES']['_JSINIT'])) {
+                       unset($GLOBALS['TBE_MODULES']['_JSINIT'][$moduleName]);
                }
        }
 
+
+
        /**
         * Registers an Ext.Direct component with access restrictions.
         *
@@ -875,7 +888,6 @@ final class t3lib_extMgm {
         * The arguments values are generally determined by which function menu this is supposed to interact with
         * See Inside TYPO3 for information on how to use this function.
         * FOR USE IN ext_tables.php FILES
-        * Usage: 26
         *
         * @param       string          Module name
         * @param       string          Class name
@@ -899,7 +911,6 @@ final class t3lib_extMgm {
         * Adds $content to the default Page TSconfig as set in $GLOBALS['TYPO3_CONF_VARS'][BE]['defaultPageTSconfig']
         * Prefixed with a [GLOBAL] line
         * FOR USE IN ext_tables.php/ext_localconf.php FILES
-        * Usage: 5
         *
         * @param       string          Page TSconfig content
         * @return      void
@@ -912,7 +923,6 @@ final class t3lib_extMgm {
         * Adds $content to the default User TSconfig as set in $GLOBALS['TYPO3_CONF_VARS'][BE]['defaultUserTSconfig']
         * Prefixed with a [GLOBAL] line
         * FOR USE IN ext_tables.php/ext_localconf.php FILES
-        * Usage: 3
         *
         * @param       string          User TSconfig content
         * @return      void
@@ -925,7 +935,6 @@ final class t3lib_extMgm {
         * Adds a reference to a locallang file with $GLOBALS['TCA_DESCR'] labels
         * FOR USE IN ext_tables.php FILES
         * eg. t3lib_extMgm::addLLrefForTCAdescr('pages', 'EXT:lang/locallang_csh_pages.xml'); for the pages table or t3lib_extMgm::addLLrefForTCAdescr('_MOD_web_layout', 'EXT:cms/locallang_csh_weblayout.php'); for the Web > Page module.
-        * Usage: 31
         *
         * @param       string          Description key. Typically a database table (like "pages") but for applications can be other strings, but prefixed with "_MOD_")
         * @param       string          File reference to locallang file, eg. "EXT:lang/locallang_csh_pages.php" (or ".xml")
@@ -990,14 +999,7 @@ final class t3lib_extMgm {
         * @author      René Fritz <r.fritz@colorcube.de>
         */
        public static function addService($extKey, $serviceType, $serviceKey, $info) {
-                       // even not available services will be included to make it possible to give the admin a feedback of non-available services.
-                       // but maybe it's better to move non-available services to a different array??
-
-               if ($serviceType &&
-                               !t3lib_div::hasValidClassPrefix($serviceType) &&
-                               t3lib_div::hasValidClassPrefix($serviceKey, array('user_')) &&
-                               is_array($info)) {
-
+               if ($serviceType && t3lib_div::hasValidClassPrefix($serviceKey) && is_array($info)) {
                        $info['priority'] = max(0, min(100, $info['priority']));
 
                        $GLOBALS['T3_SERVICES'][$serviceType][$serviceKey] = $info;
@@ -1006,13 +1008,6 @@ final class t3lib_extMgm {
                        $GLOBALS['T3_SERVICES'][$serviceType][$serviceKey]['serviceKey'] = $serviceKey;
                        $GLOBALS['T3_SERVICES'][$serviceType][$serviceKey]['serviceType'] = $serviceType;
 
-
-                               // mapping a service key to a service type
-                               // all service keys begin with tx_ or Tx_ - service types don't
-                               // this way a selection of a special service key as service type is easy
-                       $GLOBALS['T3_SERVICES'][$serviceKey][$serviceKey] = &$GLOBALS['T3_SERVICES'][$serviceType][$serviceKey];
-
-
                                // change the priority (and other values) from $GLOBALS['TYPO3_CONF_VARS']
                                // $GLOBALS['TYPO3_CONF_VARS']['T3_SERVICES'][$serviceType][$serviceKey]['priority']
                                // even the activation is possible (a unix service might be possible on windows for some reasons)
@@ -1146,7 +1141,6 @@ final class t3lib_extMgm {
         * If the value (array pos. 1) is already found in that items-array, the entry is substituted, otherwise the input array is added to the bottom.
         * Use this function to add a frontend plugin to this list of plugin-types - or more generally use this function to add an entry to any selectorbox/radio-button set in the TCEFORMS
         * FOR USE IN ext_tables.php FILES
-        * Usage: 13
         *
         * @param       array           Item Array
         * @param       string          Type (eg. "list_type") - basically a field from "tt_content" table
@@ -1173,7 +1167,6 @@ final class t3lib_extMgm {
        /**
         * Adds an entry to the "ds" array of the tt_content field "pi_flexform".
         * This is used by plugins to add a flexform XML reference / content for use when they are selected as plugin or content element.
-        * Usage: 0
         *
         * @param       string          Plugin key as used in the list_type field. Use the asterisk * to match all list_type values.
         * @param       string          Either a reference to a flex-form XML file (eg. "FILE:EXT:newloginbox/flexform_ds.xml") or the XML directly.
@@ -1193,7 +1186,6 @@ final class t3lib_extMgm {
         * Adds the $table tablename to the list of tables allowed to be includes by content element type "Insert records"
         * By using $content_table and $content_field you can also use the function for other tables.
         * FOR USE IN ext_tables.php FILES
-        * Usage: 9
         *
         * @param       string          Table name to allow for "insert record"
         * @param       string          Table name TO WHICH the $table name is applied. See $content_field as well.
@@ -1221,7 +1213,6 @@ final class t3lib_extMgm {
         *               "includeLib" - just includes the library for manual use somewhere in TypoScript.
         *       (Remember that your $type definition should correspond to the column/items array in $GLOBALS['TCA'][tt_content] where you added the selector item for the element! See addPlugin() function)
         * FOR USE IN ext_localconf.php FILES
-        * Usage: 2
         *
         * @param       string          $key is the extension key
         * @param       string          $classFile is the PHP-class filename relative to the extension root directory. If set to blank a default value is chosen according to convensions.
@@ -1287,7 +1278,6 @@ tt_content.' . $key . $prefix . ' {
         * Call this method to add an entry in the static template list found in sys_templates
         * "static template files" are the modern equivalent (provided from extensions) to the traditional records in "static_templates"
         * FOR USE IN ext_localconf.php FILES
-        * Usage: 3
         *
         * @param       string          $extKey is of course the extension key
         * @param       string          $path is the path where the template files (fixed names) include_static.txt (integer list of uids from the table "static_templates"), constants.txt, setup.txt, editorcfg.txt, and include_static_file.txt is found (relative to extPath, eg. 'static/'). The file include_static_file.txt, allows you to include other static templates defined in files, from your static template, and thus corresponds to the field 'include_static_file' in the sys_template table. The syntax for this is a commaseperated list of static templates to include, like:  EXT:css_styled_content/static/,EXT:da_newsletter_subscription/static/,EXT:cc_random_image/pi2/static/
@@ -1308,7 +1298,6 @@ tt_content.' . $key . $prefix . ' {
         * Adds $content to the default TypoScript setup code as set in $GLOBALS['TYPO3_CONF_VARS'][FE]['defaultTypoScript_setup']
         * Prefixed with a [GLOBAL] line
         * FOR USE IN ext_localconf.php FILES
-        * Usage: 6
         *
         * @param       string          TypoScript Setup string
         * @return      void
@@ -1321,7 +1310,6 @@ tt_content.' . $key . $prefix . ' {
         * Adds $content to the default TypoScript constants code as set in $GLOBALS['TYPO3_CONF_VARS'][FE]['defaultTypoScript_constants']
         * Prefixed with a [GLOBAL] line
         * FOR USE IN ext_localconf.php FILES
-        * Usage: 0
         *
         * @param       string          TypoScript Constants string
         * @return      void
@@ -1334,7 +1322,6 @@ tt_content.' . $key . $prefix . ' {
         * Adds $content to the default TypoScript code for either setup, constants or editorcfg as set in $GLOBALS['TYPO3_CONF_VARS'][FE]['defaultTypoScript_*']
         * (Basically this function can do the same as addTypoScriptSetup and addTypoScriptConstants - just with a little more hazzle, but also with some more options!)
         * FOR USE IN ext_localconf.php FILES
-        * Usage: 7
         *
         * @param       string          $key is the extension key (informative only).
         * @param       string          $type is either "setup", "constants" or "editorcfg" and obviously determines which kind of TypoScript code we are adding.
@@ -1385,7 +1372,6 @@ tt_content.' . $key . $prefix . ' {
         *
         * Usages of this function can be seen in config_default.php
         * Extensions are always detected in the order local - global - system.
-        * Usage: 1
         *
         * @return      array           Extension Array
         * @internal
@@ -1478,22 +1464,21 @@ $_EXTCONF = $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXT\'][\'extConf\'][$_EXTKEY];
        }
 
        /**
-        * Returns TRUE if both the localconf and tables cache file exists (with $cacheFilePrefix)
-        * Usage: 2
+        * Returns TRUE if both the localconf and tables cache file exists (with $cacheFilePrefix) and if they are not empty
         *
-        * @param       string          Prefix of the cache file to check
-        * @return      boolean
-        * @internal
+        * @param $cacheFilePrefix string Prefix of the cache file to check
+        * @return boolean
         */
        public static function isCacheFilesAvailable($cacheFilePrefix) {
                return
-                               @is_file(PATH_typo3conf . $cacheFilePrefix . '_ext_localconf.php') &&
-                                               @is_file(PATH_typo3conf . $cacheFilePrefix . '_ext_tables.php');
+                       @is_file(PATH_typo3conf . $cacheFilePrefix . '_ext_localconf.php') &&
+                               @is_file(PATH_typo3conf . $cacheFilePrefix . '_ext_tables.php') &&
+                               @filesize(PATH_typo3conf . $cacheFilePrefix . '_ext_localconf.php') > 0 &&
+                               @filesize(PATH_typo3conf . $cacheFilePrefix . '_ext_tables.php') > 0;
        }
 
        /**
         * Returns TRUE if the "localconf.php" file in "typo3conf/" is writable
-        * Usage: 1
         *
         * @return      boolean
         * @internal
@@ -1505,7 +1490,6 @@ $_EXTCONF = $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXT\'][\'extConf\'][$_EXTKEY];
        /**
         * Returns an error string if typo3conf/ or cache-files with $cacheFilePrefix are NOT writable
         * Returns FALSE if no problem.
-        * Usage: 1
         *
         * @param       string          Prefix of the cache file to check
         * @return      string
@@ -1530,7 +1514,6 @@ $_EXTCONF = $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXT\'][\'extConf\'][$_EXTKEY];
        /**
         * Returns an array with the two cache-files (0=>localconf, 1=>tables) from typo3conf/ if they (both) exist. Otherwise FALSE.
         * Evaluation relies on $GLOBALS['TYPO3_LOADED_EXT']['_CACHEFILE']
-        * Usage: 2
         *
         * @param string $cacheFilePrefix Cache file prefix to be used (optional)
         * @return      array
@@ -1561,7 +1544,6 @@ $_EXTCONF = $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXT\'][\'extConf\'][$_EXTKEY];
        /**
         * Compiles/Creates the two cache-files in typo3conf/ based on $cacheFilePrefix
         * Returns a array with the key "_CACHEFILE" set to the $cacheFilePrefix value
-        * Usage: 1
         *
         * @param       array           Extension information array
         * @param       string          Prefix for the cache files
@@ -1717,4 +1699,4 @@ $GLOBALS[\'TYPO3_LOADED_EXT\'] = unserialize(stripslashes(\'' . addslashes(seria
        }
 }
 
-?>
+?>
\ No newline at end of file