anpera.net https://anpera.homeip.net/phpbb3/ |
|
Bugfix Addnav/Appoencode https://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/ |