anpera.net
http://anpera.homeip.net/phpbb3/

Bugfix Addnav/Appoencode
http://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=5149
Seite 1 von 1

Autor:  Auric [ Fr 07 Mai, 2010 23:47 ]
Betreff des Beitrags:  Bugfix Addnav/Appoencode

Ich bin gerade auf einen Fehler in der Funktion Addnav gestoßen, der die Navigation zerschießt, wenn vor dem Accesskey ein Farbcode steht, der als Kürzel den selben Buchstaben benutzt wie der Accesskey. Hier ein Beispiel:
$this->bbcode_second_pass_code('', 'Zum `tgolden`0 Priester; Key: Z
Zum `Apurpurnen`0 Priester; Key: u
Zum `4roten`0 Priester; Key: m
Zum `Zblauen`0 Priester; Key: b
Zum `ggrünen`0 Priester; Key: g')
Im Letzten Fall ist der Key nun gleich dem Farcode, sodass der `H-Code, der den Accesskey farblich hervor heben soll nicht vor dem angezeigten (zweiten) "g" eingefügt wird, sondern vor dem ersten. Dadurch entsteht folgender Text:
$this->bbcode_second_pass_code('', 'Zum ``Hg`Hgrünen`0 Priester')
Die beiden ``s werden dann im appoencode durch ein einzelnes ` ersetzt und kein Farbcode geparst. Das Zweite `H, dass die Hervorhebung eigentlich wieder schließen sollte, wird nun allerdings verarbeitet und das Farbschema in der Navigation ist zerschossen. Damit es richtig eingefügt wird und wieder so aussieht:
$this->bbcode_second_pass_code('', 'Zum `g`Hg`Hrünen`0 Priester')
muss folgender Code in der Funktion addnav(), normalerweise in der common.php, geändert werden:
$this->bbcode_second_pass_code('', '//Suche
$text=substr($text,0,strpos($text,$key))."`H".$key."`H".substr($text,strpos($text,$key)+1);
// Ersetze mit
$index = strpos($text,$key);
$prekey = substr($text,$index-1,1);
if($prekey == "`") $index++;
$text=substr($text,0,$index)."`H".$key."`H".substr($text,$index+1);
')

Da der Fehler nur in einer bestimmten Kombination von Text und in Navs ja recht seltenen Farbcodes auftritt, ist er bisher wohl einfach noch nicht gefunden worden.

Auric

Autor:  Linus [ Sa 08 Mai, 2010 12:09 ]
Betreff des Beitrags:  Re: Bugfix Addnav/Appoencode

Da muss ich ein klein wenig widersprechen. Auf das Problem mit den Farbcodes, die als Highlight gesetzt werden, habe ich schon vor etwa drei Jahren hingewiesen, und auch einen Bugfix gepostet: http://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=1095&hilit=addnav

Aber auf den ersten Blick scheint deine Lösung performanter, ich werd das mal austesten, und wahrscheinlich übernehmen. :)

Autor:  Auric [ Sa 08 Mai, 2010 13:25 ]
Betreff des Beitrags:  Re: Bugfix Addnav/Appoencode

Tatsache - war wohl irgendwie an mir vorbei gegangen, aber ist ja auch schon drei Jahre her.

Autor:  Linus [ Sa 08 Mai, 2010 18:10 ]
Betreff des Beitrags:  Re: Bugfix Addnav/Appoencode

Stimmt, drei Jahre sind eine lange Zeit. Ich war selbst erstaunt wie alt dieser Post von mir schon ist. ;)

Autor:  Linus [ Do 31 Jan, 2013 15:53 ]
Betreff des Beitrags:  Re: Bugfix Addnav/Appoencode

Manchmal sieht man den Wald vor lauter Bäumen nicht. :???:
Ich habe da jetzt noch einen Fix erarbeitet, der kürzer, universeller und schneller ist:

suche in der common.php, in der Funktion addnav():
$this->bbcode_second_pass_code('', ' if ($key==""){
//$nav.="<a href=\"".HTMLEntities($link.$extra)."\" class='nav'>".appoencode($text,$priv)."<br></a>";
//$key==""; // This is useless
}else{
$text=substr($text,0,strpos($text,$key))."`H".$key."`H".substr($text,strpos($text,$key)+1);
if ($pop){
$quickkeys[$key]=popup($link.$extra);
}else{
$quickkeys[$key]="window.location='$link$extra';";
}
}
')

und ersetze mit:
$this->bbcode_second_pass_code('', ' if ($key==""){
}else{
$index = $i;
$text=substr($text,0,$index)."`H".$key."`H".substr($text,$index+1);
if ($pop){
$quickkeys[$key]=popup($link.$extra);
}else{
$quickkeys[$key]="window.location='$link$extra';";
}
}
')

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/