Einladungs-Manager "Come Together"

Motivation

Da es bei unseren Freundeskreis-Treffen immer schwierig ist einen Termin zu finden kam Gerd auf die Idee, ich könnte doch mal so eine Voting-Funktion bauen. Jeder Teilnehmer soll anklicken können, welcher Termine ihr zusagt. Somit hat man eine Übersicht, wann die meisten Freunde Zeit haben.

Ich habe mir überlegt das Thema etwas allgemeiner zu fassen und einen Einladungs-Manager für alle möglichen Zwecke zu bauen. Die Programmiersprache ist php und die Architektur orientiert sich an so neumodischer Technik wie Service Oriented Archicture (SOA) und Asynchronous Javascript and XML (AJAX).

Konzept

Prototyp: Der erste Prototyp des Einladungs-Managers wird noch nicht die AJAX Technik beherrschen und noch nicht in TYPO3 eingebunden sein. Er soll als eigenständige Web-Applikation aufrufbar sein.

Die Eingangsseite fragt nach dem Benutzernamen und evtl. einem Passwort. Damit wird bestimmt, welche Einladungen der Benutzer angezeigt bekommt und ob er selbst Einladungen aussprechen darf. Danach erscheint die zentrale Einladungsübersichts-Seite mit allen für den Benutzer zutreffenden Einladungen. Jede Einladung kann einen Termin haben oder mehrere Termine zur Auswahl anbieten. Jeder Termin hat Auswahl-Buttons für "Nicht möglich", "Vielleicht, nicht gern" und "Ja, möglich". Der aktuelle Stand der zugesagten bzw. abgesagten Teilnehmer kann allen oder nur dem Einladenden angezeigt werden.

Auf einer weiteren Seite können berechtigte Benutzer neue Termineinladungen ausprechen.

Erste Version: Die Erweiterung des Konzepts sieht vor, dass es eine Seite für die Einladungsübersicht und die Erstellung neuer Einladungen gibt. Die Daten werden mittels AJAX Technik in die Seite eingefüllt. So kann sich diese Browser-Anwendung verhalten wie eine lokale Anwendung auf dem Desktop.

Zweite Version: Die nächste Erweiterung sieht vor, dass eine automatische Email-Kommunikation die Teilnehmer über neue Einladungen informiert, den Einladenden über Teilnehmer-Meldungen informiert und schließlich den Teilnehmern den festen Termin mitteilt.

Dritte Version: Als Kür ist dann vorgesehen, dass diese Anwendung in TYPO3 integriert wird. Ob das in Form einer Extension geschehen kann, weiß ich noch nicht. Auf alle Fälle sollen aber die in TYPO3 definierten Teilnehmer in die Anwendung integriert werden und die resultierenden Termine in den Kalender eingetragen werden.

Seiten-Layout

Eingangs-Seite:

Anmeldung mit Name und Passwort (evtl. optional)

Einladungsübersicht-Seite:

Überschrift "Liste der Einladungen für <name>". Jede Einladung hat einen <einladungszweck/titel>, einen Zeitraum für das Voting mit <start-termin> und <end-termin> und einen Einladenden <owner>; um eine Einladung generell abzulehnen gibt es die Checkbox <nicht-interessiert>. Darunter wird der Termin/die Termine angezeigt, mit <datum><uhrzeit>, den Radiobuttons <nein>, <vielleicht> und <ja> und (optional) der Angabe der Anzahl <personen>. Weiterhin werden optional an alle oder nur an den Einladenden die <summe> der Personen zu dem Termin angezeigt und die Liste der <teilnehmer> und deren <voting>.

Einladungserstellungs-Seite:

Zur Erstellung einer Einladung sind folgende Daten zwingend notwendig: <einladungszweck/titel>, <start-termin> und <end-termin> des Votings, mindestend ein Einladungstermin <datum><uhrzeit>, mindestens einen Teilnehmer <name> und dessen <email-adresse>. Weiterhin kann gewählt werden, ob die Gesamtzahl der zugesagten Teilnehmer <summe> für alle Teilnehmer angezeigt wird, ob die Liste der eingeladenen Teilnehmer <teilnehmer> für alle angezeigt wird und ob deren Voting <voting> für alle angezeigt wird.

