Javabasiertes Forum

Wenn wir wirklich an den Punkt kommen, wo GitHub nicht mehr ausreicht, würde ich beide Domains grabben - was soll der Geiz?

Reicht ja ne github.io subdomain auch ^^

javarun.de :wink:

Also:

  • Mein Projekt heißt jetzt “fjorum”. Je öfter ich es sage, um so besser gefällt es mir. fjorum, fjorum, fjorum, fjorum, fjorum, fjorum, fjorum, fjorum, fjorum, fjorum, fjorum…
  • die Packagestruktur u.s.w. wurde entsprechend angepasst
  • die DB ist auf postgresql umgestellt, Hibernate läuft nach etwas Gefriemel damit
  • muss mir noch überlegen, wie ich die DB-Struktur ins Projekt packe. Am Anfang vielleicht einfaches SQL-Skript, später vielleicht Liquibase oder so
  • ich klaue mir gerade Code für eine rudimentäre Nutzerauthentifizierung/-authorisierung
  • sobald letztere läuft, mache ich mich an den Foren-Teil

Hast du mal über flyway nachgedacht? Ich nutze es seit kurzem und bin begeistert.

Kenne ich noch nicht, danke für den Tipp!

Mkay, langsam raffe ich, wie das mit den Nutzern funktionieren soll. Login funktioniert schon ein wenig, ich denke Logout, Registrieren und Passwort-Vergessen-Funktion ist mehr oder weniger Formsache (wenn der Mailer mitmacht). Wenn das steht, sollte ich nochmal kurz über die allgemeine Strukturierung nachdenken. Dann kann ich endlich anfangen, an den eigentlichen Foren-Funktionen rumzubasteln.

An CSRF-Protection hast du schon gedacht?

Danke für den Hinweis!

Aktuell ist die noch nicht drin, aber es scheint kein Problem zu sein, das einzubauen, siehe https://github.com/ninjaframework/ninja/issues/23 und https://github.com/ninjaframework/ninja/pull/302

Zur Zeit will ich ja erst einmal “etwas sehen”, bevor ich mich um sowas kümmere, aber ich packe es auf die Todo-List, damit es nicht untergeht.

Ich habe das WE nochmal ein wenig mit Spark herumgespielt. Ist doch deutlich weniger als bei Ninja dabei, aber ich denk, ich habe dabei einiges gelernt.

Werde mit Ninja weitermachen, bin aber stark versucht, Bootstrap durch Foundation zu ersetzen.

Und mal einfach so in den Raum geworfen: Spricht etwas gegen ein Forum mit einem Menü links statt oben? Habe ich noch nie bei einer Forensoftware gesehen, fände ich aber chic.

bei den heutigen Breitbildmonitoren mit auf vielen News-Seiten links und rechts je ein Drittel leer bietet sich das an,
hier im Forum kann man die volle Breite nutzen für lange Zeilen, aber verzichtbar für Vorteil Menü an der Seite,
für Normalmontitore, gar senkrechte Tablets/ Phones geht das natürlich nicht, da besser Wahl in Einstellungen überlassen, auf Umgebung achten

ich habe mich ja auch hier im Forum schon beschwert wenn das Logo (+ Rest Menü usw.) in jedem neu geöffneten Tab oben 30% wegnimmt,
AdBlock sei gedankt zur Korrektur

falls nicht gleich mitgeplant dann ruhig auch an feststehendes Menü zumindest denken,
wäre gut, den ‚Nach oben‘-Button einzusparen weil oben schlicht nichts ist, auch nicht oben links erst das Menü, sondern immer links Zugriff auf alles:
auf Thementitel, Link zur Area, Seite x/y/ z des Themas-Navigation, ‚Neue Beträge‘, Suche usw., eben das Menü :wink:


schon bekannt, aber ich werfe es nur nebenbei auch wieder in den Raum:

  • weitgehende Unabhängigkeit von jonglierten Frameworks
    → alles wichtige am Forum in einem von der Präsentation unabhängigen Kern, Vewaltung von Usern, Reaktion auf neue Postings, Suche,
    Zusammenstellung von ‚Neue Beiträge‘ usw., funktioniert genauso mit JFrame, egal ob und wie dort Menü angeordnet ist

Wobei man bei mobilen Seiten auch das Menü ausgeklappt haben kann (so wie man es von Apps [zumindest unter Android] gewohnt ist). Von horizontalen Menüs rate ich i.d.R auch immer ab, da man sehr leicht Platzprobleme bekommen kann. Wenn man aber davon ausgehen kann, dass es nur (sehr) wenige Menüpunkte sind, finde ichs chicer. Bei einer Forensoftware kann ja aber beides vorkommen. Deswegen würde ich hier mit Template-Unterstützung arbeiten. So kann dann jeder Betreiber für sich entscheiden, wie er es haben möchte.

Moin,

ich hab zwischenzeitlich auch etwas über das Thema nachgedacht und ein Proof-of-Concept gedengelt. Ausprobieren wollte ich vor allem eine möglichst reibungslose zertifikatsbasierte Registrierung, bei dem der Nutzer, beim Absetzen seines ersten Beitrages nicht gestört wird.

Auf der Serverseite läuft bei mir ein Tomcat mit Guice und JPA. Auf der Clientseite JavaScript mit jQuery, bbCodeParser und SyntaxHighlighter. Der Server schickt im wesentlichen JSON über eine Websocket an den Client. Erst dort werden die BBCode Elemente aufbereitet und dargestellt. Über die Websocket wird die Seite auch aktuell gehalten, so das ein reload unnötig wird.

