[TYPO3 6.2.4]
Hallo zusammen!
Ich habe folgendes Problem und leider bisher nichts dazu im Netz gefunden.
Ich möchte gerne folgenden Hook verwenden:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php']['extendJScode']
Dieser findet sich in der sysext rtehtmlarea/Classes/BrowseLinks.php und dient dazu, in das Link-Wizard im RTE JavaScript Code einzufügen.
Der Teil sieht folgendermaßen aus:
// Hook to overwrite or extend javascript functions
if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php']['extendJScode']) && is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php']['extendJScode'])) {
$conf = array();
$_params = array(
'conf' => &$conf
);
foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php']['extendJScode'] as $objRef) {
$processor =& GeneralUtility::getUserObj($objRef);
$JScode .= $processor->extendJScode($_params, $this);
}
}
Demnach habe ich eine Klasse geschrieben, die folgendermaßen aussieht:
namespace Vendor\VendorTracking\Hooks;
class ExtendJScodeHook {
/**
* @param $_params
* @param $this
* @return string
*/
public function extendJScode($_params, $this) {
return '';
}
}
Die Funktion extendJScode() ist vorgegeben, sie ist diejenige, die das JS zurückgibt (hier gibt sie einen leeren String zurück, was aber nichts zur Sache tun sollte).
Den Hook habe ich folgendermaßen in der ext_localconf.php registriert:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php']['extendJScode'][] = 'Vendor\\VendorTracking\\Hooks\\ExtendJScode';
Das Problem liegt jetzt in der Zeile
$processor =& GeneralUtility::getUserObj($objRef);
in BrowseLinks.php
Das 'class_exists()' auf meine Klasse in getUserObj() crashed. Das heißt, sie gibt kein TRUE oder FALSE zurück, sondern "stürzt ab".
Ich habe die Klasse auch in die ext_autoload.php geschrieben:
$extpath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('vendor_tracking');
return array(
'Vendor\VendorTracking\Hooks\ExtendJScodeHook' => $extpath . 'Classes/Hooks/ExtendJScodeHook.php',
);
Leider hat das auch nichts geholfen. Ich habe noch diverse andere Dinge ausprobiert und alle möglichen Funktionen im Core mit Debugg-Ausgaben versehen. Letztendlich immer mit dem gleichen Ergebnis:
Meine Hook-Klasse wird nicht geladen.
Vielleicht hat zufällig schon mal jemand diesen Hook verwendet und kann mir weiterhelfen.
Vielen Dank schon mal im Vorraus!
Sebastian