3.4.1 AddOn-Struktur

AddOn Aufbau

Wir zeigen hier am Beispiel des Import/Export-AddOns, wie ein AddOn im Allgemeinen aufgebaut ist. Die folgende Abbildung zeigt die Struktur der Ordner und Dateien, die zu diesem AddOn gehören.

Es gibt hier vier Dateien “config.inc.php”, “help.inc.php”, “install.inc.php” und “uninstall.inc.php”.

Weiterhin gibt es die Ordner “classes”, “files”, “functions”, “lang” und “pages”.
Die Funktion der einzelnen Dateien und Ordner soll nun ausführlich erläutert werden.

Die vier Dateien

config.inc.php

Konfigurieren Sie Ihr AddOn in dieser Datei. Hier werden Einstellungen für die Sprachdateien, ID und Name sowie die verwendeten Rechte geschrieben. Diese Datei wird bei jedem Aufruf einer Seite (sowohl im Backend als auch im Frontend) in den Workflow mit eingebunden (sofern das AddOn aktiviert und installiert ist). Dies ist also der richtige Platz, um zum Beispiel Extensions zu registrieren.

<?php

// Name des Addons:
$mypage = 'import_export'; // only for this file

// Nur im Backend:
if ($REX['REDAXO'])

// Sprachobjekt anlegen:
$I18N_IM_EXPORT = new i18n($REX['LANG'],$REX['INCLUDE_PATH'].'/addons/'. $mypage .'/lang'); // CREATE LANG OBJ FOR THIS ADDON

$REX['ADDON']['rxid'][$mypage] = '1'; // unique id /

// Anlegen eines Navigationspunktes im REDAXO Hauptmenu:
$REX['ADDON']['page'][$mypage] = $mypage; // pagename/foldername

// Namensgebung für den Navigationspunkt:
$REX['ADDON']['name'][$mypage] = 'Import/Export'; // name

// Berechtigung für das Addon definieren:
$REX['ADDON']['perm'][$mypage] = 'import[]'; // permission

$REX['ADDON']['version'][$mypage] = "0.9";

$REX['ADDON']['author'][$mypage] = "Jan Kristinus";

// $REX['ADDON']['supportpage'][$mypage] = "";


// Berechtigung in die Benutzerverwaltung einfügen:
$REX['PERM'][] = 'import[]';

?>

Die Instanz für die Sprachversion Ihres AddOns wird bei der Programmierung der Seiten verwendet. Hier: #$#I18N_IM_EXPORT

Falls nötig, können im o.g. Abschnitt auch mehrere Rechte für die Benutzerverwaltung definiert werden.

Dies kann beispielsweise so aussehen:

<?php

$REX['PERM'][] = "import[]";
$REX['PERM'][] = "export[]";
$REX['PERM'][] = "export[files]";
$REX['PERM'][] = "export[db]";

?>

help.inc.php

In diese Datei können Sie eine Beschreibung des AddOns, Hilfen und Tipps sowie Version und Autor schreiben.
Die Texte können mittels html-Code formatiert werden.

Diese Seite erscheint, wenn auf der Seite “AddOn” das (?) eines AddOns angeklickt wird.

<b>Import Export</b>

<br /><br />
Dieses Addon dient zur Sicherung der Inhalte und der Medienpool Dateien des Internetaufritts.
<br />
Die extrahierten Daten können in einer beliebigen REDAXO Installation (gleicher Version) wieder importiert werden.

install.inc.php

Über diese Datei können Sie alle nötigen Schritte durchführen, die für die Installation des AddOn benötigt werden. Dazu können Module installiert, Ordner angelegt, MySQL-Tabellen erstellt oder Seiten regeneriert werden. Diese Datei wird nur einmalig bei der Installation des AddOns verwendet.

<?php

$REX['ADDON']['install']['import_export'] = 1;

/*
ggf. Ausgabe einer Fehlermeldung:

ERRMSG IN CASE: $REX[ADDON][installmsg]["import_export"] = "Leider konnte nichts installiert werden da....";
*/

?>

uninstall.inc.php