Während der Nutzer seinen Beitrag verfasst, gibt es unterhalb des Eingabefeldes eine live Preview. Diese ist rein lokal. Sofort übertragen wird lediglich eine Änderung des gewünschten Nutzernamens, damit dieser auf dem Server reserviert werden kann.

Wenn der Nutzer seinen Beitrag absendet, erzeugt der Browser einen neuen SSL-Schlüssel und das zugehörige Zertifikatsrequest. Dieses wird vom Server signiert und zurück an den Browser geschickt. Mit diesem Zertifikat kann der Nutzer sich beim nächsten Besuch der Seite automatisch anmelden. Funktionieren sollte das mit allen Browsern die das HTML5 keygen Tag unterstützen. Für den IE ist eine Sonderlösung eingebaut. Gelingt das Ausstellen des Zertifikates nicht, wird als Anonymous gepostet.

Eine öffentliche Instanz zum Ausprobieren gibt es hier: https://mschorn.net/board/ (limitiert auf einen Thread)

Den Sourcecode gibt es hier. Aber es ist halt ein Proof-of-Concept und es besteht die Gefahr das man sich anschließend die Augen auskratzen möchte.

Gruß
Fancy

Mal wieder eine Rückmeldung. Ja, ich werkele weiter, die eigentliche Forenseite macht langsam Fortschritte, aber etwas langsamer als gedacht. Außerdem denke ich, dass ich noch ein wenig über die generelle Struktur des Projekts nachdenken sollte, zur Zeit ist da etwas Wildwuchs.

Außerdem renne ich hin und wieder in Probleme mit Transaktionen - keine Ahnung, ob das ein spezifisches Problem mit Ninja ist, oder ich einfach zu doof bin, es richig zu machen.

Wird also alles noch ein wenig dauern. Vielleicht kann ich Ostern etwas schneller vorankommen.

@Marco13 , Du hattest glaube ich in meiner Variante einen Link zum Thema Live Preview gepostet? Den Link hab ich gefunden (;)), aber lesen konnte ich ihn nicht, da das Thema nicht öffentlich ist. Je nach Inhalt, vielleicht wäre zumindest die Quintessenz dessen auch hier im Thread interessant?

Ansonsten lässt sich meine Variante noch nicht mal mehr deployen. Seit dem letzten OpenJDK Update startet die H2 Datenbank nicht mehr. Nicht sehr motivierend.

Viele Grüße
Fancy

@Fancy Sorry, das war ein Thread wo “Funktionswünsche für Forensoftware” gesammelt wurden, und so eine Live-Vorschau war ein Punkt, den ich da noch erwähnt hatte.

Okay, damit ich vorankomme, habe ich erst mal der User-Klasse ein Mod- und ein Adminfeld verpasst. Latürnich muss das später ordentlich durch Rollen und Permissions ersetzt werden.

Habe auch Filter geschrieben, sehr praktisch.

Damit bleiben nur drei offene Punkte als Nahziel:

  • Security: Nutzerregistrierung, Password vergessen, Passwort ändern
  • Erste krude Implementierung von Beitragseingabe
  • Integration des DB-Schemas

Es ist alles noch sehr primitiv und potthäßlich. Insbesondere bei der Web-Optik (insbesondere Bootstrap) und der Security bin ich nicht so fit, und die Kommunikation Frontend <-> Backend kann sicher auch noch vereinfacht werden.

Auch wenn es noch nicht ganz funktionsfähig ist, hier das Repo:

Also schaut rein und meckert los (mitmachen wäre natürlich noch besser).

Die Postgres-DB muss man selber anlegen. Der DB-Name muss fjorum sein, und es muss auch ein Nutzer dieses Namens und Passworts mit Schreibrechten angelegt werden. Dann fjorum_db.sql drüberlaufen lassen (hab’s aber nur generiert, nicht getestet). Dann kommt man mit admin/admin auf alle Funktionen.

Habe es ein wenig überflogen

Was mich etwas verwundert hat ist das package com.google.inject verwendet wird.
Hier hätte ich möglichst javax.inject verwendet. Guice sollte mit beidem umgehen können. Bis auf ein paar Ausnahmen wie …persist.Transactional.

In ForumController wird z.B. javax.inject.Inject verwendet.

Bei den message.properties ist noch ein Mischmasch aus Deutsch und Englisch zu finden. Evtl. gleich ein _de und _en -File anlegen.

Wäre util.UserMailer nicht eher im package services zu erwarten?

[QUOTE=Unregistered]Habe es ein wenig überflogen

Was mich etwas verwundert hat ist das package com.google.inject verwendet wird.
Hier hätte ich möglichst javax.inject verwendet. Guice sollte mit beidem umgehen können. Bis auf ein paar Ausnahmen wie …persist.Transactional.

In ForumController wird z.B. javax.inject.Inject verwendet.
[/quote]

Mir war aufgefallen, dass ein Mischmasch geherrscht hat, und dann erst mal einheitlich Guice verwendet, weil das wie erwähnt eben einige Annotations mehr hat. Wenn es wirklich keinen Unterschied macht, wäre javax.inject tatsächlich besser.

Ich war da nur etwas vorsichtig, weil ich weiß, dass es bei den Spring-Annotationen subtile Unterschiede zu javax.inject gibt, und nicht wusste, wie es bei Guice aussieht.

Bei den message.properties ist noch ein Mischmasch aus Deutsch und Englisch zu finden. Evtl. gleich ein _de und _en -File anlegen.

Ja, das ist auch der Plan.

Wäre util.UserMailer nicht eher im package services zu erwarten?

Stimmt. Der Code basiert auf GitHub - raphaelbauer/ninja-casino: authentication and authorization for ninja web framwork (was ich aber so nicht verwenden konnte), und ist noch nicht vollständig angepasst.

Danke für die Hinweise!