MyBB.de Forum
Doppelanker - verwirrendes MyCode Ergebnis - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: Doppelanker - verwirrendes MyCode Ergebnis (/thread-9689.html)



Doppelanker - verwirrendes MyCode Ergebnis - sleepoholic - 10.06.2008

Ich habe nun bei dem Beitragsschreiben bemerkt das das Fußnoten setzen als solches unschön umzusetzen ist. Man ist es gewohnt das man mit einem Klick zu der entsprechende Fußnote springt und diese dann aufrufen kann - aber eben zuvor auch lesen kann was es mit der Fußnote auf sich hat. eben so wie man das auch vom Wissensschaftlichen Schreiben kennt.

Aus diesem Grund habe ich kurz Mycode geschrieben der Folgendermaßen aussieht:
Sprungmöglichkeit zu Fußnote setzen
MyCode-Titel: anker aufruf
Regulärer Ausdruck: \[aa=(.*?)\](.*?)\[/aa\]
Ersetzung: <a href="#$1">$2</a>

Fußnote setzen
MyCode-Titel: Text anker
Regulärer Ausdruck: \[anker=(.*?)\](.*?)\[/anker\]
Ersetzung: <a name="$1">$2</a>

Beispiel: http://gedankenglut.de/showthread.php?tid=351
Text in den Fußnoten (Quelltext):
Code:
[anker=a1][1][/anker][url]http://www.netzeitung.de/politik/ausland/947057.html[/url], 10.06.08 entnommen
[anker=a2][2][/anker][url]http://de.wikipedia.org/wiki/Irak[/url], 10.06.08 entnommen


Das Problem ist nun das der Zweite Anker nicht eingeblendet wird. Ansonsten ist das Ergebnis aber wie erhofft. Der erste Anker wird sauber angezeigt und wenn ich Text danach Tippe (nicht in der Zeile mit dem Anker2 Code) wird dieser auch Fehlerfrei aufgeführt.
Woran könnte dies liegen? Und was kann ich dagegen tun? Immerhin werden die Links zu den Ankern korrekt gesetzt. Schon seltsam...


Anmerkung:
bei der Vorschau ist mir aufgefallen das der Anker 2 Code hier in dem Forum auch nicht angezeigt wird. O..o
jedenfalls wenn ich ihn nicht mit dem Code Befehl umgebe


RE: Doppelanker - verwirrendes MyCode Ergebnis - Michael - 10.06.2008

An sich sieht alles richtig aus. Hast du es mal versucht wenn du die URL-Tags weglässt? Evtl. verschluckt sich etwas daran.


RE: Doppelanker - verwirrendes MyCode Ergebnis - Zwoetzen - 10.06.2008

Hmmm, habe bei mir schon ziemlich lange die Anker-MyCodes drin, und auch mit mehrfachen Ankern im Thread gibt es da kein Problem.

Ich habe es so gemacht:

Anker Festlegen:
Regulärer Ausdruck: \[anchor=(.*?)\](.*?)\[/anchor\]
Ersetzung: <a name="$1">$2</a>

Anker verlinken:
Regulärer Ausdruck: \[alink=(.*?)\](.*?)\[/alink\]
Ersetung: <a href="#$1">$2</a>

Aber bis auf die Namen der Tags ist da kein Unterschied zu erkennen...

Nachdem ich nun bissl rumprobiert habe, musste ich bei mir den gleichen Fehler feststellen: Sobald eine URL direkt hinter der ersten Fußnote steht, wird anscheinend der zweite Anker, wie Michael schon vermutete, verschluckt. Abhilfe wäre in diesem Fall, einfach die http-Adresse ohne URL-Tag hinzuschreiben, die wird ja dann automatisch verlinkt und es funzt alles.
Und sobald du [ url=http://....]Text[/url] nutzt, ist der Bug auch weg.
Das wäre jetzt mein Lösungsvorschlag: Entweder Link benennen, oder den URL-Tag ganz rauslassen Wink (Zwar nicht elegant, aber funzt Toungue)


RE: Doppelanker - verwirrendes MyCode Ergebnis - sleepoholic - 11.06.2008

@Zwoetzen
jop, so geht es. wobei ich bei dem auslassen der URL umklammerung auch auf die leerzeichen davor und danach achten muss. Wenn ich das also einen User andrehen wollte wäre das erklären wohl ein wenig doof.

@Michael
Hast du eine Idee was da verschlucken könnte - oder wäre dies ein Fall was man den entwicklern melden sollte?


RE: Doppelanker - verwirrendes MyCode Ergebnis - Zwoetzen - 11.06.2008

ich glaub, das ganze ist ein Bug. Die URL-Tags "verschlucken" sich gegenseitig:

Code:
[url]http://www.dererstelink.de[/url]
[url]http://www.derzweitelink.de[/url]
Ergibt:
http://www.dererstelink.de
http://www.derzweitelink.de


Der zweite Link wird nicht umgesetzt. Selbst wenn man etwas dazwischenschreibt, wird nur der erste Link alleine angezeigt. Würde ich jetzt noch ein URL-Tag mit einer http-Adresse hinschreiben, wäre dieser Abschnitt des Posts auch flöten, egal ob noch andere Tags dazwischen waren oder nicht.
Somit wäre das auch die Ursache, weshalb die Anker-Definitionen weg sind: Einer der URL-Tags futtert einfach alles auf ^^

EDIT: Ein Blick auf den regulären Ausdruck in der inc/class_parser.php function cache_mybb() hat mich relativ schnell zu dem Ergebnis geführt, dass ich da nicht wirklich durchblicke und somit keinen Lösungsansatz habe ^__^


RE: Doppelanker - verwirrendes MyCode Ergebnis - Michael - 11.06.2008

Bitte Testen: In der inc/class_parser.php suchen:
PHP-Code:
preg_match_all("#\[(url=([^\]]*])|url\].*\[\/url\])#i"$message$bad_matchesPREG_PATTERN_ORDER); 
Ersetzen durch:
PHP-Code:
preg_match_all("#\[(url=([^\]]*])|url\].*\[\/url\])#si"$message$bad_matchesPREG_PATTERN_ORDER); 



RE: Doppelanker - verwirrendes MyCode Ergebnis - Zwoetzen - 12.06.2008

Habe die Änderung bei mir durchgeführt, und scheint nun ordentlich zu funktionieren.
Auch die Anker funktionieren jetzt so, wie es beabsichtigt war. Smile
Danke Michael Smile

Aber noch eine Frage zum Verständnis:
Kannst du (oder jemand anderes) mir sagen, warum das mit dem "s" als Modifier funktioniert?
Dass das s für single_line steht, weiß ich, aber mir ist nicht ganz klar, welche Auswirkungen dies nun auf den Ausdruck hat, weshalb es letztendlich funktioniert.
Wäre nett, wenn das jemand erläutern könnte ^^


RE: Doppelanker - verwirrendes MyCode Ergebnis - Michael - 12.06.2008

Ich habe in Tests festgestellt, dass das Problem nur auftritt, wenn der URL-Tag in mehreren Zeilen verteilt ist. Da man den Tag aber nur in einer Zeile benutzt habe ich das s hinzugefügt und es scheint ja auch zu klappen.


RE: Doppelanker - verwirrendes MyCode Ergebnis - sleepoholic - 13.06.2008

Süper. Klappt nun alles wie erhofft.
Nun können endlose Quellenangaben und Fußnoten Folgen.


Danke an mein neues Glücksbärchi Michael und auch an Zwoetzen danke für das ausprobieren. Es beruight ungemein wenn man nicht der einzige mit dem Problem ist.