102 $mode = self::MODE_HTML;
105 $mode = self::MODE_JAVASCRIPT;
110 $mode = self::MODE_XML;
113 $mode = self::MODE_CSS;
116 $mode = self::MODE_TYPOSCRIPT;
119 $mode = self::MODE_SPARQL;
126 $mode = self::MODE_PHP;
129 $mode = self::MODE_MIXED;
154 $GLOBALS[
'LANG']->includeLLFile(
'EXT:t3editor/locallang.xlf');
156 $GLOBALS[
'BE_USER']->uc[
'disablePMKTextarea'] = 1;
165 public function getJavascriptCode($doc) {
169 $path_codemirror =
'contrib/codemirror/js/';
171 $pageRenderer = $doc->getPageRenderer();
173 $pageRenderer->loadPrototype();
174 $pageRenderer->loadScriptaculous();
178 $doc->loadJavascriptLib($path_codemirror .
'codemirror.js');
179 $doc->loadJavascriptLib($path_t3e .
'res/jslib/t3editor.js');
182 'T3editor = T3editor || {};' .
184 'T3editor.PATH_t3e = "' .
$GLOBALS[
'BACK_PATH'] . $path_t3e .
'"; ' . LF .
185 'T3editor.PATH_codemirror = "' .
$GLOBALS[
'BACK_PATH'] . $path_codemirror .
'"; ' . LF .
186 'T3editor.URL_typo3 = "' . htmlspecialchars(\
TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv(
'TYPO3_SITE_URL') . TYPO3_mainDir) .
'"; ' . LF .
188 'T3editor.ajaxSavetype = "' . $this->ajaxSaveType .
'";' . LF
201 if (empty($this->mode)) {
206 if ($this->mode === self::MODE_TYPOSCRIPT) {
207 $content .=
'<script type="text/javascript" src="' . $path_t3e .
'res/jslib/ts_codecompletion/tsref.js' .
'"></script>';
208 $content .=
'<script type="text/javascript" src="' . $path_t3e .
'res/jslib/ts_codecompletion/completionresult.js' .
'"></script>';
209 $content .=
'<script type="text/javascript" src="' . $path_t3e .
'res/jslib/ts_codecompletion/tsparser.js' .
'"></script>';
210 $content .=
'<script type="text/javascript" src="' . $path_t3e .
'res/jslib/ts_codecompletion/tscodecompletion.js' .
'"></script>';
223 $T3editor_template = addslashes($T3editor_template);
224 $T3editor_template = str_replace(array(CR, LF), array(
'',
'\' + \
''), $T3editor_template);
225 return '\'' . $T3editor_template .
'\'';
236 case self::MODE_TYPOSCRIPT:
237 $relPath = (
$GLOBALS[
'BACK_PATH'] ?
$GLOBALS[
'BACK_PATH'] :
'../../../') . \
TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath(
't3editor') .
'res/jslib/parse_typoscript/';
238 $parserfile =
'["' . $relPath .
'tokenizetyposcript.js", "' . $relPath .
'parsetyposcript.js"]';
240 case self::MODE_JAVASCRIPT:
241 $parserfile =
'["tokenizejavascript.js", "parsejavascript.js"]';
244 $parserfile =
'"parsecss.js"';
247 $parserfile =
'"parsexml.js"';
249 case self::MODE_SPARQL:
250 $parserfile =
'"parsesparql.js"';
252 case self::MODE_HTML:
253 $parserfile =
'["tokenizejavascript.js", "parsejavascript.js", "parsecss.js", "parsexml.js", "parsehtmlmixed.js"]';
257 case self::MODE_MIXED:
258 $parserfile =
'[' .
'"tokenizejavascript.js", ' .
'"parsejavascript.js", ' .
'"parsecss.js", ' .
'"parsexml.js", ' .
'"../contrib/php/js/tokenizephp.js", ' .
'"../contrib/php/js/parsephp.js", ' .
'"../contrib/php/js/parsephphtmlmixed.js"' .
']';
272 case self::MODE_TYPOSCRIPT:
273 $stylesheet =
'T3editor.PATH_t3e + "res/css/typoscriptcolors.css"';
275 case self::MODE_JAVASCRIPT:
276 $stylesheet =
'T3editor.PATH_codemirror + "../css/jscolors.css"';
279 $stylesheet =
'T3editor.PATH_codemirror + "../css/csscolors.css"';
282 $stylesheet =
'T3editor.PATH_codemirror + "../css/xmlcolors.css"';
284 case self::MODE_HTML:
285 $stylesheet =
'T3editor.PATH_codemirror + "../css/xmlcolors.css", ' .
'T3editor.PATH_codemirror + "../css/jscolors.css", ' .
'T3editor.PATH_codemirror + "../css/csscolors.css"';
287 case self::MODE_SPARQL:
288 $stylesheet =
'T3editor.PATH_codemirror + "../css/sparqlcolors.css"';
291 $stylesheet =
'T3editor.PATH_codemirror + "../contrib/php/css/phpcolors.css"';
293 case self::MODE_MIXED:
294 $stylesheet =
'T3editor.PATH_codemirror + "../css/xmlcolors.css", ' .
'T3editor.PATH_codemirror + "../css/jscolors.css", ' .
'T3editor.PATH_codemirror + "../css/csscolors.css", ' .
'T3editor.PATH_codemirror + "../contrib/php/css/phpcolors.css"';
297 if ($stylesheet !=
'') {
298 $stylesheet =
'' . $stylesheet .
', ';
300 return '[' . $stylesheet .
'T3editor.PATH_t3e + "res/css/t3editor_inner.css"]';
310 $coreLabels = array();
312 return array_merge($coreLabels, $extensionLabels);
325 $extraction = array();
326 $labels = array_merge((array)
$GLOBALS[
'LOCAL_LANG'][
'default'], (array) $GLOBALS[
'LOCAL_LANG'][$GLOBALS[
'LANG']->lang]);
328 $labelPattern =
'#^' . preg_quote($selectionPrefix,
'#') .
'(' . preg_quote($stripFromSelectionName,
'#') .
')?#';
330 foreach ($labels as $label => $value) {
331 if (strpos($label, $selectionPrefix) === 0) {
332 $key = preg_replace($labelPattern,
'', $label);
333 $extraction[$key] = $value;
350 public function getCodeEditor($name, $class =
'', $content =
'', $additionalParams =
'', $alt =
'', array $hiddenfields = array()) {
353 $this->editorCounter++;
354 $class .=
' t3editor';
355 $alt = htmlspecialchars($alt);
357 $alt =
' alt="' . $alt .
'"';
359 $code .=
'<div>' .
'<textarea id="t3editor_' . $this->editorCounter .
'" ' .
'name="' . $name .
'" ' .
'class="' . $class .
'" ' . $additionalParams .
' ' . $alt .
'>' . htmlspecialchars($content) .
'</textarea></div>';
360 $checked =
$GLOBALS[
'BE_USER']->uc[
'disableT3Editor'] ?
'checked="checked"' :
'';
361 $code .=
'<br /><br />' .
'<input type="checkbox" ' .
'class="checkbox t3editor_disableEditor" ' .
'onclick="T3editor.toggleEditor(this);" ' .
'name="t3editor_disableEditor" ' .
'value="true" ' .
'id="t3editor_disableEditor_' . $this->editorCounter .
'_checkbox" ' . $checked .
' /> ' .
'<label for="t3editor_disableEditor_' . $this->editorCounter .
'_checkbox">' .
$GLOBALS[
'LANG']->getLL(
'deactivate') .
'</label>' .
'<br /><br />';
362 if (count($hiddenfields)) {
363 foreach ($hiddenfields as $name => $value) {
364 $code .=
'<input type="hidden" ' .
'name="' . $name .
'" ' .
'value="' . $value .
'" />';
369 if (!empty($class)) {
370 $class =
'class="' . $class .
'" ';
372 $code .=
'<textarea name="' . $name .
'" ' . $class . $additionalParams .
'>' . $content .
'</textarea>';
392 if (TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_AJAX) {
395 $savingsuccess = FALSE;
397 if (is_array(
$GLOBALS[
'TYPO3_CONF_VARS'][
'SC_OPTIONS'][
'ext/t3editor/classes/class.tx_t3editor.php'][
'ajaxSaveCode'])) {
403 foreach (
$GLOBALS[
'TYPO3_CONF_VARS'][
'SC_OPTIONS'][
'ext/t3editor/classes/class.tx_t3editor.php'][
'ajaxSaveCode'] as $key => $_funcRef) {
407 }
catch (\Exception $e) {
408 $ajaxObj->setContent(array(
'result' => FALSE,
'exceptionMessage' => htmlspecialchars($e->getMessage()),
'exceptionCode' => $e->getCode()));
411 $ajaxObj->setContent(array(
'result' => $savingsuccess));
426 $plugins = &
$GLOBALS[
'TYPO3_CONF_VARS'][
'EXTCONF'][
't3editor'][
'plugins'];
427 if (is_array($plugins)) {
428 $result = array_values($plugins);
431 $ajaxObj->setContentFormat(
'jsonbody');
getStylesheetByMode($mode)
setAjaxSaveType($ajaxSaveType)
getCodeEditor($name, $class='', $content='', $additionalParams='', $alt='', array $hiddenfields=array())
static callUserFunction($funcName, &$params, &$ref, $checkPrefix='', $errorMode=0)
static split_fileref($fileNameWithPath)
if($list_of_literals) if(!empty($literals)) if(!empty($literals)) $result
Analyse literals to prepend the N char to them if their contents aren't numeric.
getModeSpecificJavascriptCode()
static createVersionNumberedFilename($file, $forceQueryString=FALSE)
static getUrl($url, $includeHeader=0, $requestHeaders=FALSE, &$report=NULL)
ajaxSaveCode($params, $ajaxObj)
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]
if($ajaxRegistryEntry !==NULL) $ajaxObj
getJavaScriptLabelsFromLocallang($selectionPrefix='js.', $stripFromSelectionName='')
getParserfileByMode($mode)
static wrapJS($string, $linebreak=TRUE)
getPlugins($params, \TYPO3\CMS\Core\Http\AjaxRequestHandler &$ajaxObj)