Seite 1 von 1

posting.php erweitern

Verfasst: 23.12.2009 12:54
von Helmut
Hallo,

ich bin schon eine Weile auf der Suche nach einer Lösung für mein Problem.

Vor einiger Zeit habe ich eine Erweiterung für die posting.php gemacht, um zusätzliche Felder mit dem Posting abzuspeichern. Das funktioniert auch perfekt, die zusätzlichen Felder stehen in der Tabelle phpbb_posts drinnen.

Mein Problem sind nun die BBCodes, ich möchte diese auch für die zusätzlichen Felder nutzen. Leider habe ich es nicht geschaft, dass diese im Text des entsprechenden Feldes auch mit drinnen stehen. Wenn ich die BBCodes manuell in die entsprechende Spalte des zusätzlichen Feldes einfüge (z.B. [b:2h8h9oma]Test[/b:2h8h9oma]), dann wird der Text auch entsprechend geparst ausgegeben. Nur bei der Eingabe wenn ich den Text mit Test eingebe, dann wird er genauso in die Spalte eingetragen, also ohne die ":2h8h9oma". Der Text wird ja irgendwo im Bereich von // Save Draft in die Tabelle eingetragen und auch dort geparst, so wie ich gesehen habe.

Ich habe schon versiedene Versuche mit generate_text_for_storage gemacht, aber dann erzeigt er mit eine neue bbcode_uid was dann auch so in der Tabelle steht. Nur wird dann bei de Ausgabe des Textes der BBCode nicht mehr geparst und es wird nur noch [b:sa6hgyxs]Test[/b:sa6hgyxs] angezeigt.

Wie muss ich nun vorgehen, dass die bbcode_uid vom $message Text auch für das zusätzliche Feld richtig eingetragen wird?

Gruß Helmut

Re: posting.php erweitern

Verfasst: 23.12.2009 20:09
von Pyramide
So wie ich das sehe, wirst du wohl die Funktion generate_text_for_storage() kopieren müssen (Quellcode: http://www.phpbb.de/infos/3.0/xref/nav. ... .html#l450) und dann hinter die Zeile $message_parser = new parse_message($text); noch folgendes einfügen:

Code: Alles auswählen

$message_parser->bbcode_uid = $deine_bbcode_uid;

Re: posting.php erweitern

Verfasst: 23.12.2009 20:43
von nickvergessen
die bbcode_uid wird einem auch von der Funktion gegeben ;)

Re: posting.php erweitern

Verfasst: 23.12.2009 22:49
von Helmut
Hallo Pyramide, hallo nickvergessen,

danke euch schon mal für die Antwort.

Wie nickvergessen schon sagte, wird bei der Funktion generate_text_for_storage() die bbcode_uid erzeugt, aber in meinem Fall ist das ungünstig. Es soll ja die gleiche bbcode_uid für das zusätzliche Feld verwendet werden wie auch beim Posttext selber.

Ich habe versucht die Funktion generate_text_for_storage() entsprechend zu ändern, aber das scheint irgendwie auch nicht zu gehen. Wo wird denn genau die bbcode_uid erzeugt bzw. wie schaffe ich es dass der Posttext und das zusätzliche Feld mit der gleichen bbcode_uid versehen werden?

Die Funktion generate_text_for_storage() bringt mich anscheinend nicht weiter, es muss noch einen anderen Weg geben.


Gruß Helmut

Re: posting.php erweitern

Verfasst: 23.12.2009 23:05
von Pyramide
Helmut hat geschrieben:Wo wird denn genau die bbcode_uid erzeugt
Im Constructor der Klasse parse_message, also beim Aufruf der von mir zitierten Zeile $message_parser = new parse_message($text);
Helmut hat geschrieben:bzw. wie schaffe ich es dass der Posttext und das zusätzliche Feld mit der gleichen bbcode_uid versehen werden?
Indem du - wie ich oben geschrieben habe - die automatisch generierte bbcode_uid mit der gewünschten überschreibst.

Re: posting.php erweitern