Über diese Datei können Sie alle nötigen Schritte durchführen, die für die Deinstallation des AddOns benötigt werden. Hier können Tabellen entfernt, Dateien gelöscht oder Ursprungszustände wiederhergestellt werden.

<?php

$REX['ADDON']['install']['import_export'] = 0;

/*
ggf. Fehlermeldung:

ERRMSG IN CASE: $REX['ADDON']['installmsg']['import_export'] = "Deinstallation fehlgeschlagen weil...";

*/
?>

Klassen (classes)

AddOn Klassen

Über eigene Klassen können Sie beliebige abstrakte oder reale Gegenstände/Dinge modellieren und diese so zur Erweiterung von REDAXO nutzen.

Hinweis

Der Dateiname einer Klasse sollte folgendes Format besitzen:
class.rex_.inc.php

Funktionen (functions)

AddOn Funktionen

Funktionen dienen dazu, verschiedene logische Abschnitte zu gliedern. Sie stellen so sicher, dass keine doppelten Codesegmente im Quellcode auftauchen. Dies hilft, den Quelltext wartbar zu halten.

Hinweis

Der Dateiname einer Funktion sollte wie folgt aufgebaut sein:
function_rex_.inc.php

Sprachdateien (lang)

AddOn Sprachdateien

Über die Sprachdateien können Sie Ihr AddOn für die verschiedenen Sprachversionen im Backend anbieten.
Jede Sprache erhält dazu ihre eigene Datei – hier zum Beispiel für Deutsch, Englisch und Polnisch. Es wird auch zwischen Iso- und utf8-Codierung unterschieden.

In diesen Dateien können für die Seite/n des AddOns verwendete Elemente wie Titel, Funktionen, Bezeichnungen o.ä. in der entsprechenden definiert werden. Dies ist zum Beispiel ein Auszug aus der Sprachdatei de_de_utf8.lang.

# addon:import/export de_de
importexport = Im-/Export
file_deleted = Datei wurde gelöscht
no_import_file_chosen_or_wrong_version = keine Importdatei ausgewählt oder Version falsch
no_valid_import_file = Das ist keine korrekte Importdatei

usw.

So kann auf einer Seite die Sprachdefinition genutzt werden:

<div>
<?php echo $I18N_IM_EXPORT->msg('import'); ?>
</div>

Dabei wird die in der Datei install.inc.php definierte Sprachinstanz $I18N_IM_EXPORT verwendet.

Seiten (pages)

AddOn Seiten

Bei der Auswahl des Menüpunktes des AddOns wird die Datei /pages/index.inc.php eingebunden. Von hier aus kann jetzt gegebenfalls eine Seite ausgegeben oder über eine switch() Bedingung die weiteren Seiten verknüpft werden.

Um im Layout von REDAXO die Seiten des Addons zu programmieren, stehen Ihnen für die Navigation sowie die Abschlussleiste folgende Befehle zur Verfügung:

Erstellen der Navigation und grauen Titelleiste einer Seite:

<?php

// Einbinden der REDAXO-Navigation:
include $REX['INCLUDE_PATH']."/layout/top.php";

// Titelliste mit REDAXO Logo ausgeben:
rex_title($I18N_IM_EXPORT->msg("importexport"), "");

......


// Ausgabe des Seitenfußes:
include $REX['INCLUDE_PATH']."/layout/bottom.php";

?>

Ordner "files"

AddOn files

Der Vollständigkeit halber soll auch noch der Ordner “files” erwähnt werden. Hier sind die Dateien gespeichert, die beim Datei-Export auf dem Server gespeichert werden sollten.

Hier wurde nun die Struktur des AddOns “Import/Export” beschrieben. Dadurch sollte das Prinzip erläutert werden, wie ein AddOn aufgebaut sein könnte. Bestimme Elemente, wie zum Beispiel der Ordner “files”, sind spezifisch für dieses AddOn. Andere, wie die Datei config.inc.php, sind grundsätzlicher Bestandteil eines jeden AddOns. Wer mehr über den Aufbau wissen möchte, sieht sich am besten andere AddOns im Detail an.