>> Inhaltsverzeichnis >> Anleitung für Entwickler

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

Formular 1

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

Formular 2

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.

Formular 3

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.

Formular 4

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.

Formular 5

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.
Formular 6

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.

Formular 7

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.

Formular 8

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.

Formular 9

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:

  1. Öffnen Sie die Datei "index.php" in Ihrem Browser
  2. Öffnen Sie das Administrationsmenü. Sie müssen Administratorrechte besitzen. Achten Sie darauf, dass der Expertenmodus gewählt ist.
  3. Wählen Sie im rechten Menü die Schaltfläche "Liste neu laden".
  4. Suchen Sie Ihr Plugin in der Liste und aktivieren Sie es, indem Sie die Checkbox neben dem Namen anklicken.
  5. Speichern Sie Ihre Änderungen.
  6. Melden Sie sich ab.
  7. 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)

Autor: Thomas Meyer, www.yanaframework.net