Verfasst: 23.12.2009 23:33
von nickvergessen
Also beim bitfield tritt wohl ein ähnliches Problem auf.
Speicher doch einfach die uid und bitfield deiner Felder auch noch in der DB und benutz dann diese, dann funktioniert alles ordnungsgemäss.

Re: posting.php erweitern

Verfasst: 24.12.2009 00:13
von Helmut
Hallo Pyramide,

ok, ich habe jetzt die richtige Stelle gefunden wo die nach deinem Vorschlag abgeänderte Funktion generate_text_for_storage() rein muss damit die richtige bbcode_uid abgespeichert wird. Diese muss direkt vor // Store message, sync counters eingefügt werden.

Jetzt habe ich aber trotzdem ein kleines Problem dabei. Wenn ich auf "Vorschau" klicke, dann wird in der Vorschau selber der Text in dem zusätzlichen Feld richtg geparst angezeigt, aber in der Editzeile wo der Text eingegeben wird, steht dann [b:2h8h9oma]Test[/b:2h8h9oma] drinnen. Hier müsste die bbcode_uid eigentlich entfernt sein damit es so aussieht

Code: Alles auswählen

[b]Test[/b]
Wie bekomme ich die bbcode_uid wieder raus damit das richtig im Editfeld angezeigt wird und an welcher Stelle ist das etwa?

@nickvergessen
Daran habe ich auch schon gedacht, eine zusätzliche Spalte _bbcode_uid2 in die Tabelle phpbb_posts und _drafts einzutragen.


[EDIT]
Es geht doch nicht ganz. Wenn ich einen Post bearbeite, dann steht ja in der Spalte bbcode_uid die uid drinnen. Erstelle ich allerdings einen neuen Post, dann gibt es ja noch keinen Eintrag in der Tabelle _posts bzw. _drafts, woher bekomme ich dann die bbcode_uid?

Gruß Helmut

Re: posting.php erweitern

Verfasst: 28.12.2009 01:09
von Helmut
Hallo,

mal hochschieb .... :wink:

Ich bin noch nicht weiter gekommen, finde die Stelle nicht, wo ich in der Editzeile des zusätzlichen Feldes die bbcode_uid wieder aus der Anzeige raus bekomme.

Dann habe ich noch das Problem dass ich bei der Neuerstellung eines Postings ja noch keine bbcode_uid habe, da ja noch nichts in die Datenbank geschrieben wurde. Hier suche ich immer noch die Stelle wo ich die für den Postingtext verwendete bbcode_uid für die Vorschau her bekomme.

Gruß Helmut

Re: posting.php erweitern

Verfasst: 28.12.2009 01:24
von Mahony
Hallo
Schau dir mal an, wie das im phpBB3 Support Ticket System MOD gelöst wurde und passe das entsprechend an.

P.S. Sollte es dir allerdings um gespeicherte Entwürfe gehen die du mehrmals verwenden möchtest, dann schau mal hier Entwürfe nach dem Absenden nicht löschen


Grüße: Mahony

Re: posting.php erweitern

Verfasst: 28.12.2009 12:26
von Helmut
Hallo Mahony,

danke dir für die Antwort.

Ich habe deinen Mod mal in ein Testforum eingebaut und mir das mal angeschaut was in der DB abgelegt wird. Du packst alles über die $message bei der Tabelle phpbb_posts in die Spalte post_text rein, da funktioniert das natürlich mit dem Parsen der BBCodes. Das hat allerdings auch den Schönheitsfehler dass beim editieren alles zusammen im Textfeld steht, was dann weniger Übersichtlich ist.

Für meine Anwendung geht das nicht, da ich in der _posts Tabelle bereits eigene zusätzliche Spalten wie etwa post_comment habe und diese auch für andere Zwecke brauche. Außerdem werden bei der Konvertierung meines alten Forums bestimmte dieser zusätzlichen Felder gefüllt, da ich im alten Form auch schon zusätzliche Felder da sind. Hier müsste ich den Konverter dann mit großem Aufwand anpassen dass er mir das alles dann entsprechend in die post_text rein packt.

Gruß Helmut