TYPO3 – Backend Problem mit Firefox 3 Bugfix Extension: mn_ff3_be_bugfix
Durch die TYPO3 Extension mn_ff3_be_bugfix könnt Ihr das Problem mit dem Mozilla Firefox 3 beheben, danach sollte das TYPO3 Backend wieder angezeigt werden! Ich konnte es leider selbst noch nicht testen, wer es getestet hat könnte es ja kurz Bestätigen!
Edit: Soweit ich nun selber testen konntewäre es sehr Ratsam die TYPO3 4.2.x zu installieren! Da dann alle Bugs behoben sind!
[ad#posting]
Eure Meinung zu dem Artikel ist gefragt! Schreibt mir ein Kommentar
Ich freue mich auf einen Blick auf meine Amazon-Wunschliste. Vielen Dank!
admin
Solltet Ihr aber auf jeden Fall updaten!
Softlution
Die haben wir bisher nirgendwo drauf, kann dazu nichts sagen 😉 die neuste war bisher 4.2.2
basti
sollte aber mit der neusten TYPO3 4.2.6 wieder funktionieren !?!
Softlution
Danke für den Tipp, plage mich seit langem mit dem IE7 rum jetzt kann ich wieder den FF nutzen 🙂
Jochen Metzger
…das Ding hat mir gerade meine Site zerhauen – FE und BE – danke. Bin begeistert.
basti
hallo, vielen lieben dank!
ich kann auch gerne darüber eine neue News schreiben!?
grüße, Basti
Manfred Mirsch
Hm,
der Anfang des Quellcodes wurde leider abgeschnitten:
loadModules->modules)
* @param boolean $dontLink == true will prevent the output from being linked with A-tags (used in the ‚beuser‘ extension)
* @param string $backPath must be the ‚backPath‘ to PATH_typo3 from where the menu is displayed.
* @param integer $descr determines the type of menu made (see above)
* @return string The menu HTML
*/
function topMenu($theModules,$dontLink=0,$backPath=“,$descr=0) {
Manfred Mirsch
Hallo,
hatte das gleiche Problem und anscheinend eine Lösung gefunden. Die Datei ux_alt_main.php im Ordner /var/libtypo3conf/ext/mn_ff3_be_bugfix/xclass hat in meiner Typo3-Version (4.1.3) einen Fehler erzeugt.
Jetzt habe ich dort die Funktion „topMenu“ durch die gleichnamige Funktion aus der Typo3-Version 4.1.7 ersetzt und nun läuft Typo3 4.1.3 bei mir im Firefox 3.
Hier der Quellcode der korrigierten Datei /var/lib/typo3-dummy/typo3conf/ext/mn_ff3_be_bugfix/xclass/ux_alt_main.php:
___________________________________________________
loadModules->modules)
* @param boolean $dontLink == true will prevent the output from being linked with A-tags (used in the ‚beuser‘ extension)
* @param string $backPath must be the ‚backPath‘ to PATH_typo3 from where the menu is displayed.
* @param integer $descr determines the type of menu made (see above)
* @return string The menu HTML
*/
function topMenu($theModules,$dontLink=0,$backPath=“,$descr=0) {
global $LANG, $TBE_TEMPLATE, $BE_USER;
// By default module sections are collapsable, only if they are explicitly turned off via TSconfig, they are not:
$tmpArr = $BE_USER->getTSConfig(‚options.moduleMenuCollapsable‘);
$collapsable = (isset($tmpArr[‚value‘]) && $tmpArr[‚value‘]==0) ? 0 : 1;
unset($tmpArr);
// Initialize vars:
$final=“;
$menuCode=“;
$descrCode=“;
$collection=array();
$menuCode_sub=“;
$selectItems=array();
$mIcons=array();
$mJScmds=array();
$onBlur=$GLOBALS[‚CLIENT‘][‚FORMSTYLE‘] ? ‚this.blur();‘ : “;
$selectItems[] = ‚[ ‚.$LANG->sL(‚LLL:EXT:lang/locallang_core.php:buttons.selMenu_modules‘,1).‘ ]‘;
$mC=0;
// Remove the ‚doc‘ module?
if ($BE_USER->getTSConfigVal(‚options.disableDocModuleInAB‘)) {
unset($theModules[‚doc‘]);
}
// Get collapsed configuration
if ($collapsable == 1) {
$config = is_array ($BE_USER->uc[‚moduleData‘][‚alt_menu.php‘]) ? $BE_USER->uc[‚moduleData‘][‚alt_menu.php‘] : array();
$collapsedOverride = t3lib_div::_GP(‚collapsedOverride‘);
if (is_array ($collapsedOverride)) {
$config = array_merge ($config, $collapsedOverride);
}
if (t3lib_div::_GP(‚collapsableExpandAll‘) == 1) {
$config[‚expandAll‘] = t3lib_div::_GP(‚expandAll‘);
}
if ($config[‚expandAll‘] && is_array($collapsedOverride)) {
$config = $collapsedOverride;
}
$BE_USER->uc[‚moduleData‘][‚alt_menu.php‘] = $config;
$BE_USER->writeUC($BE_USER->uc);
// all items have to be expanded when expandAll is set
if($config[‚expandAll‘] == 1) {
foreach($config as $key => $value) {
if($key != ‚expandAll‘)
$config[$key] = 0;
}
}
}
// Traverse array with modules
reset($theModules);
while(list($moduleName,$moduleInfo)=each($theModules)) {
$mC++;
$prefix = $this->getNavFramePrefix($moduleInfo);
if ($prefix) {
$this->fsMod[]=’fsMod.recentIds[„‚.$moduleName.'“]=““;‘;
}
// If there are submodules:
if (is_array($moduleInfo[’sub‘])) {
// Finding the default module to display
if ($moduleInfo[‚defaultMod‘]) {
$link = $moduleInfo[’sub‘][$moduleInfo[‚defaultMod‘]][’script‘];
} else {
reset($moduleInfo[’sub‘]);
$subTemp = current($moduleInfo[’sub‘]);
$link = $subTemp[’script‘];
}
$link_sub = 1; // Tells that the main modules links to a submodule
$link = “; // Does not link to submodules…
} else {
$link = $moduleInfo[’script‘];
$link_sub = 0;
}
$link = t3lib_div::resolveBackPath($link);
$moduleKey = $moduleName.’_tab‘;
$moduleCSSId = ‚ID_‘.t3lib_div::md5int($moduleName);
$collection[$moduleKey] = array(
‚moduleName‘ => $moduleName,
‚title‘ => $LANG->moduleLabels[‚tabs‘][$moduleKey],
‚onclick‘ => ‚top.goToModule(\“.$moduleName.’\‘);‘,
);
// Creating image icon
$image = @getimagesize($this->mIconFile($LANG->moduleLabels[‚tabs_images‘][$moduleKey],$backPath));
$imageCode=“;
$descr3_title = $LANG->moduleLabels[‚tabs‘][$moduleKey].‘ ‚;
if ($image) {
$Ifilename = $this->mIconFilename($LANG->moduleLabels[‚tabs_images‘][$moduleKey],$backPath);
$collection[$moduleKey][‚icon‘] = array($Ifilename, $image[3]);
$imageCode = “;
$descr3_imageCode = “;
} else {
$descr3_imageCode = “;
}
// Creating the various links:
$label = $LANG->moduleLabels[‚tabs‘][$moduleKey];
if ($link && $prefix) $link=$prefix.rawurlencode($link);
if ($link && !$dontLink) {
$label = ‚‚.$label.‘‚; // && !$link_sub
$mIcons[] = ‚‚.$descr3_imageCode.‘‚;
$JScmd = ‚
top.document.getElementsByName(\’content\‘)[0].src=top.getModuleUrl(top.TS.PATH_typo3+“‚.$this->wrapLinkWithAB($link).'“+additionalGetVariables);
top.highlightModuleMenuItem(„‚.$moduleCSSId.'“,1);‘;
$mJScmds[] = „case ‚“.$moduleName.“‚: \n „.$JScmd.“ \n break;“;
}
$selectItems[] = “.htmlspecialchars($LANG->moduleLabels[‚tabs‘][$moduleKey]).“;
$label=‘ ‚.$label.‘ ‚;
// make menu collapsable
if($collapsable == 1 && is_array($moduleInfo[’sub‘])) {
$collapseJS = ‚onclick=“window.location.href=\’alt_menu.php?collapsedOverride[‚.$moduleName.‘]=‘.($config[$moduleName] ? ‚0‘ : ‚1‘).’\'“‚;
$collapseIcon = “;
} else {
$collapseJS = $collapseIcon = “;
}
// Creating a main item for the vertical menu (descr=0)
$menuCode.=‘
‚.$imageCode.“.$label.“.$collapseIcon.‘
‚;
// Code for „About modules“
$descrCode.=‘
‚.$imageCode.$label.‘
‚;
// Hide submodules when collapsed:
if($collapsable == 1 && $config[$moduleName] == 1 && $descr == 0 && $config[‚expandAll‘] != 1) {
unset($moduleInfo[’sub‘]);
}
// Traversing submodules
$subCode=“;
if (is_array($moduleInfo[’sub‘])) {
reset($moduleInfo[’sub‘]);
$collection[$moduleKey][’subitems‘] = array();
$c=0;
while(list($subName,$subInfo)=each($moduleInfo[’sub‘])) {
if ($c==0) {
$subCode.=‘
‚;
$descrCode.=‘
‚;
}
$link = t3lib_div::resolveBackPath($subInfo[’script‘]);
$prefix = $this->getNavFramePrefix($moduleInfo, $subInfo);
$subKey = $moduleName.’_‘.$subName.’_tab‘;
$moduleCSSId = ‚ID_‘.t3lib_div::md5int($moduleName.’_‘.$subName);
$collection[$moduleKey][’subitems‘][$subKey] = array(
‚moduleName‘ => $moduleName.’_‘.$subName,
‚title‘ => $LANG->moduleLabels[‚tabs‘][$subKey],
‚onclick‘ => ‚top.goToModule(\“.$moduleName.’_‘.$subName.’\‘);‘,
);
// Creating image icon
$image = @getimagesize($this->mIconFile($LANG->moduleLabels[‚tabs_images‘][$subKey],$backPath));
$imageCode=“;
$descr3_title = $LANG->moduleLabels[‚tabs‘][$subKey].‘: ‚.$LANG->moduleLabels[‚labels‘][$subKey.’label‘];
if ($image) {
$Ifilename = $this->mIconFilename($LANG->moduleLabels[‚tabs_images‘][$subKey],$backPath);
$collection[$moduleKey][’subitems‘][$subKey][‚icon‘] = array($Ifilename, $image[3]);
$imageCode = ‚moduleLabels[‚labels‘][$subKey.’label‘]).'“ alt=““ />‘;
$descr3_imageCode = “;
} else {
$descr3_imageCode = “;
}
// Label for submodule:
$label = $LANG->moduleLabels[‚tabs‘][$subKey];
$label_descr = ‚ title=“‚.htmlspecialchars($LANG->moduleLabels[‚labels‘][$subKey.’label‘]).'“‚;
$flabel = htmlspecialchars($label);
$origLink = $link;
if ($link && $prefix) $link=$prefix.rawurlencode($link);
// Setting additional JavaScript if frameset script:
$addJS = “;
if ($moduleInfo[’navFrameScript‘]) {$addJS=“+’&id=’+top.rawurlencode(top.fsMod.recentIds[‚“.$moduleName.“‚])“;}
// If there is a script to link to (and linking is not disabled.
if ($link && !$dontLink) {
// For condensed mode, send &cMR parameter to frameset script.
if ($addJS && $BE_USER->uc[‚condensedMode‘]) {$addJS.= „+(cMR?’&cMR=1′:“)“;}
// Command for the selector box:
$JScmd = ‚
top.document.getElementsByName(\’content\‘)[0].src=top.getModuleUrl(top.TS.PATH_typo3+“‚.$this->wrapLinkWithAB($link).'“‚.$addJS.’+additionalGetVariables);
top.fsMod.currentMainLoaded=“‚.$moduleName.'“;
‚;
if ($subInfo[’navFrameScript‘]) {
$JScmd.=‘
top.currentSubScript=“‚.$origLink.'“;‘;
}
// If there is a frameset script in place:
if (!$BE_USER->uc[‚condensedMode‘] && $moduleInfo[’navFrameScript‘]) {
// use special nav script from sub module, otherwise from the main module
$subNavFrameScript = $subInfo[’navFrameScript‘] ? $subInfo[’navFrameScript‘] : $moduleInfo[’navFrameScript‘];
$subNavFrameScript = t3lib_div::resolveBackPath($subNavFrameScript);
// add GET params for sub module to the nav script
$subNavFrameScript = $this->wrapLinkWithAB($subNavFrameScript).$subInfo[’navFrameScriptParam‘];
$JScmd = ‚
if (top.content.list_frame && top.fsMod.currentMainLoaded==“‚.$moduleName.'“) {
top.currentSubScript=“‚.$origLink.'“;
top.content.list_frame.location=top.getModuleUrl(top.TS.PATH_typo3+“‚.$this->wrapLinkWithAB($origLink).'“‚.$addJS.’+additionalGetVariables);
if(top.currentSubNavScript!=“‚.$subNavFrameScript.'“) {
top.currentSubNavScript=“‚.$subNavFrameScript.'“;
top.content.nav_frame.location=top.getModuleUrl(top.TS.PATH_typo3+“‚.$subNavFrameScript.'“);
}
} else {
top.document.getElementsByName(\’content\‘)[0].src=top.TS.PATH_typo3+(
top.nextLoadModuleUrl?
„‚.($prefix?$this->wrapLinkWithAB($link).’&exScript=‘:“).’listframe_loader.php“:
„‚.$this->wrapLinkWithAB($link).'“‚.$addJS.’+additionalGetVariables
);
top.fsMod.currentMainLoaded=“‚.$moduleName.'“;
top.currentSubScript=“‚.$origLink.'“;
}
‚;
}
$selectItems[] = “.htmlspecialchars(‚- ‚.$label).“;
$onClickString = htmlspecialchars(‚top.goToModule(\“.$moduleName.’_‘.$subName.’\‘);‘.$onBlur.’return false;‘);
$flabel = ‚‚.htmlspecialchars($label).‘‚;
$mIcons[] = ‚‚.$descr3_imageCode.‘‚;
$JScmd.= ‚
top.highlightModuleMenuItem(„‚.$moduleCSSId.'“);‘;
$mJScmds[] = „case ‚“.$moduleName.’_‘.$subName.“‚: \n „.$JScmd.“ \n break;“;
}
$subCode.=‘
‚.(!$BE_USER->uc[‚hideSubmoduleIcons‘]?$imageCode:“).‘
‚.$flabel.‘
‚;
// For „About modules“:
$descrCode.=‘
‚.$imageCode.‘
‚.$flabel.‘
‚.htmlspecialchars($LANG->moduleLabels[‚labels‘][$subKey.’label‘]).‘‚.$LANG->moduleLabels[‚labels‘][$subKey.’descr‘].‘
‚;
// Possibly adding a divider line
$c++;
if ($c<count($moduleInfo[’sub‘])) {
// Divider
$subCode.=‘
‚;
}
}
// Spacer gif for top menu:
if (count($theModules)>$mC) {
$mIcons[]=“;
}
}
// Add spacers after each main section:
$subCode.=‘
‚;
$descrCode.=‘
‚;
// Add sub-code:
$menuCode.=$subCode;
}
// $descr==0: Ordinary vertical menu
if ($menuCode) {
if($collapsable == 1 || $config[‚expandAll‘] == 1) {
$collapseAllHTML = ‚
‚.$LANG->sL(‚LLL:EXT:lang/locallang_core.php:labels.expandAll‘,1).‘
‚;
} else {
$collapseAllHTML = “;
}
$final = ‚
‚.$menuCode.‘
‚.t3lib_BEfunc::cshItem(‚xMOD_csh_corebe‘, ‚menu_modules‘, $GLOBALS[‚BACK_PATH‘]).‘
‚.$collapseAllHTML.‘
‚;
}
// Output for the „About modules“ module
if ($descr==1) {
$descrCode = ‚
About modules
–>
‚.$descrCode.‘
‚;
$final = $descrCode;
}
// selector-box menu
if ($descr==2) {
// Add admin-functions for clearing caches:
if ($BE_USER->isAdmin()) {
$functionArray = $this->adminFunctions($backPath);
if (count($functionArray)) {
$selectItems[] = “;
foreach($functionArray as $fAoptions) {
$selectItems[] = ‚[ ‚.htmlspecialchars($fAoptions[‚title‘]).‘ ]‘;
}
}
}
// Logout item:
$selectItems[] = “;
$selectItems[] = ‚[ ‚.$LANG->sL(‚LLL:EXT:lang/locallang_core.php:buttons.logout‘,1).‘ ]‘;
$final = ‚
‚.implode(‚
‚,$selectItems).‘
‚;
}
// topmenu – horizontal line of icons!
if ($descr==3) {
$final = “.implode(“,$mIcons).“;
}
// Output for the goToModules() function in main frameset.
if ($descr==4) {
$final = chr(10).implode(chr(10),$mJScmds).chr(10);
}
// Output for TOPMENU BAR drop downs (but basically this is an array with which you can do many interesting things…)
if ($descr==5) {
$final = $collection;
}
// Return result:
return $final;
}
}
?>
Micha
Die Frames sind nach der Installation der Extension alle wieder da, aber keine einzige Seite lässt sich bearbeiten, die Textfelder sind allesamt komplett leer.
Ich wäre für jegliche Idee sehr dankbar 🙂
Pingback: GeekFabrik » Störriges Backend
Klaus
Habe die extension auf typo3 4.0 installiert. funktioniert alles wunderbar, sprich das frameset wird
korrekt dargestellt!
Ralf
Bei mir läuft die Extension fehlerfrei (FF3 (Win XP), TYPO3 4.1.6).
Basti
Am besten ist es auch auf die 4.2.x zu updaten! Alles andere ist meiner Meinung nach nicht die beste Lösung, da zuviel Fehler auftauchen.
Thomas
Bei mir läuft die Extension fehlerfrei (FF3 (Linux), T3 4.1.x). Das heisst, die Frames werden korrekt angezeigt. Dafür gibts teilweise Probleme mit dem HTML-Editor. Aber da kann man ja dann immer noch auf HTML-Sicht umschalten.
Werde sowieso nach bis nach alle Installationen auf 4.2.x updaten….
Daniel
Hallo,
habe die Extension installiert. Danach gabs kein Backend mehr nur Fehlermeldungen. Extension Ordner per FTP gelöscht, Eintrag aus der localconf.php genommen und nun geht das Backend wieder und zwar Fehlerfrei (fehler war, dass der linke frame nicht angezeigt wurde, sondern nur der Seitenbaum und der Inhaltsframe). Nun gehen alle drei Frames.