Debianforum offline lesen.

Schreibt hier die Kategorien und Themen rein, die euch momentan hier noch fehlen.
metacyborg
Beiträge: 48
Registriert: 19.12.2004 18:20:01

Beitrag von metacyborg » 15.03.2005 09:20:52

Ephraim hat geschrieben:Gibts hier nicht en RSS Feed?

Dann kann man des ganze doch offline lesen oder net?

Ciao Ephraim
das mit den hundert zeichen ist kein problem, wir haben ja die links. proof of concept (das beispielscript des pear XML_RSS, lass ich aber nicht ewig stehen):
http://metacyb.org/channel/debianforumde/
sowas kann man mit offline readern (avantgo, plucker für mobile) sehr gut verarbeiten, am layout des forums könnte man aber für die moblile lesbarkeit noch arbeiten (kann man das layout von phpBB über die URL steuern?). schreiben wäre wegen der erforderlichen anmeldung nicht trivial (jedenfalls fällt mir im augenblick keine lösung ein, zwar kann man z.b. mit avantgo formulare versenden, aber wie mach ich offline die forenanmeldung?)

mfg

m

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 08.06.2006 17:58:40

Ich bringe das Thema mal wieder hoch.

Ich bin zwar meistens einer der glücklichen always-on Menschen, aber hin und wieder sitze ich auch zu Hause und da gibt es nur ISDN-Dialup(danke an die Firma Telekom).

Für mich würde es reichen, wenn man einen Gateway Forum->NNTP oder Forum->Mailinglist hat, bi-direktional finde ich nicht unbedingt nötig, da man ja deutlich mehr liest als antwortet und zum Antworten kann man dann doch mal über den Browser gehen.

Zur Realisierung: es sollte doch reicht einfach sein, in das Script posting.php ein paar Zeilen einzufügen, die eine Mail oder ein NNTP-Posting generieren, Betreff könnte sowas sein:

Code: Alles auswählen

[Lob und Kritik] Debianforum offline lesen.
Der Text des Postings ist dann eben der Text des Beitrags, bereinigt von BBCode und dazu in der Signatur ein Link zum dem Thread im Forum. Apropos Thread, man sollte beim Generieren des Postings dann auch eine MSG-ID vergeben, und diese dann bei Antworten als References-Header verwenden, damit es auch ein Thread bleibt.
Dazu müsste man sich die generierte MSG-ID allerdings merken, oder man generiert sie aus der ID des Threads, die ist ja eh vorhanden.

Wenn sich tatsächlich jemand finden sollte, der das ähnlich wie ich brgrüßen würde, ich stelle mich gerne als Helfer bei der Realisierung zur Verfügung.
Ich konnte auch eine entsprechende Mailingliste auf meinem Server anbieten oder einen NNTP-Server dafür aufsetzen.

Gruß
deadeye

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 11.06.2006 15:35:42

Ein patch ist willkommen (diff -u bitte). Am besten so einrichten das die Mails an eine Mailingliste gesendet werden.

bye, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 11.06.2006 19:57:09

Bitteschön.
http://www.uvena.de/patches/phpbb_dfde_forum2mail.patch

Benutzung:

Code: Alles auswählen

cd /pfad/zum/phpbb2/verzeichnis
patch -p1 </pfad/zum/patch
Der Patch ist für phpBB 2.0.21. Es wird nur die inlcudes/functions_post.php geändert.
Lizenz: GPLv2.

Zum Patch:
Man kann sicher die ein oder andere Stelle noch optimieren, aber so funktioniert es erstmal so wie ich es mir vorstelle(siehe mein letztes Posting).
Ich habe vor jede Variable, die ich selbst setze, ein f2m_ gesetzt, um nicht versehentlich schon bestehende Variablen zu überschreiben. D.h. alle anderen Variablen, die ich verwende werden von phpBB gesetzt.

