Feinschliff

Die vorangegangenen Abschnitte zeigen den grundlegenden Aufbau eines eigenen Moduls.
Viele der notwendigen Schritte werden dabei vom Framework abgenommen, oft geschieht dies unsichtbar im Hintergrund. Von daher sollen nun noch ein paar Feinheiten gezeigt werden, welche nirgends explizit erwähnt oder gesetzt wurden.

Quickhelp

Die Administration unterstützt den Anwender innerhalb der einzelnen Module durch „Quickhelps“, also „Schnellhilfen“. Diese sind in der Regel am rechten oberen Rand über einen gleichlautenden Button zu erreichen. Obwohl in der Admin-Klasse nirgends ein solcher Hilfetext gesetzt wurde, erscheint dieser Button auch beim Votings-Modul. Die Quelle hierfür ist in den Texte-Dateien des Moduls zu finden, in diesen gibt es beispielsweise die Einträge:


$lang["quickhelp_list"] = "All votings created are listed in this view.";
$lang["quickhelp_listAnswers"] = "All answers belonging to to a voting are listed here.";
$lang["quickhelp_newVoting"] = "A voting can be created or modified right here. The start- and end-date are optional.";


Das Framework sucht also in der Textdatei nach Einträgen mit dem Key quickhelp_actionName. Sobald ein Eintrag mit der aktuellen Aktion übereinstimmt wird der Text geladen und dem Quickhelp-Button automatisch zugeordnet.

Modul-Titel

Das Modul wird im System mit dem Titel „Votings“ geführt, obwohl der Titel nirgends explizit gesetzt wurde. Hierfür ist ebenfalls ein Eintrag in der Text-Datei verantwortlich:


$lang["modul_titel"] = "Votings";


Per Default sucht das Framework nach einem Eintrag mit dem Key „modul_titel“. Dieses verhalten kann jedoch durch Überschreiben der Methode „getOutputModuleTitle()“ verändert werden. Siehe hierzu auch http://apidocs.kajona.de/v3.3.0/modul_system/class_admin.html#getOutputModuleTitle

Include? Require?

Auch wenn externe Klassen wie class_cookie verwendet werden, so scheinen diese nirgends inkludiert zu werden. Trotzdem wird der Code erfolgreich ausgeführt.
Verantwortlich hierfür ist der Kajona-interne Classloader, der bei Bedarf benötigte Klassen nachlädt. Dies steigert die Performance im Vergleich zu unnötigen, mehrfachen include- oder require-Aufrufen.
Siehe hierzu auch http://apidocs.kajona.de/v3.3.0/modul_system/_system---includes.php.html#function__autoload

ToDos

Auch wenn der Funktionsumfang gemäß Anforderungen erst mal erfüllt ist, so kann am Modul natürlich noch weitergearbeitet werden. Als mögliche Punkte für eine spätere Weiterentwicklung sollten bedacht werden:

  • Updates des Moduls sowie der Elemente auf eine neue Version
  • Integration des Moduls in den Portal-Editor
  • Integration in die Suche
  • Aufnahme in die Beispielinhalte (Samplecontent)

Automatische Texteinbettung

In den Portal-Templates fallen Einträge mit der Syntax %%lang_keyword%% auf:


<input type="submit" value="%%lang_voting_submit%%" class="button" />


Für diese wird in der Portal-Klasse nirgends der Platzhalter aufbereitet.
Jedoch findet sich in der Text-Datei des Portals ein Eintrag mit ähnlichem Aufbau:


$lang["voting_submit"] = "Vote!";


Der einzige Unterschied ist das fehlende Präfix lang_. Sobald in einem Template Platzhalter mit dem Präfix lang_ gefunden werden, versucht das Framework diese durch entsprechende Einträge aus den Text-Dateien zu ersetzten. Ein manuelles Laden des Textes und bereitstellen als Platzhalter ist also nicht notwendig.
Die hierfür einzige Voraussetzung ist, das Template über den Aufruf


$this->fillTemplate($arrTemplate, $strTemplateID);


zu befüllen und zu rendern. Nur über den Aufruf im Kontext des aktuellen Objektes ($this) kann das Framework wissen, wo es die Texte suchen muss.
Siehe hierzu auch: