Kapitel 22 Eine eigene Komponente
Komponenten sind wesentlich komplexere Elemente als Mambots oder Module. Neben der Darstellung im Frontend gibt es auch im Backend einen Manager und ein eigenes Menü. Zudem greifen Komponenten auf die Datenbank zu, so dass auch hier eine Schnittstelle geschaffen werden muss. Daher besteht eine Komponente in der Regel auch aus mehreren Dateien. Wir wollen im Folgenden eine Komponente entwickeln, in der Tanzpaare zusammen mit einem internen Turnierranking gespeichert werden können, so dass man sich immer die aktuelle Vereinswertung ansehen kann. Dazu benötigen wir die folgenden Dateien:
|
pair_rank.xml
Daten für die Installation. |
|
install.pair_rank.php
Ein zusätzliches Installationsskript. |
|
uninstall.pair_rank.php
Zusätzliche Information für die Deinstallation. |
|
pair_rank.php
Ist für die Darstellung im Frontend zuständig. |
|
admin.pair_rank.php
Enthält die Programmlogik für das Backend. |
|
admin.pair_rank.html.php
Ist für die Darstellung im Backend zuständig. |
|
pair_rank. class.php
Interface für den Zugriff auf die Datenbank. |
|
toolbar.pair_rank.php
Einstellungen für die Toolbar. |
|
toolbar.pair_rank.html.php
Ist für die Darstellung der Toolbar zuständig. |
Wie Sie sehen, folgen die Dateinamen einem Schema. Die Komponente hat den Namen pair_rank. Vor diesen Namen werden, durch einen Punkt getrennt, die Aufgaben spezifiziert, und nach dem Namen steht noch ein html bei den Dateien, die für Darstellungen zuständig sind. Eine Ausnahme bildet die Datei für die Frontend-Darstellung. Die Dateien mit html, class und install bzw. uninstall im Namen sind optional, helfen uns aber, den Code übersichtlich zu halten.
Bevor wir beginnen, sollten wir uns noch Gedanken über den Aufbau unserer Datenbasis machen. Die Tabelle #__pair_rank soll die folgenden Spalten enthalten:
Tabelle 22.1 Die Spalten der Datenbankeinträge
Spalte
|
Wert
|
Beschreibung
|
id
|
Integer
|
Eine fortlaufende Nummer zur eindeutigen Identifizierung des Datensatzes
|
pair
|
Text
|
Die Namen der Tänzer
|
points
|
Integer
|
Die Anzahl der Punkte
|
published
|
Small Integer
|
1 für publiziert, 0 für versteckt
|
22.1 Die Installationsdateien
 
Die XML-Datei, die die Installation beschreibt, enthält einige Tags, die wir bisher noch nicht verwendet hatten.
1 <?xml version="1.0" encoding="UTF-8"?>
2 <mosinstall type="component">
3 <name>pair_rank</name>
4 <files>
5 <filename>pair_rank.php</filename>
6 </files>
7 <install>
8 <queries>
9 <query>DROP TABLE IF EXISTS '#__pair_rank';</query>
10 <query>CREATE TABLE '#__pair_rank' (
11 'id' INT NOT NULL AUTO_INCREMENT,
12 'pair' TEXT NOT NULL,
13 'points' SMALLINT NOT NULL,
14 'published' TINYINT(1) NOT NULL,
15 PRIMARY KEY ('id') );
16 </query>
17 </queries>
18 </install>
19 <uninstall>
20 <queries>
21 <query>DROP TABLE IF EXISTS '#__pair_rank';</query>
22 </queries>
23 </uninstall>
24 <installfile>
25 <filename>install.pair_rank.php</filename>
26 </installfile>
27 <uninstallfile>
28 <filename>uninstall.pair_rank.php</filename>
29 </uninstallfile>
30 <administration>
31 <menu>Pair Rank</menu>
32 <submenu>
33 <menu act="all">Manage</menu>
34 </submenu>
35 <files>
36 <filename>admin.pair_rank.php</filename>
37 <filename>admin.pair_rank.html.php</filename>
38 <filename>pair_rank.class.php</filename>
39 <filename>toolbar.pair_rank.php</filename>
40 <filename>toolbar.pair_rank.html.php</filename>
41 </files>
42 </administration>
43 </mosinstall>
Listing 22.1 pair_rank.xml
Zu den Zeilen 1 – 6 ist lediglich anzumerken, dass der Eintrag type in Zeile 2 natürlich den Wert component haben muss. Die Zeilen 7 – 18, die mit <install>-Tags umschlossen sind, beschreiben in den <query>-Tags, welche SQL-Statements bei der Installation ausgeführt werden sollen. Damit werden die nötigen Datenstrukturen für unsere Komponente angelegt. In Zeile 9 wird die Tabelle gelöscht, falls sie bereits existiert. Das bedeutet auch, dass bei einer Neuinstallation von pair_rank die alten Daten verloren gehen. In den Zeilen 10 – 15 wird die Tabelle mit den oben besprochenen Spalten angelegt. In den Zeilen 19 – 23 (im <uninstall>-Tag) legen wir fest, was bei einer Deinstallation in der Datenbank passieren soll. In unserem Fall wird die Tabelle gelöscht (Zeile 21). Wenn Sie bei der Installation bzw. Deinstallation zusätzliche Aktionen ausführen möchten, so können Sie in den Tags <installfile> bzw. <uninstallfile> Dateien angeben, die den entsprechenden Code enthalten (Zeilen 24 – 26 bzw. 27 – 29). Damit können Sie beispielsweise auf Wunsch Beispieldaten installieren. Der Bereich <administration> legt die Daten für das Backend fest (Zeilen 30 – 42). Bestimmen Sie zunächst den Namen des Eintrags im Components-Menü mit <menu> (Zeile 31) und dann im <submenu>-Tag die Untermenüs (Zeilen 32 – 34). Hier können Sie im Attribut act einen Wert angeben, der später beim Aufruf an die Komponente übergeben wird. Danach folgt nach bekanntem Schema eine Liste der Dateien, die zur Administrationsseite der Komponente gehören (Zeilen 35 – 41).
Das zusätzliche Installations- und Deinstallationsskript sieht in unserem Fall sehr bescheiden aus und könnte zur Not auch weggelassen werden. Dann müssen Sie allerdings auch die Zeilen 24 – 29 aus der XML-Datei löschen.
1 <?php
2 function com_install() {
3 echo "Schön, dass Sie unsere Komponente benutzen";
4 }
5 ?>
Listing 22.2 install.pair_rank.php
Wichtig ist lediglich, dass Ihr Skript bei der Installation eine Funktion com_install enthält. Für die Deinstallation können Sie den gleichen Code verwenden. Die Funktion muss hier com_uninstall heißen.
|