Joomla! Programmierung/Programmierung/Aktualisierung einer Joomla 1.5 Erweiterung auf Joomla 1.6
Inhaltsverzeichnis |
[Bearbeiten] Sprachen
[Bearbeiten] Aktualisierung Ihrer Joomla 1.5 Sprachdateien damit sie auf Joomla 1.6 funktionieren
Die Verwendung des nativen PHP INI Parsers für die Sprachdateien hat viele Vorteile, wie die viel schnellere Performance. Die Konvertierung der existieren 1.5 Sprachdateien in das neue Format ist, mit einer Entwicklungsumgebung (IDE) wie Eclipse, sehr einfach. Suchen Sie nach Dateien mit der Endung *.ini in Ihrem Projekt Ihrer Wahl. Dann benutzen Sie die folgenden Suchen / Ersetzen-Werte um automatisch die bestehenden Anführungszeichen zu ersetzen, String-Werte in Anführungszeichen zu setzen und Ihre Kommentare zu aktualisieren.
Doppelte Anführungszeichen sind NICHT im String-Wert erlaubt, es sei denn Sie verwenden explizit "_QQ_" um Sie zu repräsentieren. Verwenden Sie eher HTML Entities oder einfache Anführungszeichen.
- Einfach Anführungszeichen sind erlaubt.
- Setzen Sie ein schließendes Anführungszeichen an das Ende der Zeile, wenn die Zeile nicht leer ist oder ein Kommentar enthält. Suchen Sie ^((?!#).+)\R und ersetzen Sie es mit $1"\R
- Setzen Sie ein öffnendes Anführungszeichen an den Beginn des zu übersetzenden Strings, wenn er nicht leer ist oder ein Kommentar existiert. Suchen Sie ^((?!#).+?\=)(.+)\R und ersetzen Sie es mit $1"$2\R
- Jetzt ersetzen Sie das Doppelkreuz (#) mit einem Semikolon. Suchen Sie ^# und ersetzen Sie es mit ;
- Entfernen Sie zuletzt alle illegalen Zeichenketten, die verhindern, dass Dateien geladen werden können. Suchen Sie ^(null|yes|no|true|false|on|off|none)=(.+)\R und ersetzen Sie es mit nichts.
Wichtig: Verwenden Sie niemals maskierte Anführungszeichen \". Dies funktioniert möglicherweise seit PHP 5.3 jedoch nicht mit PHP 5.2.
Das Aktivieren der Fehlersuche (Debug), in der Konfiguration, zeigt Parserfehler pro Datei in welcher Zeile.
Wenn Sie die illegalen Zeichenketten (Strings) nicht entfernen, wird ihre Sprachdatei bis zu der Stelle geladen, wo die erste illegale Zeichenkette auftritt. Die jetzt "illegalen" Strings in der Sprachdatei, wie NO werden mit einem vorgestellten 'J' behandelt. Stellen sie sicher, dass Sie die Strings in Ihren XML-Dateien auch ändern. Sie können folgendes in Ihre Sprachdatei einbinden:
; verbotene Worte JNULL="Null" JYES="Yes" JNO="No" JTRUE="True" JFALSE="False" JON="On" JOFF="Off" JNONE="None"
Zusatz: Wenn Sie befürchten, dass Ihre Erweiterung ebenfalls in PHP 5.3 Umgebungen eingesetzt wird, dann müssen sie ebenfalls sämtliche Leerzeichen aus den Keys entfernen.
THE HELLO WORLD STRING = The Hello World string
JText::_('The Hello World string');
THE_HELLO_WORLD_STRING = "The Hello World string"
JText::_('The_Hello_World_string');
Mit etwas Glück werden Sie wohl auch mit Hilfe der IDE die INI Dateien fit machen können; beim Ersetzen der JText Aufrufe im PHP Code sollten Sie jedoch vielleicht besser selbst Hand anlegen.
[Bearbeiten] System Sprachdatei für Übersetzung von Administratormenü und Installation (.sys.ini)
Damit Ihre Erweiterung einwandfrei auf Joomla 1.6 läuft muss die .menu.ini Sprachdatei durch eine .sys.ini Sprachdatei ersetzt werden. Der folgende Abschnitt erläutert die Unterschiede bzw. Vorteile:
Die .menu.ini Sprachdatei ermöglicht eine Übersetzung des Administratormenüs.
Die .sys.ini Sprachdatei ermöglicht zusätzlich die Übersetzung der Installation einer Erweiterung.
- Die Zeichenkette (String) <description>COM_MYCOMPONENT_XML_DESCRIPTION</description> in der .sys.ini Sprachdatei wird bei Installation/Update einer Komponente angezeigt.
- Die Zeichenkette (String) <description>COM_MYCOMPONENT_XML_DESCRIPTION</description> in der .ini Sprachdatei wird bei Bearbeitung der Erweiterung im Backend angezeigt.
[Bearbeiten] JavaScript
[Bearbeiten] Ändern der JavaScript Override Funktionen
Joomla besitzt nun eigene JavaScript Funktionen mit dem Präfix "Joomla". Dies bedeutet, dass die Funktionen immer eindeutig sind und nicht mit anderen JavaScript Funktionen auf Ihrem Server / Webseite kollidieren. Allerdings müssen Sie nun eine andere Methode verwenden, um das Standard Joomla-JavaScript überschreiben zu können.
function submitbutton(pressbutton) { var form = document.adminForm; if (pressbutton == 'applyconfig') { //do something unique form.action.value = 'apply' submitform('saveconfig'); return; } submitform(pressbutton); return; }
In Joomla 1.6 müssen Sie die bestehende Funktion kopieren, aber die erste Zeile wie folgt abändern:
Joomla.submitbutton = function(pressbutton) { var form = document.adminForm; if (pressbutton == 'applyconfig') { //do something unique form.action.value = 'apply' submitform('saveconfig'); return; } submitform(pressbutton); return; }
[Bearbeiten] XML
[Bearbeiten] Konvertieren von JParameter zu JForm
Die Behandlung von Parametern wird in Joomla 1.6 nun durch die JForm Klasse übernommen. Dadurch ändert sich aber auch die Art wie Parameter in Ihren XML Dateien behandelt werden. Damit nun Ihre Menü/Komponenten/Modul/Plugin Parameter funktionieren müssen Sie verschiedene Änderungen in Ihren XML Dateien durchführen:
- Ersetzen Sie "<install>" mit "<extension>"
- Ersetzen Sie "</install>" mit "</extension>"
- Ersetzen Sie "<param>" mit "<field>"
- Ersetzen Sie "</param>" mit "</field>"
- Ersetzen Sie "<params>" mit "<config><fields name="params"><fieldset name="basic">"
- Ersetzen Sie "</params>" mit "</fieldset></fields></config>"
Ändern Sie den "extension" Knoten für die folgenden Attribute wie folgt ab:
- Behalten Sie das "type" Attribut
- version="1.6.0"
- client="site"
- method="upgrade"
Hier ein Beispiel für ein Modul:
<install type="module" version="1.5.0" client="site" method="upgrade">
<extension type="module" version="1.6.0" client="site" method="upgrade">
[Bearbeiten]
Wenn Ihre Komponente aus mehreren Untermenüs bzw. Submenüs aufgebaut ist, so müssen Sie unter Joomla 1.6.x verschiedenen Änderungen vornehmen. Joomla 1.6.x akzeptiert beispielsweise keine Leerzeichen zwischen den einleitenden und dem abschließenden Tags.
Hier ein Beispiel für die Änderungen an der XML-Struktur:
<administration> <!-- Administration Menu Section --> <!-- Name to display at the component menu. Should be the same as the extension commercial name --> <menu img="components/com_test/assets/images/16px/icon-16-logo.png" link="option=com_test">Test</menu> <submenu> <!-- Note that all & must be escaped to & for the file to be valid XML and be parsed by the installer --> <menu img="components/com_test/assets/images/16px/icon-16-control_center.png" link="option=com_test">Control Panel</menu> <menu img="components/com_test/assets/images/16px/icon-16-version.png" link="option=com_test&view=versioncheck">Version Check</menu> <menu img="components/com_test/assets/images/16px/icon-16-about.png" link="option=com_test&view=about">About</menu> </submenu> </administration>
Bitte beachten Sie das die Attribute (alt="COM_NAME_DER_KOMPONENTE" und view="NAME_DES_VIEWS") und ihre Schlüsselwort-Werte-Paare (Attribut-Name="Attribut-Wert") optional sind. Sie müssen auch nicht wie in diesem Beispiel aufgebaut sein, sondern sind frei wählbar.
<administration> <!-- Administration Menu Section --> <!-- Name to display at the component menu. Should be the same as the extension commercial name --> <menu img="components/com_test/assets/images/16px/icon-16-logo.png" link="option=com_test">Test</menu> <submenu> <!-- Note that all & must be escaped to & for the file to be valid XML and be parsed by the installer --> <menu link="option=com_test" view="test" img="components/com_test/assets/images/16px/icon-16-control_center.png" alt="COM_TEST_CONTROL_PANEL">COM_TEST_CONTROL_PANEL</menu> <menu link="option=com_test&view=version_check" view="version_check" img="components/com_test/assets/images/16px/icon-16-version.png" alt="COM_TEST_VERSION_CHECK">COM_TEST_VERSION_CHECK</menu> <menu link="option=com_test&view=about" view="about" img="components/com_test/assets/images/16px/icon-16-about.png" alt="COM_TEST_ABOUT">COM_TEST_ABOUT</menu> </submenu> </administration>
Falls Ihnen der Aufbau der XML Datei in diesem Abschnitt noch nicht klar ist können Sie sich auch die Bannerkomponente aus dem Joomla! Kern anschauen.
[Bearbeiten] Plugins
[Bearbeiten] Plugin Dateien in neuen Verzeichnissen
Joomla 1.6 erzeugt eine andere Ordnerstruktur für Plugins. Jedes Plugin besitzt nun seinen eigenen Unterordner. Dadurch sind Plugindateien nicht länger dort platziert wo Sie in Joomla 1.5 plaziert waren.
JPATH_SITE . DS . 'plugins' . DS . 'authentication' . DS . 'example.php';
JPATH_SITE . DS . 'plugins' . DS . 'authentication' . DS . 'example'. DS . 'example.php';
[Bearbeiten] Referenzen
[Bearbeiten] Entfernen der Referenzen auf index2.php und index3.php
Joomla 1.0 besaß verschiedene Indexdateien um Administratortinhalt in verschiedenen Umgangsformen auszugeben. In Joomla 1.6 gibt es bessere Wege diese Aufgaben zu lösen.
Sie müssen Ihren Programmcode nach "index2.php" und "index3.php" durchsuchen, damit keine Jooomla 1.0 Style-Links mehr in Ihrem Code enthalten sind. Wenn Sie Ihre Komponente ohne weiteren Joomla 1.6 Administratorinhalt (Menüs etc.) anzeigen wollen, so fügen Sie folgendes der URL hinzu: "&tmpl=component"
|
Dieser Artikel basiert auf dem Artikel Upgrading_a_Joomla_1.5_extension_to_Joomla_1.6 aus der offiziellen Joomla! Dokumentation und steht unter der Joomla! Electronic Documentation License. In der Joomla! Dokumentation ist eine Liste der Autoren verfügbar. |