frankblack
"myXOOPs"-Profi
Gepostet am:25.03.2009 09:23
#3
Es liegt daran, dass _XOOPS_EDITOR_TINYMCE_LANGUAGE in formtinymce.php NICHT defined ist. Daher wird auf den else-Bereich zurückgegriffen, der aber nicht gerade sinnvoll ist:
Entferne alle Bindestriche aus der Konstante _LANGCODE die in root / language / sprache / global.php definiert ist. Soweit so unnötig glaube ich, denn der _LANGCODE sollte nur aus zwei Buchstaben bestehen? Denn immerhin sind die Javascript-Sprachdateien aus zwei Buchstaben plus Endung zusammengesetzt.
Jetzt wird auch noch CHARSET ausgelesen und an die Sprachvariable angehängt. Und damit sind wir jetzt gaaanz weit entfernt von den Javascript-Sprachdateien.
tinymce.php hat auch eine spaßige Abfrage eingebaut:
Die Settings sollen eingelesen werden, wenn $this->setting nicht eingebunden werden kann. Kann nicht, da die Datei nicht existiert. Daher wird eine Datei eingebunden die existiert.
Direkt an der Anfang der Funktion getLanguage in der Datei formtinymce.php habe ich folgenden Code gesetzt:
Jetzt wird die richtige Sprachdefinition auf jeden Fall eingelesen. Ob das mit dem preg_replace hier richtig ist, weiß ich nicht genau. Ich meine mich dunkel erinnern zu können, dass dies ein Angriffsvektor war. ???
edit: habe bei der "spaßigen" Abfrage etwas misinterpretiert und den Absatz korrigiert. Stellt sich nur die Frage, ob die oben genannte Datei jemals in diesem Verzeichnis liegen wird.
Aw:: tinymce-Bug deutsche Version
25.03.2009 09:23 Problem erkannt!Es liegt daran, dass _XOOPS_EDITOR_TINYMCE_LANGUAGE in formtinymce.php NICHT defined ist. Daher wird auf den else-Bereich zurückgegriffen, der aber nicht gerade sinnvoll ist:
$this->language = str_replace('_', '-', strtolower(_LANGCODE));
Entferne alle Bindestriche aus der Konstante _LANGCODE die in root / language / sprache / global.php definiert ist. Soweit so unnötig glaube ich, denn der _LANGCODE sollte nur aus zwei Buchstaben bestehen? Denn immerhin sind die Javascript-Sprachdateien aus zwei Buchstaben plus Endung zusammengesetzt.
if(strtolower(_CHARSET) == "utf-8") {
$this->language .= "_utf-8";
}
Jetzt wird auch noch CHARSET ausgelesen und an die Sprachvariable angehängt. Und damit sind wir jetzt gaaanz weit entfernt von den Javascript-Sprachdateien.
tinymce.php hat auch eine spaßige Abfrage eingebaut:
// Load default settings
if ( ! ($this->setting = @include( $GLOBALS['xoops']->path( "var/configs/tinymce.php" ) ) ) ) {
$this->setting = include dirname(__FILE__) . "/settings.php";
}
Die Settings sollen eingelesen werden, wenn $this->setting nicht eingebunden werden kann. Kann nicht, da die Datei nicht existiert. Daher wird eine Datei eingebunden die existiert.
Direkt an der Anfang der Funktion getLanguage in der Datei formtinymce.php habe ich folgenden Code gesetzt:
global $xoopsConfig;
$xoopsConfig['language'] = preg_replace("/[^a-z0-9_-]/i", "", $xoopsConfig['language']);
include_once XOOPS_ROOT_PATH.'/class/xoopseditor/tinymce/language/'.$xoopsConfig['language'].'.php';
Jetzt wird die richtige Sprachdefinition auf jeden Fall eingelesen. Ob das mit dem preg_replace hier richtig ist, weiß ich nicht genau. Ich meine mich dunkel erinnern zu können, dass dies ein Angriffsvektor war. ???
edit: habe bei der "spaßigen" Abfrage etwas misinterpretiert und den Absatz korrigiert. Stellt sich nur die Frage, ob die oben genannte Datei jemals in diesem Verzeichnis liegen wird.
... is gone with the wind ...