Modulstruktur

Bevor nun auf die einzelnen Komponenten des Moduls eingegangen wird, soll ein kurzer Blick auf die Dateistruktur des Moduls geworfen werden.
Nach dem Download des Moduls und Entpacken der Archivs trifft man auf die bekannte Struktur:

 

  • modul_votings

    • admin

      • elemente

        • class_element_votings.php
    • class_modul_votings_admin.php
  • installer

    • installer_votings.php
  • lang

    • admin

      • modul_elemente

        • lang_votings_de.php
        • lang_votings_en.php
      • modul_votings

        • lang_votings_de.php
        • lang_votings_en.php
    • portal

      • modul_votings

        • lang_votings_de.php
        • lang_votings_en.php
  • portal

    • elemente

      • class_element_votings.php
    • pics

      • kajona

        • icon_progressbar.gif
    • class_modul_votings_portal.php
  • system

    • config

      • modul_votings_id.php
    • class_modul_votings_answer.php
    • class_modul_votings_voting.php
  • templates

    • modul_votings

      • votings.tpl

Die relevanten Dateien werden nun im Einzelnen behandelt, jedoch nur ausschnittsweise. Die Reihenfolge entspricht dabei auch der vorgeschlagenen Reihenfolge beim Erstellen eines neuen Moduls.

Votings: Allgemeine Anforderungen

Wie bei jedem Projekt sollte vor der eigentlichen Implementierung definiert werden, was das spätere Modul an Funktionen bieten soll, sowie wie dieses aufgebaut sein soll.

Im Falle der Votings wird von den nachstehenden Anforderungen ausgegangen:

  • Über das Backend kann ein Voting angelegt werden

    • Ein Voting besteht aus einem Text (Thema)
    • Für die Abstimmung kann ein Start- und ein Ende-Datum definiert werden
    • Über die Rechtekonfiguration kann definiert werden, wer Abstimmen darf
    • Per Default dürfen Gäste abstimmen
  • Ein Voting kann aus einer beliebigen Anzahl an Antworten bestehen

    • Jede Antwort besteht aus einem Text
    • Die Reihenfolge der Antworten soll sortierbar sein
  • Jedes Voting kann im Portal dargestellt werden

    • Es kann zwischen der Darstellung der Abstimmung und der Ergebnisse unterschieden werden
    • Eine getätigte Abstimmung soll per Cookie gespeichert werden, dann ist ein erneutes Abstimmen nicht möglich
    • Die Darstellung soll komplett auf Templates basierend erfolgen

Grafisch aufbereitet ergeben sich also als Anforderungen an Entitäten:

Als Reihenfolge bei der Erstellung des Moduls hat sich bisher bewährt:

  1. Installer
  2. Model-Klassen (Entity-Klassen / Beans), hier: Voting und Antwort
  3. Admin-Klassen
  4. Admin-Elemente
  5. Portal-Elemente
  6. Portal-Klassen
  7. Feinarbeit :)

Parallel hierzu werden die Dateien mit den Texten und die Templates aufgebaut.