[BUGFIX] Support plugins in namespaced extensions
authorAske Ertmann <aertmann@gmail.com>
Tue, 9 Oct 2012 13:16:21 +0000 (15:16 +0200)
committerHelmut Hummel <helmut.hummel@typo3.org>
Sun, 4 Nov 2012 19:41:04 +0000 (20:41 +0100)
The function registerPlugin doesn't handle namespaced extension keys
differently than normal extension keys, leading to being unable to
read the configuration set in the configurePlugin function.
In the configurePlugin the vendor name is stripped from the extension name,
but the same is not done in registerPlugin. This leads to it being
impossible to select the plugin in the backend when inserting/editing a
plugin content element.

Change-Id: Ic21dc68e83bf65171aba7eafa43530eb7b23884b
Fixes: #41785
Releases: 6.0
Reviewed-on: http://review.typo3.org/16052
Reviewed-by: Aske Ertmann
Tested-by: Aske Ertmann
Reviewed-by: Jan-Erik Revsbech
Tested-by: Jan-Erik Revsbech
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
typo3/sysext/extbase/Classes/Utility/ExtensionUtility.php

index 8cb8963..41f58a5 100644 (file)
@@ -61,7 +61,8 @@ class ExtensionUtility {
                }
                        // Check if vendor name is prepended to extensionName in the format {vendorName}.{extensionName}
                $vendorName = NULL;
-               if (FALSE !== $delimiterPosition = strrpos($extensionName, '.')) {
+               $delimiterPosition = strrpos($extensionName, '.');
+               if ($delimiterPosition !== FALSE) {
                        $vendorName = str_replace('.', '\\', substr($extensionName, 0, $delimiterPosition));
                        $extensionName = substr($extensionName, $delimiterPosition + 1);
                }
@@ -145,6 +146,10 @@ tt_content.' . $pluginSignature . ' {
                if (empty($extensionName)) {
                        throw new \InvalidArgumentException('The extension name was invalid (must not be empty and must match /[A-Za-z][_A-Za-z0-9]/)', 1239891989);
                }
+               $delimiterPosition = strrpos($extensionName, '.');
+               if ($delimiterPosition !== FALSE) {
+                       $extensionName = substr($extensionName, $delimiterPosition + 1);
+               }
                $extensionName = str_replace(' ', '', ucwords(str_replace('_', ' ', $extensionName)));
                $pluginSignature = strtolower($extensionName) . '_' . strtolower($pluginName);
                \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(array($pluginTitle, $pluginSignature, $pluginIconPathAndFilename), $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['pluginType']);