mk17_haushaltsplan
zur Hauptseite der TYPO3-Entwicklung

 

Modulübergreifende Projektarbeit

comjob – WEB 2/13 – Matthias Kutzner

Im Rahmen einer modularen Fortbildung bei der comjob GmbH wird die
Aufgabe zur Erstellung einer umfangreichen Webanwendung gestellt.

Thema der Projektarbeit

Zur Bewältigung des Alltags sind unter anderem mannigfaltige, einmalige oder
ständig wiederkehrende Arbeiten im Haushalt zu erledigen.
Ob nun alleine, als Paar, mit der Familie oder in einer WG lebend, die Aufgaben
sollten bewusst, deren Fälligkeit bekannt und deren Ausführung ausgewogen
aufgeteilt werden.

Ziel der Anwendung

Ziel der Webanwendung ist die Aufnahme, Auflistung und Zuordnung von
Aufgaben rund um den Haushalt.
In verschiedenen Übersichten soll es möglich sein, alle erfassten Aufgaben
nach vielfältiger Filterung beliebig sortiert auf PC, Tablet oder Smartphone
anzuzeigen und deren Abarbeitung systematisch zu speichern.
Der modulare Aufbau der Anwendung soll es ermöglichen, die Basisfunktionen
zukünftig beliebig um weitere Features zu erweitern.

Grobplanung

Die Anwendung soll auf Basis des Content-Management-Systems TYPO3
realisiert werden.
Zur Ein- und Ausgabe der Datensätze wird ein mit CSS-StyleSheets formatiertes
Template gestaltet, und in TYPO3 eingebunden.
Noch ist unbestimmt, ob die Benutzerinneneingaben clientseitig mit JavaScript
verifiziert werden, oder erst nach Eingang mit PHP auf dem Server, oder
beides.
Die Daten werden in der MySQL-TYPO3-Datenbank in mehreren zusätzlichen
Tabellen abgelegt. Aus Performancegründen wäre es in einer späteren
Projektphase denkbar, diese Tabellen in eine separate Datenbank zu geben.
Die entsprechenden Interaktionen zwischen Benutzereingaben/-abfragen und
der Datenbank werden mit TypoScript realisiert.
Grundsätzlich muss sich eine Benutzerin zunächst registrieren, und es ist
immer ein LogIn erforderlich, um auf die entsprechenden Datensätze zugreifen
zu können.
Zudem soll es einen Demo-Modus geben, der die Anwendung exemplarisch
erklärt und zum Ausprobieren verfügbar macht

Feinplanung

Zunächst werden die beteiligten Objekte der Anwendung definiert.
Zum einen gibt es ganz konkrete Datensätze, die ihre Abbildung je in einer
Datenbanktabelle finden, zum anderen gibt es interaktive Ansichten zu diesen
Tabellen und Darstellungen der Tabellenwerte, sowohl für die einzelnen
Tabellen als auch über mehrere Tabellen zugleich.
Im folgenden beschreibe ich die erforderlichen Objekte mit ihren Attributen
und den geplanten Ansichten dazu.
Die Tabellenstrukturen werden folgenderweise beschrieben:
Beispiel: id - Feldname
integer – primaryKey – autoIncrement - Feldtyp u. -merkmale
Primärschlüssel - Kommentar

Aufgaben - Datenbanktabellen

Tabelle zu Aufgaben

Ein Aufgabentupel besteht aus folgenden Feldern und wird in der Tabelle
tasks {Bekannte Aufgaben} abgelegt werden:

  1. id
    integer – primaryKey – autoIncrement
    Primärschlüssel
     
  2. entry_date
    timestamp - CURRENT_TIMESTAMP
    Erfassungsdatum
     
  3. typist_id
    integer – foreignKey [helper::id]
    ID der Person, welche die Aufgabe erfasste
     
  4. lastmod_date
    timestamp – null
    Datum der letzten Änderung des Aufgaben-Datensatzes
     
  5.  modder_id
    integer – null – foreignKey [helper::id]
    ID der Person , welche die Aufgabe änderte
     
  6. userrooms_id
    integer – foreignKey [userrooms::id]
    ID des Raumes zu der die Aufgabe gehört
     
  7. description
    varchar(5000)
    Beschreibungstext der Aufgabe
     
  8. cycle
    integer
    Periode der Aufgabenwiederholung in Tagen
     
  9. shorty
    varchar(50)
    Kürzel zur Aufgabe für die Anzeige, z.B. in Select-Feldern
Tabelle zur Aufgabenerledigung

Ein Aufgabenerledigungstupel besteht aus folgenden Feldern, die in der Tabelle
tasks_done {Aufgabenerledigung} abgelegt werden::

  1. id
    integer – primaryKey – autoIncrement
    Primärschlüssel
     
  2. tasks_id
    integer – foreignKey [tasks::id]
    ID der Aufgabe
     
  3. adopter_id
    integer – null - foreignKey [helper::id]
    ID der Person , welche die Aufgabe übernimmt
     
  4. transfer_date
    timestamp – null
    Datum der Aufgabenübernahme
     
  5. status
    boolean – Erledigt (true) | Offen (false)
    Status der Aufgabe
     
  6. finish_date
    timestamp – null
    Erledigungsdatum
     
  7. finisher_id
    integer – null - foreignKey [helper::ID]
    ID der Person , welche die Aufgabe erledigte
     
  8. active
    boolean
    Aktivitäts-Status der Aufgabe

Aufgaben - Views

