Hallo,
nach einer Typo3 3.6 RC1 Installation und dem durchprobieren des Futuristic Template Building Tutorials stieß ich an einigen stellen auf einen Error:
Fatal error: Failed opening required '/home/1234/htdocs/mag/typo3/t3lib/class.t3lib_syntaxhl.php' (include_path='.:/usr/share/php') in /home/tendance/htdocs/mag/typo3conf/ext/templavoila/cm1/index.php on line 821
Dies passiert wenn man eine Data Structure in einem SysFolder erstellt hat und diese danach per Kontextmenü mit der Funktion TemplaVoila aufrufen will oder wenn man beim erstellen der Template Objects und der Data Structure den Button "Show XML" anclickt!
Erst dachte ich das es die Datei beim Uploaden von Typo3 auf den Server einfach nicht geschafft hat. Aber auch Lokal konnte ich die Datei nicht finden... !?!
Nachdem ich hier im Forum und auf typo3.org nix gefunden hatte habe ich nach der Datei gegoogled, sie gefunden geuploaded und nun funktioniert es halbwegs. Keine fehlermedlung mehr aber das Synthax Highlighting funktioniert nur bedingt.
Naja für jeden dem das passiert hier der Quelltext der Datei. Is wahrscheinlich eh nich der aktuellste aber immerhin 😉
<?php
/***************************************************************
* Copyright notice
*
* (c) 1999-2003 Kasper Skaarhoj (kasper@typo3.com)
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
* A copy is found in the textfile GPL.txt and important notices to the license
* from the author is found in LICENSE.txt distributed with these scripts.
*
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Contains a class for various syntax highlighting.
*
* $Id: class.t3lib_syntaxhl.php,v 1.2 2004/01/02 12:19:17 typo3 Exp $
*
* @author Kasper Skaarhoj <kasper@typo3.com>
*/
/**
* [CLASS/FUNCTION INDEX of SCRIPT]
*
*
*
* 76: class t3lib_syntaxhl
* 109: function highLight_DS($str)
* 133: function getAllTags($str)
* 164: function splitXMLbyTags($tagList,$str)
* 192: function markUpRecursively($struct,$parent='',$app='')
*
* TOTAL FUNCTIONS: 4
* (This index is automatically created/updated by the extension "extdeveval")
*
*/
require_once(PATH_t3lib.'class.t3lib_parsehtml.php');
/**
* Syntax Highlighting class.
*
* @author Kasper Skaarhoj <kasper@typo3.com>
* @package TYPO3
* @subpackage t3lib
*/
class t3lib_syntaxhl {
// Internal, dynamic:
var $htmlParse; // Parse object.
// External, static:
var $DS_wrapTags = array(
'T3DataStructure' => array('<span style="font-weight: bold;">','</span>'),
'type' => array('<span style="font-weight: bold; color: #000080;">','</span>'),
'section' => array('<span style="font-weight: bold; color: #000080;">','</span>'),
'el' => array('<span style="font-weight: bold; color: #800000;">','</span>'),
'meta' => array('<span style="font-weight: bold; color: #800080;">','</span>'),
'_unknown' => array('<span style="font-style: italic; color: #666666;">','</span>'),
'_applicationTag' => array('<span style="font-weight: bold; color: #FF6600;">','</span>'),
'_applicationContents' => array('<span style="font-style: italic; color: #C29336;">','</span>'),
'sheets' => array('<span style="font-weight: bold; color: #008000;">','</span>'),
'parent:sheets' => array('<span style="color: #008000;">','</span>'),
'ROOT' => array('<span style="font-weight: bold; color: #008080;">','</span>'),
'parent:el' => array('<span style="font-weight: bold; color: #008080;">','</span>'),
'langDisable' => array('<span style="color: #000080;">','</span>'),
'langChildren' => array('<span style="color: #000080;">','</span>'),
);
var $FF_wrapTags = array(
'T3FlexForms' => array('<span style="font-weight: bold;">','</span>'),
'meta' => array('<span style="font-weight: bold; color: #800080;">','</span>'),
'data' => array('<span style="font-weight: bold; color: #800080;">','</span>'),
'_unknown' => array('<span style="font-style: italic; color: #666666;">','</span>'),
'sDEF' => array('<span style="font-weight: bold; color: #008000;">','</span>'),
'level:sheet' => array('<span style="font-weight: bold; color: #008000;">','</span>'),
'lDEF' => array('<span style="font-weight: bold; color: #000080;">','</span>'),
'level:language' => array('<span style="font-weight: bold; color: #000080;">','</span>'),
'level:fieldname' => array('<span style="font-weight: bold; color: #666666;">','</span>'),
'vDEF' => array('<span style="font-weight: bold; color: #800000;">','</span>'),
'level:value' => array('<span style="font-weight: bold; color: #800000;">','</span>'),
'currentSheetId' => array('<span style="color: #000080;">','</span>'),
'currentLangId' => array('<span style="color: #000080;">','</span>'),
);
/*************************************
*
* Markup of Data Structure, <T3DataStructure>
*
*************************************/
/**
* Makes syntax highlighting of a Data Structure, <T3DataStructure>
*
* @param string Data Structure XML, must be valid since it's parsed.
* @return string HTML code with highlighted content. Must be wrapped in <PRE> tags
*/
function highLight_DS($str) {
// Parse DS to verify that it is valid:
$DS = t3lib_div::xml2array($str);
if (is_array($DS)) {
$completeTagList = array_unique($this->getAllTags($str)); // Complete list of tags in DS
// Highlighting source:
$this->htmlParse = t3lib_div::makeInstance('t3lib_parsehtml'); // Init parser object
$struct = $this->splitXMLbyTags(implode(',',$completeTagList),$str); // Split the XML by the found tags, recursively into LARGE array.
$markUp = $this->highLight_DS_markUpRecursively($struct); // Perform color-markup on the parsed content. Markup preserves the LINE formatting of the XML.
// Return content:
return $markUp;
} else $error = 'ERROR: The input content failed XML parsing: '.$DS;
return $error;
}
/**
* Making syntax highlighting of the parsed Data Structure XML.
* Called recursively.
*
* @param array The structure, see splitXMLbyTags()
* @param string Parent tag.
* @param string "Application" - used to denote if we are 'inside' a section
* @return string HTML
*/
function highLight_DS_markUpRecursively($struct,$parent='',$app='') {
$output='';
foreach($struct as $k => $v) {
if ($k%2) {
$nextApp = $app;
$wrap = array('','');
switch($app) {
case 'TCEforms':
case 'tx_templavoila':
$wrap = $this->DS_wrapTags['_applicationContents'];
break;
case 'el':
default:
if ($parent=='el') {
$wrap = $this->DS_wrapTags['parent:el'];
$nextApp = 'el';
} elseif ($parent=='sheets') {
$wrap = $this->DS_wrapTags['parent:sheets'];
} else {
$wrap = $this->DS_wrapTags[$v['tagName']];
$nextApp = '';
}
// If no wrap defined, us "unknown" definition
if (!is_array($wrap)) {
$wrap = $this->DS_wrapTags['_unknown'];
}
// Check for application sections in the XML:
if ($app=='el' || $parent=='ROOT') {
switch($v['tagName']) {
case 'TCEforms':
case 'tx_templavoila':
$nextApp = $v['tagName'];
$wrap = $this->DS_wrapTags['_applicationTag'];
break;
}
}
break;
}
$output.=$wrap[0].htmlspecialchars($v['tag']).$wrap[1];
$output.=$this->highLight_DS_markUpRecursively($v['sub'],$v['tagName'],$nextApp);
$output.=$wrap[0].htmlspecialchars('</'.$v['tagName'].'>').$wrap[1];
} else {
$output.=htmlspecialchars($v);
}
}
return $output;
}
/*************************************
*
* Markup of Data Structure, <T3FlexForms>
*
*************************************/
/**
* Makes syntax highlighting of a FlexForm Data, <T3FlexForms>
*
* @param string Data Structure XML, must be valid since it's parsed.
* @return string HTML code with highlighted content. Must be wrapped in <PRE> tags
*/
function highLight_FF($str) {
// Parse DS to verify that it is valid:
$DS = t3lib_div::xml2array($str);
if (is_array($DS)) {
$completeTagList = array_unique($this->getAllTags($str)); // Complete list of tags in DS
// Highlighting source:
$this->htmlParse = t3lib_div::makeInstance('t3lib_parsehtml'); // Init parser object
$struct = $this->splitXMLbyTags(implode(',',$completeTagList),$str); // Split the XML by the found tags, recursively into LARGE array.
$markUp = $this->highLight_FF_markUpRecursively($struct); // Perform color-markup on the parsed content. Markup preserves the LINE formatting of the XML.
// Return content:
return $markUp;
} else $error = 'ERROR: The input content failed XML parsing: '.$DS;
return $error;
}
/**
* Making syntax highlighting of the parsed FlexForm XML.
* Called recursively.
*
* @param array The structure, see splitXMLbyTags()
* @param string Parent tag.
* @param string "Application" - used to denote if we are 'inside' a section
* @return string HTML
*/
function highLight_FF_markUpRecursively($struct,$parent='',$app='') {
$output='';
// Setting levels:
if ($parent=='data') {
$app='sheet';
} elseif($app=='sheet') {
$app='language';
} elseif($app=='language') {
$app='fieldname';
} elseif($app=='fieldname') {
$app='value';
}
// Traverse structure:
foreach($struct as $k => $v) {
if ($k%2) {
$wrap = array('','');
// Default wrap:
$wrap = $this->FF_wrapTags[$v['tagName']];
// If no wrap defined, us "unknown" definition
if (!is_array($wrap)) {
switch($app) {
case 'sheet':
case 'language':
case 'fieldname':
case 'value':
$wrap = $this->FF_wrapTags['level:'.$app];
break;
default:
$wrap = $this->FF_wrapTags['_unknown'];
break;
}
}
$output.=$wrap[0].htmlspecialchars($v['tag']).$wrap[1];
$output.=$this->highLight_FF_markUpRecursively($v['sub'],$v['tagName'],$app);
$output.=$wrap[0].htmlspecialchars('</'.$v['tagName'].'>').$wrap[1];
} else {
$output.=htmlspecialchars($v);
}
}
return $output;
}
/*************************************
*
* Various
*
*************************************/
/**
* Returning all tag names found in XML/HTML input string
*
* @param string HTML/XML input
* @return array Array with all found tags (starttags only)
*/
function getAllTags($str) {
// Init:
$tags = array();
$token = md5(microtime());
// Markup all tag names with token.
$markUpStr = ereg_replace('<([[:alnum:]_]+)[^>]*>',$token.'1'.$token,$str);
// Splitting by token:
$parts = explode($token,$markUpStr);
// Traversing parts:
foreach($parts as $k => $v) {
if ($k%2) {
$tags[]=$v;
}
}
// Returning tags:
return $tags;
}
/**
* Splitting the input source by the tags listing in $tagList.
* Called recursively.
*
* @param string Commalist of tags to split source by (into blocks, ALL being block-tags!)
* @param string Input string.
* @return array Array with the content arranged hierarchically.
*/
function splitXMLbyTags($tagList,$str) {
$struct = $this->htmlParse->splitIntoBlock($tagList,$str);
// Traverse level:
foreach($struct as $k => $v) {
if ($k%2) {
$tag = $this->htmlParse->getFirstTag($v);
$tagName = $this->htmlParse->getFirstTagName($tag,TRUE);
$struct[$k] = array(
'tag' => $tag,
'tagName' => $tagName,
'sub' => $this->splitXMLbyTags($tagList,$this->htmlParse->removeFirstAndLastTag($struct[$k]))
);
}
}
return $struct;
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_syntaxhl.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_syntaxhl.php']);
}
?>
Wahrscheinlich wird das im nächsten Release kein Problem mehr sein. Mich interessiert noch ob jemand auch dieses "Problem" hatte etc. Gibt es in eurer Installation diese Datei???
RegardZ 😃