Plugins und Anwendungen erstellen
Allgemeines
Im Yana Framework werden alle Webanwendungen als "Plugins"
bezeichnet. Komplexere Anwendungen können aus mehreren Subsystemen bestehen.
Diese Subsysteme sind jeweils verschiedene Plugins, die Hand in Hand arbeiten.
Einige dieser "Subsysteme" sind bereits vorbereitet implementiert und
müssen lediglich verwendet werden.
Auf diese Weise bleiben dem Programmierer viele Arbeiten
erspart. Sie müssen sich beispielsweise keine Sorgen um die
Passwortabfrage machen. Es gibt bereits Plugins, welche das zuverlässig
für Sie erledigen. Auch das Administrationsmenü müssen sie nicht neu schreiben,
sondern es einfach nur verwenden. Falls eine Komponente nicht gefällt, kann sie
ausgetauscht oder entfernt werden. Falls eine Funktion fehlt, kann sie
hinzugefügt werden, ohne andere Plugins verändern zu müssen.
Das Schreiben eines neuen Plugins wird einfacher unter
Verwendung des YANA-SDK. Dabei handelt es sich um einen Assistenten,
welcher alle erforderlichen Informationen abfragt und dann
vollautomatisch eine neue Anwendung für Sie erstellt. Diese müssen Sie
lediglich noch Ihren Bedürfnissen anpassen.
Software Development Kit (YANA-SDK)
Das SDK unterstützt den Entwickler durch
eine grafische Oberfläche. Die grafische Oberfläche führt dabei durch
vier Schritte, in denen Aussehen, Verhalten und allgemeine
Informationen zur Anwendung und zum Urheber bereitgestellt werden
können.
Es wird dringend empfohlen, das SDK nur auf Webservern zu
installieren, welche für den öffentlichen Zugriff gesperrt sind.
Falls Sie eine Installationsanleitung benötigen, finden Sie diese im Kapitel
"Software Development Kit / Installation".
Schritt 1: allgemeine Informationen
Vorbereitend müssen zunächst allgemeine Informationen gegeben
werden. Siehe Abbildung oben.
- Name der
Software:
- ein beliebiger Text.
- Beschreibung:
- ein beliebiger Text. HTML ist NICHT gestattet.
- Grafik:
- wählen Sie aus der Liste ein Icon, welches die Anwendung
repräsentiert
Einige Informationen zu Ihrer Person:
- Autor:
- Ihr Name
- Mailadresse:
- Adresse für Rückfragen.
Sie können das Feld frei lassen, falls Sie möchten.
- Homepage für Updates:
- eine gültige URL. Wenn Sie
eine Webseite haben, auf der Sie Updates für diese Anwendung
bereitstellen möchten, geben Sie hier die Adresse an.
- Priorität der Ausführung:
- Dieser Wert bestimmt, in welcher Reihenfolge Plugins
ausgeführt werden. Sicherheitsrelevante Plugins (Passwortabfragen etc.)
sollten eine höhere Priorität haben, dadurch werden sie ausgeführt,
bevor andere Plugins an der Reihe sind. Andere Plugins
(Log-Files etc.) sollten eine niedrigere Priorität haben.
- Typ der Anwendung:
- Gültige Werte für den Typ der Anwendung sind:
"default", "primary", "config", "read", "write", "security".
- die Mitglieder der Gruppe "security" werden immer
ausgeführt und haben eine höhere Ausführungspriorität als alle anderen
Plugins. Diese Gruppe dient für Plugins zur Nutzerauthentifizierung.
- Die Gruppe "config" behandelt ausschließlich Ereignisse
vom Typ "default", "security" oder "config". Sie ist gedacht für
Plugins welche Funktionen zum Editieren von Konfigurationsdateien
bereitstellen. Üblicherweise dienen diese Plugins als Erweiterungen
anderer Plugins. Es besteht also eine Abhängigkeit. Diese Abhängigkeit
kann unter anderem dadurch ausgedrückt werden, indem definiert wird,
dass beide Plugins zum gleichen Paket gehören.
- Die Gruppe "write" behandelt Ereignisse vom Typ "write",
"security" oder "default". Sie ist gedacht für Plugins, welche
ausschließlich Schreibzugriffe auf dem Dateisystem oder einer
Datenbank durchführen. Diese Gruppe wird erfahrungsgemäß in der Praxis
eher selten verwendet. Sie ist aus Gründen der Vollständigkeit hier
erwähnt.
- Die Gruppe "read" behandelt Ereignisse vom Typ "read",
"security" oder "default". Sie ist gedacht für Plugins, welche
ausschließlich Lesezugriffe auf dem Dateisystem oder einer Datenbank
durchführen. Diese Gruppe wird eher selten verwendet.
- Die Gruppe "primary" behandelt alle Ereignisse außer
"config". Sie ist gedacht für Plugins welche als Hauptprogramme
fungieren.
- Die Gruppe "default" behandelt alle Ereignisse
außer solche vom Typ "security", "config" und "primary". Sie ist
gedacht für "sonstige" Plugins, beziehungsweise als Lösung für
Entwickler, welche sich unsicher darüber sind, in welche Gruppe sie Ihr
Plugin einordnen sollten.
- benötigt das Plugin:
- ID-Kennung eines Plugins, welches
erforderlich ist, damit dieses funktioniert. Benutzen Sie dieses Feld,
wenn Sie eine bestehende Anwendung durch neue Funktionen erweitern
wollen. Das Auswahlmenü dient nur als Hilfestellung. Es muss nicht
unbedingt eine der IDs dieses Menüs verwendet werden.
- gehört zu Paket:
- benutzen Sie dieses Feld um auszudrücken, dass
zwei Plugins zusammen gehören. Tragen Sie dazu in dieses Feld das
gemeinsame "Package" ein, zu dem beide gehören.
Schritt 2: Schnittstelle editieren
Der zweite Schritt erlaubt dem Entwickler eigene Aktionen zur
die Schnittstelle hinzuzufügen.
Falls Sie nur eine einfache
Datenbankanwendung erstellen wollen, können Sie diesen Schritt übergehen.
Die meisten Standardaktionen, wie das Anzeigen von Datenbankeinträgen, Suche,
Editieren, Löschen oder Einfügen, müssen nicht von Hand
geschrieben werden. Diese Aktionen erzeugt das SDK automatisch.
Wenn Sie andere Aktionen festlegen möchten, können Sie hier
deren Schnittstelle definieren. Dazu können Vorlagen verwendet werden,
welche das SDK vorgibt. Ein händische Erstellung ist ebenfalls möglich.
Die Schnittstellen können auch nachträglich von Hand verändert werden.
Für einige Standardaktionen gibt es Vorlagen, welche benutzt
werden können. Schauen Sie in die Auswahlliste. Wenn eine Option
ausgewählt wurde, erscheint zum Vergleich eine Liste der erzeugten
Aktionen. Sie können sich die gesamte Schnittstelle anschauen, indem
Sie die Option "Schnittstelle von Hand nachbearbeiten" auswählen.
Eine Schnittstelle enthält folgende Informationen:
- Name der Aktion:
- Name der Funktion (beliebig). Es sind nur
Zeichen von A-Z und 0-9 sowie "_" erlaubt. Schauen Sie sich zum
Vergleich die Beispiele an.
- Modus:
-
sollte üblicherweise "Standard" sein. Der abgesicherte Modus ist für
den Fall, dass Sie absichtlich Default-Werte verwenden wollen oder
müssen.
- Templates:
- ID-Kennung des Templates, welches verwendet werden
soll. Diese Kennung wird im Skin festgelegt. Schauen Sie sich die
Skin-Dateien im Verzeichnis "skins/default/*.config" an, oder benutzen
Sie das Auswahlmenü als Beispiel!
- Zugriffsbeschränkung:
- legt fest, welche Rechte ein
Besucher haben muss, damit er diese Aktion aufrufen kann.
Diese Option dient zur Kontrolle, beziehungsweise als
Alternative Eingabeoberfläche für erfahrene Nutzer. Sie sehen alle
definierten Aktionen und können Änderungen vornehmen.
Vorsicht! Fehler können dazu führen, dass das Plugin nicht
korrekt erzeugt werden kann.
Schritt 3: GUI generieren
Es kann für Datenbankanwendungen automatisch eine GUI
generiert werden. Dazu wird eine Strukturdatei benötigt, welche die
Datenbank beschreibt. Aus den Informationen dieser Datei erzeugt das SDK
für jede Tabelle automatisch passende Template-Dateien, sowie die dazu
passenden Aktionen und erzeugt zudem die erforderlichen Ergänzungen für
die Schnittstelle der Anwendung.
Wenn Sie keine solche Datenbankanwendung
erstellen wollen, kann dieser Schritt übergangen werden.
Automatisch erzeugt werden jeweils: pro Tabelle ein Template zum Anzeigen,
Editieren, Anlegen und Durchsuchen von Datenbankinhalten, sowie der PHP-Code
für die dazu gehörende Aktionen. Außerdem Aktionen, für den Download von Dateien
und Bildern aus der Datenbank. Weiterhin wird eine JavaScript-Datei erzeugt, um
über Ajax Aktionen auf dem Server auslösen zu können. Zuletzt wird die Strukturdatei
selbst im System gespeichert.
Sollten Sie noch keine Strukturdatei geschrieben haben,
können Sie eine solche Datei erzeugen. Benutzen Sie dazu das Plugin "DB-Tools".
Öffnen Sie das im Administrationsmenü "DB-Tools" / "Import".
Wählen Sie eine der Optionen, um eine bereits existierende Datenbank zu importieren.
Falls Sie bis jetzt noch keinerlei Vorlage für die Datenbank zur Verfügung haben, lesen
Sie bitte das Einführungstutorial. Beachten Sie auch
die Beispiele im Kochbuch für Entwickler.
Wenn Sie eine Strukturdatei erzeugt, oder von Hand geschrieben
haben, geben Sie bitte hier den Pfad dieser Datei an. Klicken Sie auf
"Durchsuchen", wenn Sie sich nicht sicher sind, wo sich diese befindet.
Schritt 4: Installationsroutine erstellen
Sie können in Schritt 4
eigene SQL-Dateien für die Installation Ihrer Datenbank angeben. Dieser
Schritt ist optional. Das Framework kann (seit Version 2.8.6) die
SQL-Anweisungen für die Installation bei Bedarf automatisch aus der in
Schritt 3 angegebenen Strukturdatei erzeugen. Dies funktioniert für:
MySQL, MS-SQL, PostgreSQL, Oracle Datenbanken, IBM DB2 und MS Access.
Handarbeit ist somit (außer in Ausnahmefällen) unnötig.
Falls für das gewünschte DBMS keine automatische Generierung möglich
ist, können Sie eine handgeschriebene SQL-Installationsdatei
bereitstellen.
Wählen Sie die Quelldatei im SQL-Format aus, welche die
Informationen zur Installation der Datenbank enthält.
Ihre SQL-Installationsdateien finden Sie nach der Generierung
des Plugins im Verzeichnis "config/db/.install/". Dieses enthält für
jedes unterstützte DBMS Unterverzeichnisse. Hierher können Sie auch
nachträglich noch SQL-Dateien von Hand kopieren. Die Datei muss den
gleichen Namen haben wie die Strukturdatei und die Endung ".sql"
besitzen.
Erzeugen der Anwendung
Zum Abschließen der Konfiguration klicken Sie bitte auf die
Schaltfläche "Fertigstellen".
Das SDK produziert als Ausgabe ein Skelett der Anwendung,
alle erforderlichen Templates, sowie alle notwendigen
Konfigurationsdateien. Diese beinhalten insbesondere:
Meta-Informationen des Plugins inklusive Beschreibung der
Schnittstelle, Meta-Informationen der verwendeten Dateien,
Meta-Informationen der verwendeten Templates.
Das soeben generierte Plugin ist sofort lauffähig. Sie finden
die entsprechenden Dateien im Verzeichnis "plugins" beziehungsweise
"skins/default", unter der ID-Kennung des Plugins.
Plugin installieren
Um das soeben erzeugte Plugin zu testen:
- Öffnen Sie die Datei "index.php" in Ihrem Browser
- Öffnen Sie das Administrationsmenü. Sie müssen
Administratorrechte besitzen. Achten Sie darauf, dass der Expertenmodus
gewählt ist.
- Wählen Sie im rechten Menü die Schaltfläche "Liste neu
laden".
- Suchen Sie Ihr Plugin in der Liste und aktivieren Sie es,
indem Sie die Checkbox neben dem Namen anklicken.
- Speichern Sie Ihre Änderungen.
- Melden Sie sich ab.
- Der Name der Anwendung erscheint auf der Sitemap.
Klicken Sie darauf um die Anwendung zu starten. (der Eintrag in der
Sitemap erscheint nur dann, wenn Sie in der
Schnittstelle mindestens 1 Aktion definiert haben,
welche den Typ "read" oder "default" und die Zugriffsbeschränkung "0"
(=öffentlich) besitzt. Falls nicht, müssen Sie den Namen der
gewünschten Aktion über die Adressleiste des Browsers eingeben:
index.php?action=my_action. Dieser Mechanismus ist dazu gedacht zu
verhindern, dass Plugins, die allein nicht lauffähig sind, oder
Adminrechte benötigen, auf der öffentlich zugänglichen Sitemap
erscheinen)