/** * Hook-function: inject t3editor JavaScript code before the page is compiled * called in typo3/template.php:startPage * * @param array $parameters * @param template $pObj */ public function preStartPageHook($parameters, $pObj) { // enable editor in Template-Modul if (preg_match('/sysext\\/tstemplate\\/ts\\/index\\.php/', $_SERVER['SCRIPT_NAME'])) { $t3editor = $this->getT3editor(); // insert javascript code in document header $pObj->JScode .= $t3editor->getJavascriptCode($pObj); $pObj->loadJavascriptLib(t3lib_extmgm::extRelPath('t3editor') . 'res/jslib/tx_tstemplateinfo/tx_tstemplateinfo.js'); } }
/** * Hook-function: inject t3editor JavaScript code before the page is compiled * called in typo3/template.php:startPage * * @param array $parameters * @param \TYPO3\CMS\Backend\Template\DocumentTemplate $pObj */ public function preStartPageHook($parameters, $pObj) { if (preg_match('/typo3\\/file_edit\\.php/', $_SERVER['SCRIPT_NAME'])) { $t3editor = $this->getT3editor(); if (!$t3editor->isEnabled()) { return; } $pObj->JScode .= $t3editor->getJavascriptCode($pObj); $pObj->loadJavascriptLib(\t3lib_extmgm::extRelPath('t3editor') . 'res/jslib/fileedit.js'); } }
/** * Retrieves JavaScript code (header part) for editor * * @param template $doc * @return string JavaScript code */ public function getJavascriptCode($doc) { $content = ''; if ($this->isEnabled()) { $path_t3e = t3lib_extmgm::extRelPath('t3editor'); // include needed javascript-frameworks /** @var $pageRenderer t3lib_PageRenderer */ $pageRenderer = $doc->getPageRenderer(); $pageRenderer->loadPrototype(); $pageRenderer->loadScriptaculous(); // include editor-css $content .= '<link href="' . t3lib_div::createVersionNumberedFilename($GLOBALS['BACK_PATH'] . t3lib_extmgm::extRelPath('t3editor') . 'res/css/t3editor.css') . '" type="text/css" rel="stylesheet" />'; // include editor-js-lib $doc->loadJavascriptLib($path_t3e . 'res/jslib/codemirror/codemirror.js'); $doc->loadJavascriptLib($path_t3e . 'res/jslib/t3editor.js'); if ($this->mode == self::MODE_TYPOSCRIPT) { $doc->loadJavascriptLib($path_t3e . 'res/jslib/ts_codecompletion/tsref.js'); $doc->loadJavascriptLib($path_t3e . 'res/jslib/ts_codecompletion/completionresult.js'); $doc->loadJavascriptLib($path_t3e . 'res/jslib/ts_codecompletion/tsparser.js'); $doc->loadJavascriptLib($path_t3e . 'res/jslib/ts_codecompletion/tscodecompletion.js'); } $content .= t3lib_div::wrapJS('T3editor = T3editor || {};' . 'T3editor.lang = ' . json_encode($this->getJavaScriptLabels()) . ';' . LF . 'T3editor.PATH_t3e = "' . $GLOBALS['BACK_PATH'] . t3lib_extmgm::extRelPath('t3editor') . '"; ' . LF . 'T3editor.URL_typo3 = "' . htmlspecialchars(t3lib_div::getIndpEnv('TYPO3_SITE_URL') . TYPO3_mainDir) . '"; ' . LF . 'T3editor.template = ' . $this->getPreparedTemplate() . ';' . LF . 'T3editor.parserfile = ' . $this->getParserfileByMode($this->mode) . ';' . LF . 'T3editor.stylesheet = ' . $this->getStylesheetByMode($this->mode) . ';'); } return $content; }
/** * Determine the correct parser js file for given mode * * @param string $mode * @return string Parser file name */ protected function getParserfileByMode($mode) { switch ($mode) { case self::MODE_TYPOSCRIPT: $relPath = ($GLOBALS['BACK_PATH'] ? $GLOBALS['BACK_PATH'] : '../../../') . \t3lib_extmgm::extRelPath('t3editor') . 'res/jslib/parse_typoscript/'; $parserfile = '["' . $relPath . 'tokenizetyposcript.js", "' . $relPath . 'parsetyposcript.js"]'; break; case self::MODE_JAVASCRIPT: $parserfile = '["tokenizejavascript.js", "parsejavascript.js"]'; break; case self::MODE_CSS: $parserfile = '"parsecss.js"'; break; case self::MODE_XML: $parserfile = '"parsexml.js"'; break; case self::MODE_SPARQL: $parserfile = '"parsesparql.js"'; break; case self::MODE_HTML: $parserfile = '["tokenizejavascript.js", "parsejavascript.js", "parsecss.js", "parsexml.js", "parsehtmlmixed.js"]'; break; case self::MODE_PHP: case self::MODE_MIXED: $parserfile = '[' . '"tokenizejavascript.js", ' . '"parsejavascript.js", ' . '"parsecss.js", ' . '"parsexml.js", ' . '"../contrib/php/js/tokenizephp.js", ' . '"../contrib/php/js/parsephp.js", ' . '"../contrib/php/js/parsephphtmlmixed.js"' . ']'; break; } return $parserfile; }