Tabellen-Layout

Die Daten für die Einladungen, Termine, Votings und Teilnehmer werden in MySQL Tabellen gehalten.

Tabelle Teilnehmer  

Tabelle Einladungen

Tabelle Termine 

Tabelle Voting

 Teilnehmer-ID -->

 Teilnehmer-ID -->

 

 Teilnehmer-ID

 Benutzer

 Einladungs-ID -->

 Einladungs-ID -->

 Einladungs-ID

 Passwort

 Titel

 Termin-ID -->

 Termin-ID

 Vorname

 Beschreibung (opt.)

 Ab-Datum

 Nicht_interessiert

 Name

 Vote-Start

 Ab-Uhrzeit

 Voting

 Email

 Vote-Ende

 Bis-Datum

 

 Darf_einladen

 Teiln_zeigen (opt.)

 Bis-Uhrzeit

 

 

 Votes_zeigen (opt.)

 

 

 

 Anzahl_zeigen (opt.)

 

 

 

 

 

 

 

 

 

 

 

Das Tabellen-Design richtet sich nach der Hauptfunktion der Anwendung, dem Anlisten von Einladungen und dem Voting. Über die Teilnehmer-ID, die zum Start einer Session ermittelt wird, werden in der Tabelle Voting die gelinkten Records der Tabelle Einladungen und die damit verbundenen Records der Tabelle Termine ermittelt. Hieraus wird die vollständige Listenseite für den angemeldeten Teilnehmer aufgebaut.

Beim Voting des Teilnehmers muss lediglich die Tabelle Voting upgedated werden. Auch erweiterte Informationen, wie alle eingeladenen Teilnehmer anzeigen, etc. (soweit sie zur Verfügung stehen) werden in erster Linie über die Tabelle Voting gesteuert.

Die Tabelle Teilnehmer soll später möglichst durch die schon vorhandene Tabelle fe_user ersetzt werden. Das Feld "Darf_einladen" muss dort noch hinzugefügt werden. Es ist die Berechtigung, wer neue Einladungen eintragen darf. Weiterhin kann es noch eine Tabelle Gruppe geben, die Teilnehmer nach ihrer Zugehörigkeit zusammenfasst. Evtl. ist auch dafür eine vorhandene Tabelle verwendbar.

Email-Kommunikation

Zu Mitteilung über die Existenz und den Stand einer Einladung ist eine automatischer Email-Versand vorgesehen.

Neue-Einladung-Mail: Alle eingeladenen Teilnehmer erhalten eine Mail mit dem <einladungszweck/titel>, dem Einladenden <owner>, dem Terminvorschlag oder den Terminvorschlägen <datum><uhrzeit> und einem Link zum Einladungs-Manager.

Neues-Voting-Mail (optional): Der Einladende erhält bei jedem Voting eine Mail mit dem <einladungszweck/titel>, dem Teilnehmer <name>, dem betroffenen Terminvorschlag oder den Terminvorschlägen <datum><uhrzeit>, den getroffenen Votes und einem Link zum Einladungs-Manager.

Ergebnis-Mail: Alle eingeladenen Teilnehmer erhalten eine Mail mit dem <einladungszweck/titel>, dem Einladenden <owner>, dem endgültigen Termin <datum><uhrzeit> und einem Link zum Einladungs-Manager. Optional: keine Ergebnis-Mail senden oder nur an Teilnehmer, die mit abgestimmt haben.

TYPO3 Anschluß

Da in vielen Fällen die Teilnehmer und Einladenden in TYPO3 schon als Benutzer eingetragen sind, sollen deren Daten nicht noch einmal erfasst werden müssen, sondern direkt für den Einladungs-Manager verwendet werden können.

Voraussetzung, einen TYPO3 Benutzer zu erkennen, ist, dass dieser sich angemeldet hat. Dann bekommt er beim Eintragen einer Einladung auf Grund seiner Gruppenzugehörigkeit die Teilnehmer aus dem Personenkreis der Gruppe zur Auswahl angeboten.

Wenn ein Termin endgültig feststeht, kann er automatisch in einen TYPO3 Kalender eingetragen werden. Hierfür ist auch die Berücksichtigung der Gruppe erforderlich, damit nur deren Mitglieder den Termin sehen können.