Hinsichtlich der Aufgaben gibt es folgende Ansichten

  • Alle Aufgaben
  • Überfällige Aufgaben
  • Aufgaben der kommenden drei | X Tage
  • Aufgaben der laufenden | kommenden | vergangenen Woche
  • Aufgaben bis Monatsende
  • Aufgaben des letzten Monats
  • tägliche | wöchentliche | monatliche Aufgaben
  • viertel- | halb- | jährliche Aufgaben
  • Neue Aufgabe anlegen
  • Aufgabe anpassen
  • Aufgabe de- | reaktivieren

Zudem soll es immer möglich sein, die jeweilige Aufgabenansicht bezüglich des
Standortes oder Raumes oder Mitmachers auszufiltern.


 

28.11.2017
Hier endet momentan die Formatierungsanpassung des zugrundeliegenden Textes
aus dem pdf-Dokument für die Onlineversion. Work in progress . . .

 


Standorte

Ein Standorttupel besteht aus folgenden Feldern, die in der Tabelle
locations {Die Wirkungsstätten} abgelegt werden::
1. id
integer – primaryKey – autoIncrement
Primärschlüssel
2. street
varchar (100) - null
Straße
3. number
varchar (50) – null
Hausnummer / Zusatz
4. city
varchar (100) – null
Stadt/Gemeinde
5. postcode
int XXXXX – null
Postleitzahl
6. shorty
varchar (35) - unique
Kürzel des Standorts für die Anzeige, z.B. in Select-Feldern
7. typist_id
integer – foreignKey [helper::id]
ID der Person, welche den Standort erfasste
8. first_date
timestamp - CURRENT_TIMESTAMP
Aufnahmedatum des Standorts
9. active
boolean
Aktivitäts-Status des Standorts
BenutzerStandorte
Ein BenutzerStandorttupel besteht aus folgenden Feldern, die in der Tabelle
userlocations {Benutzer-Wirkungsstätten} abgelegt werden::
1. id
integer – primaryKey – autoIncrement
Primärschlüssel
2. helper_ID
integer foreignKey [helper::id]
BenutzerID
3. locations_ID
integer foreignKey [locations::id]
StandortID
Seite 4 von 11
Hinsichtlich der Standorte gibt es folgende Ansichten
• Alle Aufgaben des Standorts zeigen
• Alle Räume des Standorts zeigen
• Alle Standorte zeigen
• Alle Mitmacher des Standorts zeigen
• Neuen Standort anlegen
• Standort anpassen
• Standort de- | reaktivieren
Mitmacher
Ein Mitmachertupel besteht aus folgenden Feldern, die in der Tabelle
helper {Die Mitwirkenden} abgelegt werden::
1. id
integer – primaryKey – autoIncrement
Primärschlüssel
2. first_name
varchar (100) - null
Vorname
3. last_name
varchar (100) – null
Nachname
4. shorty
varchar (15) - unique
Kürzel
5. birthdate
date – TTMMJJJJ – null
Geburtsdatum
6. first_date
timestamp - CURRENT_TIMESTAMP
Aufnahmedatum
7. password
varchar (15) ???
Anmeldekennwort
Hinsichtlich der Mitmacher gibt es folgende Ansichten
• Alle Aufgaben eines Mitmachers zeigen
• Alle Mitmacher zeigen
• Alle Standorte des Mitmachers zeigen
• Neuen Mitmacher anlegen
• Mitmacher anpassen
Seite 5 von 11
Räume
Ein Raumtupel besteht aus folgenden Feldern, die in der Tabelle
rooms {Räume}abgelegt werden::
1. id
integer – primaryKey – autoIncrement
Primärschlüssel
2. identifier
varchar(100) - unique
Bezeichnung
3. shorty
varchar(15) – null
Kürzel
4. first_date
timestamp - CURRENT_TIMESTAMP
Aufnahmedatum
BenutzerRäume
Ein BenutzerRaumtupel besteht aus folgenden Feldern, die in der Tabelle
userrooms {Benutzer-Räume} abgelegt werden::
1. id
integer – primaryKey – autoIncrement
Primärschlüssel
2. helper_ID
integer foreignKey [helper::id]
BenutzerID
3. userlocations_ID
integer foreignKey [userlocations::id]
BenutzerStandortID
4. rooms_ID
integer foreignKey [rooms::id]
RaumID
Hinsichtlich der Räume gibt es folgende Ansichten
• Alle Aufgaben zu einem Raum zeigen
• Alle Räume anzeigen
• Neuen Raum anlegen
• Raum anpassen
Nachdem diese Tabellen in der Datenbank angelegt wurden, fülle ich sie unter
Zuhilfenahme von phpMyAdmin mit Testdatensätzen.
Seite 6 von 11
template_haushaltsplan.html
Das HTML-Template übernimmt einige zuvor definierte WebPage-Parameter in
eine HTML5-Struktur. Neben Titel, StyleSheet, Überschrift und Fußzeile, auch
einen bedienungsanleitenden Text und die Navigationspunkte.
Die CSS-Eigenschaften werden in der Datei theStyle.css definiert.
Aufgrund der Inkompatibilitäten des IE binde ich auch die JavaScript-Datei
html5shiv.js ein, die ich unter code.google.com/p/html5shim/ auf
Anraten von Herrn Krassa aus dem Internet lud.
Die ausgegebenen HTML-Dokumente validiere ich testweise via
validator.w3.org und jgsaw.w3.org/css-validator/.
Seite 7 von 11
Seite 8 von 11
Seite 9 von 11
Seite 10 von 11
Seite 11 von 11