Archiv verlassen und diese Seite im Standarddesign anzeigen : Wo befindet sich die Entfernung der Formatierung innerhalb von bestimmten vb Codes
Wenn man im erweiterten Editor einen formatierten Text (zb farbig) einfügt und sich dieser in einem (zb php vb code tag) befindet, so werden alle Formate (in meinem Beispiel die Farbe) entfernt.
Nun will ich abändern (zumindest mal nachschauen) können, welche vb codes das machen und welche nicht, denn nicht alle entfernen die Formatierung. Allerdings komme ich leider nicht drauf wo sich genau diese Entfernung aller internen vb codes befindet.
Vielleicht könnte mir jemand sagen wo ich das drinnen finde (mehr will ich gar nicht wissen).
Vielen Dank!
Das findest du in der Datei /includes/class_bbcode.php.
Es werden aber nicht nur bestimmte Formatierungen entfernt, sondern z.B. in [PHP] werden so gut wie alle anderen Codes entfernt, bzw. "entschärft": $code = str_replace(array('[', ']'), array('[', ']'), $code);
Das findest du in der Datei /includes/class_bbcode.php.
Es werden aber nicht nur bestimmte Formatierungen entfernt, sondern z.B. in [php] werden so gut wie alle anderen Codes entfernt, bzw. "entschärft": $code = str_replace(array('[', ']'), array('[', ']'), $code);
Vielen Dank Mystics!
Nun gut, ich glaub nun halbwegs den Ablauf von [php] verstanden zu haben, allerdings kann ich immer noch nicht herauslesen wo nun die ganzen Codes entfernt werden. Mit der Funktion $code = str_replace(array('[', ']'), array('[', ']'), $code); werden ja nur die Klammern durch (html) Klammern ersetzt und nicht die Codes entfernt. Oder doch irgendwie? Ich nehme mal an ich bin schon in der richtigen Funktion (handle bbcode php) in der ich jetzt suche, aber irgendwie finde ich es einfach nicht :confused:.
Bitte nochmals um Hilfe!
Ein Hinweis wo sich der Code befindet reicht mir aus, muss nicht unbedingt gepostet werden.
StGaensler
16.08.2007, 14:06
Was meinst du denn dann mit "die Formate werden entfernt"?
Wenn ich z.B. das hier nehme:Test Test Test
Dort ist das mittlere Wort mit vB Code rot eingefärbt.
Nachdem vB Codes im php-Tag nicht erlaubt sind, wird der vB Code nicht geparst, sondern einfach so stehen gelassen.
Viele Grüße,
Stefan
Was meinst du denn dann mit "die Formate werden entfernt"?
Wenn ich z.B. das hier nehme:Test Test Test
Dort ist das mittlere Wort mit vB Code rot eingefärbt.
Nachdem vB Codes im php-Tag nicht erlaubt sind, wird der vB Code nicht geparst, sondern einfach so stehen gelassen.
Viele Grüße,
Stefan
Danke Stefan!
Das ist alles vollkommen korrekt. Ich gehe aber nicht vom Standard Editor aus, sonder vom erweiterten wysiwyg editor. Wenn man dort einfügt und danach einen farbigen Text zwischen die php tags hineinkopiert (zb von Word aus), so werden diese (zb bei durch Posten oder durch Vorschau) automatisch entfernt. Schreibe ich allerdings manuell color tags dazu, so bleiben diese wie du beschrieben hast natürlich erhalten.
Nun Gut mir geht es jetzt genau um den Fall dass zb das color tag herausgeschnitten wird. Oder wahrscheinlich besser ausgedrückt: gar nicht erst in die entsprechenden Tags umgewandelt wird.
Warum ich das ganze brauche: Versuche ein unsupported Plugin (http://www.vbulletin.org/forum/showthread.php?t=93071) (highlighting von sourcode) von Andreas (vBulletin-Germany) manuell zu fixen, denn dieses hat eben das Problem die Formate wie zb Farbe (im erweiterten Editor) in Tags umzuwandeln anstatt die Formate wegzulassen. Dazu muss ich aber im Code die richtigen Stellen finden.
Ich bin wahrscheinlich bis jetzt davon ausgegangen, dass die Formatierungs Tags (im erweiterten Editor) weggschnitten werden, aber wahrscheinlich werden sie nur bei den anderen wie zb code Tag hinzugefügt. Gut, schlauer geworden, aber trotzdem stehe ich jetzt irgendwie an.
Im Prinzip suche ich dann also genau das umgekehrte falls es denn wirklich so ist. Also wo im Prinzip (mit dem erweiterten Editor) die Farbinformationen in tags bzw. vb Codes umgewandelt werden.
Hoffe es ist jetzt etwas klarer um was es mir geht.
StGaensler
16.08.2007, 16:18
Danke, jetzt ist es klarer geworden :)
Wo das ganz genau ist, kann ich dir leider nicht sagen, aber es sollte irgendwo in der /clientscript/vbulletin_textedit.js sein.
Viele Grüße,
Stefan
Danke, jetzt ist es klarer geworden :)
Wo das ganz genau ist, kann ich dir leider nicht sagen, aber es sollte irgendwo in der /clientscript/vbulletin_textedit.js sein.
Viele Grüße,
Stefan
Big THX!
Hätte es mir jetzt mal durchgeschaut, aber derweilen noch nichts gefunden. Mhm... wie genau kannst du denn das einschätzen? (also damit meine ich ob du dir sicher bist ob es in einer .js Datei ist (könnte theoretisch ja auch in einer .php Datei sein), oder sogar sicher dass es in /clientscript/vbulletin_textedit.js ist)
Vielen Dank nochmals!
StGaensler
16.08.2007, 17:42
Hallo,
na, ganz so sicher bin ich mir jetz nicht mehr (ich war mir so sicher, weil ich mich in deiner Beschreibung oben verlesen hatte. Das erklärt auch, wieso ich nichts gefunden habe :rolleyes:)
Es sollte sich um die Zeilen 162/179/183 in der /includes/functions_wysiwyg.php handeln. Dort steht dann vereinfacht:$text = preg_replace('#\[(html|php)\]((?>[^\[]+?|(?R)|.))*\[/\\1\]#siUe', "strip_tags_callback('\\0')", $text);Bitte entschuldige die Falschinformation :(
Viele Grüße,
Stefan
Hallo,
na, ganz so sicher bin ich mir jetz nicht mehr (ich war mir so sicher, weil ich mich in deiner Beschreibung oben verlesen hatte. Das erklärt auch, wieso ich nichts gefunden habe :rolleyes:)
Es sollte sich um die Zeilen 162/179/183 in der /includes/functions_wysiwyg.php handeln. Dort steht dann vereinfacht:$text = preg_replace('#\[(html|php)\]((?>[^\[]+?|(?R)|.))*\[/\\1\]#siUe', "strip_tags_callback('\\0')", $text);Bitte entschuldige die Falschinformation :(
Viele Grüße,
StefanJuhuuuuuuuuu!!!!111elfeinseins
THX.. big big THX
Hab jetzt meine tags einfach zu den html und php tags hinzugefügt und es funktioniert! Vielen vielen Dank!
Ihr seit echt genial!
Der kleine Fix wird von mir natürlich auch noch auf der Seite vom Plugin (http://www.vbulletin.org/forum/showthread.php?t=93071) gepostet.
StGaensler
17.08.2007, 09:14
Bitte bitte :) Denke nur daran, du musst diese Veränderung bei jedem Update wieder in die Datei eintragen. Besser wäre ein Plugin im Hook wysiwyg_parse_start. Wenn ich mir das so ansehe, sollte meine Code-Zeile dort auch funktionieren - passe sie dann nur so an, das nur dein Tag behandelt wird - die anderen folgen ja dann später :)
Bitte bitte :) Denke nur daran, du musst diese Veränderung bei jedem Update wieder in die Datei eintragen. Besser wäre ein Plugin im Hook wysiwyg_parse_start. Wenn ich mir das so ansehe, sollte meine Code-Zeile dort auch funktionieren - passe sie dann nur so an, das nur dein Tag behandelt wird - die anderen folgen ja dann später :)
Danke für die gute Idee... habs jetzt mal als Plugin hinzugefügt, allerdings zerschieße ich mir damit irgendwie die Zeilenumbrüche. Auch php zerschieße ich mir Zeilenumbruchmäßig damit. Es wird einfach 2 mal der regex Code zum Ersetzen ausgeführt, einmal mit html und php und einmal mit meinem tag.
Habe auch schon versucht den gesamten Code von Hook (…_start) bis inkl der Ersetzung (preg_replace) ins Plugin hineinzufügen. Ohne Erfolg.
Hab jetzt auch noch ausprobiert, was passiert wenn ich den gesamten Code von Hook (…_start) bis inkl der Ersetzung (preg_replace) direkt aus dem File selber rauslösche und nur im Plugin drinnen lasse (bzw. halt dort hineinverschoben), da funktioniert es einwandfrei.
Wenn ich nur den einen regex Code aus dem File (Array, wo diese definiert sind) rauslösche und manuell im Plugin durchführe sind die Zeilenumbrüche auch wieder weg.
Mein Fazit lautet, dass wenn ich einfach nur diese Eine Ersetzung von php und html herausnehme und parallel machen, dass dann alle Zeilenumbrüche verloren gehen.
2 Mal einfach nur das normale preg_replace ausführen funktioniert einwandfrei.
Kann es sein dass der regex Befehl (oder ein anderer) die Zeilenumbrüche frisst?
edit: Hab jetzt noch ein bisschen getestet und konnte herausfinden, dass ein preg_replace direkt über meinem gewollten preg_replace alle \n bzw. \r herauslöscht, was dazu führt dass ich vor dieser Zeile nicht meine ganzen codes von html und php entfernen darf. Danach wie auch ursprünglich vorgesehen funktioniert es einwandfrei. Da sich der hook Einsprungspunkt aber davor befindet kann ich es scheinbar so nicht lösen. Beim nächsten Einsprungspunkt hab ichs auch schon probiert, dort ist es dann aber scheinbar schon zu spät. Ich denke man müsste den regex Code anpassen um das irgendwie hinzubekommen.
Mhm..
vBulletin® v3.7.4, Copyright ©2000-2008, Jelsoft Enterprises Ltd.