Table Manager - Ein einfaches Beispiel

Ziel des Tutorials

In diesem Tutorial sollen die Grundlagen vermittelt werden, wie man mittels des Table Mangers eine einfache Adresseverwaltung realisieren kann. Zur Veranschaulichung dient die Redaxo Demo (4.3.x – UTF8), die im Downloadpaket enthalten ist. (Redaxo Version 4.3.2, XForm / Table Manger Version 2.8)

In diesem Besipiel baue ich das Addon “Adressen” aus Peters Tutorial AddOn-Entwicklung in sieben Folgen nach um zu zeigen wie einfach so etwas mit dem Tabellen Manger realisierbar ist.

Peters Addon: Adressen

Peters Addon aus dem o.g. Beispiel dient zur Verwaltung von Adressen die unterschiedlichen Gruppen zugeordnet werden können. Die Eingabe ist sehr übersichtlicch und leicht für den Endbenutzer zu bedienen. Exemplarisch hat Peter eine Möglichkeit für die Ausgabe der Daten beigefügt. Hier nur zwei Screenshots. Wer mehr übner dieses Addon erfahren möchte finde das Tutorial hier und das Addon im Downloadbereich.

Table Manger installieren

Der Table Manger ist als Plugin im Addon XForm zu finden.
Bei den Addons muss muss XForm (1) sowie das Plugin “manager” (2) installiert und aktiviert werden.

Die jeweils aktuelle Version des Addons ist auf der github Webseite zu finden.

Tabellen anlegen

Als nächstes müssen die benötigten Tabellen angelegt werden.
Hierzu wird einfach (im Addon Xform (1) / Table Manger (2)) auf +Tabelle anlegen (3) geklickt.

Für die Verwaltung der Adressen mit der Möglichkeit der Zurodnung zu Gruppen werden zwei Tabellen benötigt.
Eine Tabelle für die Adressen und eine Tabelle für die Gruppen.

Da die Tabelle mit den Adressen mit der Tabelle für die Gruppen verknüpft wird ist es sinnvoll als erstes die Tabelle für die Gruppen anzulegen.

Hier wird nur das Feld Gruppe benötigt.

1 – Priorität
Die Priorität bestimmt die Darstellung der Reihenfolge der Tabellen im Backen (linke Seite).

2 – Name
Interne Bezeichnung der Tabelle (muss eindeutig sein).

3 – Bezeichung
Bezeichnung der Tabele die der Benutzer angezeigt bekommt.

4 – Beschreibung
Hier kann eine Beschreibung eingegeben werden.

5 – aktiv Zugriff übers Backend ist möglich.

6 – In Navigation verstecken
Tabelle wird nicht in der Navigation angezeigt.

7
Nachdem alle Einträge vorgenommen sind müssen diese durch Klick auf “Abschicken” gespeichert werden.

Beim nächsten Reload der Seite wird die angelegte Tabelle in der Linken Navigationsleiste angezeigt (1).

Als nächstes werden die benötigten Felder angelegt.
Hierzu wird bei der gewünschten Tabelle auf “Felder bearbeiten” (1) geklickt.

Klick auf “+Tabellenfeld anlegen” (1)

Es erscheint nun eine Übersicht der möglichen Felder bzw. Feldtypen die zur Auswahl stehen. Häufig benötigte Feldtypen tehen am Anfang unter beliebte Werte.

Für die Bezeichnung der Gruppen wähle ich das Feld “text” (1). einfach draufklicken :-)

An dieser Stelle werden – ähnlioch wie bei der Tabelle – die Eigenschaften des Feldes festgelegt.

*1 – Priorität
Die Priorität bestimmt die Darstellung der Reihenfolge des Feldes.

2 – Name
Interne Bezeichnung des Feldes (muss eindeutig sein).

3 – Bezeichung
Bezeichnung welche der Benutzer angezeigt bekommt.

4 – Beschreibung
Hier kann ein default Wert für das Feld definiert werden.

5 – Nicht in Datenbank speichern
Die Daten werden nicht in der Datenbank gespeichert.

6 – classes
Hier kann dem Feld eine Klasse zugeordnet werden.

7 – In Liste verstecken
Verhindert die Anzeige in der Übersichtsliste.

8 – Als Suchfeld aufnehmen
Felde können von der Suche ausgeschlossen werden.

9 – Speichern
Nachdem alle Einträge vorgenommen sind müssen diese durch Klick auf “Abschicken” gespeichert werden.

Alle benötigten Felder in der Tabelle “gruppe” sind nun angelegt :-)
Durch Klick auf “o Tabelle/n aktualisieren” (1) werden alle vorhandenen Tabellen aktualisert und das Feld steh nun dem Redaktuer zur Verfügung.

Durch Klick auf “o mit Feldlöschung” werden evtl durch vorherige Änderungen vorhandene aber nicht mehr benötigte Felder bei der Tabellenaktualiserung aus der Datenbank gelöscht.