Funktionsweise: Wenn ein Post in die DB geschrieben wird, wird nun auch eine Mail erstellt.
Empfänger ist beispielsweise eine Mailing Liste(die Adresse muss entsprechend im mail()-Befehl geändert werden).
Betreff setzt sich aus dem Titel des Forums, z.B. "Lob & Kritik" und dem Themennamen, z.B. "Debianforum offline Lesen" zusammen. Beispiel: "[Lob & Kritik] Debianforum offline Lesen".
Der Mailtext ist der Postingtext, Bbcode-bereinigt(TODO), der Signatur des Posters, sofern vorhanden und einer weiteren kleinen Signatur, die verdeutlicht, dass die Mail von den Forum versandt wurde.
Absender ist der Username und Emailadresse des Posters.
Der Header der Mail enthält zusätzlich eine generierte Message-Id sowie References. Damit wird gewährleistet, dass neue Themen jeweils einen neuen Thread aufziehen. Alle Antworten zu einem Thema werden als Antwort auf den ersten Post des Themas behandelt, d.h. es entsteht ein flacher Thread. Sonderfall: Wenn ein Posting editiert wird, erhält die daraus resultierende Mail als Referenz das editierte Posting, d.h. an der Stelle wird der Thread tiefer als nur eine Ebene. Anders ist das IMO nicht möglich, weil im Forum kann man Postings noch ändern, wenn aber eine Mail verschickt ist, war es das. Daher wird für die Änderung eine neue Mail verschickt und entsprechend in den Thread einsortiert.
Mal ein Beispiel:
Neues Thema: "Test" mit ein paar Antworten und das dritte Posting wurde bearbeitet:

Code: Alles auswählen

Test
  |- Erste Antwort
  |- Zweite Antwort
  |- Dritte Antwort
    |- Dritte Antwort (editiert)
  |- Vierte Antwort
Jetzt fällt mir ein, für eine Mailing Liste wäre vielleicht noch ein zusätzlicher Header nötig, um das Senden an die Liste zu erlauben, da die Liste an sich dann read-only sein sollte.
Hinweis: die ganze Lösung ist nicht bi-direktional. D.h. man kann über die Liste kein Posting erstellen, sondern nur Lesen.

ToDo:
Ich habe eine Funktion strip_bbcode() hinzugefügt. Dort wird aus dem Postingtext und aus der Signatur der BBCode extrahiert, weil der in einer Mail nichts nützt. Ich habe das für und gemacht, weil es da einfach war. Das muss noch für die restlichen Tags gemacht werden. Ich habe es aber nicht so mit regulären Ausdrücken ;-)

Hoffe ich habe nichts vergessen.

Würde mich freuen, wenn das irgendwie klappt.

Ich würde auch eine Mailing Liste inklusive Archiv bereitstellen.

Gruß
deadeye

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 11.06.2006 20:10:37

Hi deadeye,

coole Sache die du da zusammengebaut hast. Mailman haben wir auf dem Server schon installiert, denke dann werden wir das auch darueber managen. Aber danke fuer das Angebot.

Eine Sache haette ich nur noch. Das mit dem Usernamen und e-Mail des Users als Absender ist nicht so eine gute Idee. Ich denke das werden wir auf "Username <noreplay@debianforum.de>" umschreiben. Die entsprechende Zeite im patch habe ich gefunden, das schreiben wir dann um wenn wir die Sache einspielen.

bye, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 11.06.2006 20:17:49

Ja, ist ja kein Problem.

Damit fällt dann auch der zusätzliche Header weg, den ich erwähnt hatte. Weil dann kann man ja mailman sagen, dass noreplay@debianforum.de zum Einsenden von Mails berechtigt ist. Sonst hätte man ja jeden User aus dem Forum in Mailman hinzufügen müssen, damit die Mails auch an die Listen gehen(->Schwachsinn) oder eben allen Mitgliedern das Senden verbieten und nur mit einem bestimmten Header das Senden erlauben.

Aber dann fügt im Body der Mail noch den Username des Posters mit ein, damit man weiß, wer geschrieben hat ;-).

Gruß
deadeye

Edit: hab doch noch was vergessen: bitte schaut nochmal gründlich über den Code. Das war heute wieder das erste Mal seit langer Zeit, dass ich in PHP rumgehackt habe, in letzter Zeit nur noch C/C++ ;-).

Antworten