Added feature #13580: htmlArea RTE: Extjize the RTE
[Packages/TYPO3.CMS.git] / typo3 / sysext / rtehtmlarea / class.tx_rtehtmlareaapi.php
index 608c79d..790bd03 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2007-2008 Stanislas Rolland <typo3(arobas)sjbr.ca>
+*  (c) 2007-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
 *  All rights reserved
 *
 *  This script is part of the Typo3 project. The Typo3 project is
@@ -30,8 +30,6 @@
  *
  */
 
-require_once(PATH_t3lib.'class.t3lib_div.php');
-
 abstract class tx_rtehtmlareaapi {
 
        protected $extensionKey;                                // The key of the extension that is extending htmlArea RTE
@@ -46,8 +44,11 @@ abstract class tx_rtehtmlareaapi {
        protected $LOCAL_LANG;                                  // Frontend language array
        protected $pluginButtons = '';                          // The comma-separated list of button names that the registered plugin is adding to the htmlArea RTE toolbar
        protected $pluginLabels = '';                           // The comma-separated list of label names that the registered plugin is adding to the htmlArea RTE toolbar
+       protected $pluginAddsButtons = true;                    // Boolean indicating whether the plugin is adding buttons or not
        protected $convertToolbarForHtmlAreaArray = array();    // The name-converting array, converting the button names used in the RTE PageTSConfing to the button id's used by the JS scripts
        protected $requiresClassesConfiguration = false;        // True if the registered plugin requires the PageTSConfig Classes configuration
+       protected $requiresSynchronousLoad = false;             // True if the plugin must be loaded synchronously
+       protected $requiredPlugins = '';                        // The comma-separated list of names of prerequisite plugins
 
        /**
         * Returns true if the plugin is available and correctly initialized
@@ -59,16 +60,20 @@ abstract class tx_rtehtmlareaapi {
        public function main($parentObject) {
                global $TYPO3_CONF_VARS, $LANG, $TSFE;
 
-               $this->htmlAreaRTE =& $parentObject;
+               $this->htmlAreaRTE = $parentObject;
                $this->rteExtensionKey =& $this->htmlAreaRTE->ID;
                $this->thisConfig =& $this->htmlAreaRTE->thisConfig;
                $this->toolbar =& $this->htmlAreaRTE->toolbar;
                $this->LOCAL_LANG =& $this->htmlAreaRTE->LOCAL_LANG;
 
+                       // Set the value of this boolean based on the initial value of $this->pluginButtons
+               $this->pluginAddsButtons = !empty($this->pluginButtons);
+
                        // Check if the plugin should be disabled in frontend
                if ($this->htmlAreaRTE->is_FE() && $TYPO3_CONF_VARS['EXTCONF'][$this->rteExtensionKey]['plugins'][$this->pluginName]['disableInFE']) {
                        return false;
                }
+
                        // Localization array must be initialized here
                if ($this->relativePathToLocallangFile) {
                        if ($this->htmlAreaRTE->is_FE()) {
@@ -151,6 +156,15 @@ abstract class tx_rtehtmlareaapi {
        }
 
        /**
+        * Returns a boolean indicating whether the plugin adds buttons or not to the toolbar
+        *
+        * @return      boolean
+        */
+       public function addsButtons() {
+               return $this->pluginAddsButtons;
+       }
+
+       /**
         * Returns the list of buttons implemented by the plugin
         *
         * @return      string          the list of buttons implemented by the plugin
@@ -186,6 +200,34 @@ abstract class tx_rtehtmlareaapi {
                return $this->requiresClassesConfiguration;
        }
 
+       /**
+        * Returns true if the plugin requires synchronous load
+        *
+        * @return      boolean         true if the plugin requires synchronous load
+        */
+       public function requiresSynchronousLoad() {
+               return $this->requiresSynchronousLoad;
+       }
+
+       /**
+        * Sets the plugin to require synchronous load or not
+        *
+        * @param       boolean         $value: the boolean value to set
+        *
+        * @return      void
+        */
+       public function setSynchronousLoad($value = true) {
+               $this->requiresSynchronousLoad = $value;
+       }
+
+       /**
+        * Returns the list of plugins required by the plugin
+        *
+        * @return      string          the list of plugins required by the plugin
+        */
+       public function getRequiredPlugins() {
+               return $this->requiredPlugins;
+       }
 } // end of class
 
 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/class.tx_rtehtmlareaapi.php']) {