Das Gleiche machen wir jetzt für die Tabelle “Adressen”:

Im Table Manager eine Tabelle anlegen und alle Einstellungen vornehmen.
Hier trage ich die Priorität 10 ein, damit der Eintrag vor dem Feld Gruppen steht.
Der Eintrag wird wieder durch Klick auf “Abschicken” gespeichert.

Jetzt sollte alles wie auf dem nächsten Bild aussehen. Jetzt werden nach und nach folgende (text) Felder angelegt (1):

  • Name
  • Vorname
  • Strasse
  • PLZ
  • Stadt

Das Ergebnis ist in dem nächsten Bild zu sehen:

Als nächstes wird das “select” Feld für den online/offline Status angelegt (hier könnte natürlich auch das Feld “checkbox” benutzt werden”).

In der Übersichtliste der Auswählbaren Felden wird das Feld “select” gewählt (1).

Hier wedren unter “Selektdefinition, kommasepariert” die werdete “online,offline” eingetragen.

Als letztes muss noch das Feld angelegt werden weches die Vernüpfung deer beiden Tabellen schafft.
Hierzu dient das Feld “be_manager_relation' (1).

Name (1) und Bezeichnung (2) des Feldes können frei gewählt werden. In dem Select “Ziel Tabelle” (3) wird die Tabelle ausgewählt aus der sich das Select Feld die Daten holen kann. “Ziel Tabellenfeld zur Anzeige oder Zielfeld” (4) definiert das Feld aus dem die Daten geholt werden. Auch diesen Eintrag bitte wieder mittels “Abschicken” (5) speichern.

Jetzt sind alle nöltigen Tabellenfelder angelegt. Durch Klick auf “o Tabelle/n aktualisieren” (1) werden die Tabellen aktualisiert und die neu angelegten Felder nutzbar gemacht.

Die Einrichtung der Datenbank Tabellen und Feldern ist somit erledigt.

Daten eingeben

Die Eingabe der Daten erfolgt genauso kompfortabel wie bei einem “richtigen” Addon. Zuerst sollten an dieser Stelle Gruppen definiert werden. Einfach im Navigationsbereich auf “Gruppen” (1) klicken und im rechten Bereich “+ hinzufügen” auswählen (2).

Jetzt kann jede Gruppe (einzeln) eingegeben werden. NAch eingabe von einiegen Gruppen sollte es wie folgt aussehen:

Nach der Definition der Gruppen können auf gleicher Art die Adressen eingegeben werden.
Hier sind nur die Select Felder “online/offline” (1) und “Gruppen” (2) zu beachten.

Nachdem eineige Daten eingegenben wurden sollte es ungefähr so aussehen:

Daten ausgeben

Die Datenausgabe erfolgt z.B. mit der rex_sql Klasse (hierzu findet sich ein eigenes Tutorial auf dieser Seite).

Folgend nur ein paar kleine Beispiele. Der Code kann in der Modulausgabe eingetragen werden oder aber auch direkt in einem Template stehen falls gewünscht.

Ausgabe aller Datensätze

<?php
$db_table = "adressen";

$sql = new rex_sql;

$sql->debugsql = 0; //Ausgabe Query

$sql->setQuery("SELECT * FROM $db_table");

for($i=0;$i<$sql->getRows();$i++)
{

echo $sql->getValue("name").', '.$sql->getValue("vorname").'<br/>';
echo $sql->getValue("strasse").'<br/>';
echo $sql->getValue("plz").' '.$sql->getValue("ort").'<br/>';
echo $sql->getValue("gruppe").'<br/>';
echo $sql->getValue("status").'<br/>';
echo '<hr/>';

$sql->counter++;
}

?>

Ausgabe aller Datensätze der Gruppe "Kunden" (ID = 5)

<?php
$db_table = "adressen";

$sql = new rex_sql;

$sql->debugsql = 0; //Ausgabe Query

$sql->setQuery("SELECT * FROM $db_table WHERE gruppe = 5");


for($i=0;$i<$sql->getRows();$i++)
{

echo $sql->getValue("name").', '.$sql->getValue("vorname").'<br/>';
echo $sql->getValue("strasse").'<br/>';
echo $sql->getValue("plz").' '.$sql->getValue("ort").'<br/>';
echo '<hr/>';

$sql->counter++;
}

?>

Ausgabe aller Datensätze der Gruppe "Kunden" (ID = 5) deren Status "online" ist

<?php
$db_table = "adressen";

$sql = new rex_sql;

$sql->debugsql = 0; //Ausgabe Query

$sql->setQuery("SELECT * FROM $db_table WHERE gruppe = 5 AND status = 'online'");


for($i=0;$i<$sql->getRows();$i++)
{

echo $sql->getValue("name").', '.$sql->getValue("vorname").'<br/>';
echo $sql->getValue("strasse").'<br/>';
echo $sql->getValue("plz").' '.$sql->getValue("ort").'<br/>';
echo '<hr/>';

$sql->counter++;
}

?>

Ergebnis