Zikula 1.2.0 Core - Usability und Features
Donnerstag, 05. November 2009
Die neue Zikula Version 1.2.0 ist fertig und steht als reines Core-Release zum Download bereit. Wie man dem Meilenstein 1.2.0 und der folgenden Liste entnehmen kann, wurden etliche Fehler behoben und viele Features integriert:
- Gettext-Unterstützung: Module und Themes können nun weiterhin das alte "Define" basierte Sprachsystem nutzen oder die neue Gettext-Methode. Beide Varianten können nicht gleichzeitig genutzt werden. Wenn vom Core das Verzeichnis /locale gefunden werden, so wird die Gettext-Funktionalität genutzt und es wird nicht weiter nach "Defines" gesucht. Das bisherige Übersetzungverfahren kann somit ad acta gelegt werden. Zwar ist es jetzt anders, aber definitiv einfacher, zentraler und schneller. (Siehe dazu auch int. Wiki)
- Gute Beispiele für Gettext-Module sind 'legal' oder 'Ephemerids'. Eines der Systemmodule sollte nicht aus Ausgansbasis genutzt werden, da diese anders arbeiten und die Sprachdomäne des Cores nutzen.
Sprachen für den Core müssen im Verzeichnis /locale/$lang installiert sein und müssen die Datei locale.ini beinhalten. Ältere Sprachpakete werden geladen, wenn keine entsprechende Datei vorhanden ist. - Neue Sprachcodes: Zikula nutzt nun kurze Sprachcodes ("DE" anstatt "DEU") und unterstützt nun auch Sprachvarianten, wie beispielsweise "en_GB" und "en_US".
- UTF8 Codierung: Ein weiterer Schwerpunkt des Releases ist die Umstellung auf den UTF8-Zeichensatz. Beim Upgrade werden sämtliche Datenbankinhalte in UTF8 konvertiert, so dass man sich hierüber keine Gedanken machen muss. Ein kleiner Nachteil für uns Deutsche: Die Umlaute aus deutschen Sprachpaketen älterer Module können fehlerhaft angezeigt werden. Dies kann man entweder dadurch umgehen, dass man a) die Sprachdateien manuell konvertiert, b) sich ein evtl. aktualisiertes Sprachpaket besorgt (siehe SVN Community-German) oder vorzugsweise direkt auf eine Gettext-Version umsteigt. Die bekannten ehemaligen ValueAddon-Module News, Pages, Reviews, Quotes, Feeds usw. stehen schon als eingedeutschte Gettext-Version zur Verfügung. Dizkus, InterCom, etc. folgen in Kürze.
- Neue deutsche Übersetzung: Vor- und Nachteil des neuen Sprachsystems war die erneute Übersetzung des Cores inkl. der Zusatzmodule. Dieser Vorgang wurde im Laufe der Entwicklung bereits mehrfach wiederholt und mittlerweile hat sich ein recht stabiles deutsches Sprachpaket entwickelt. Es hat einige grundlegende Änderungen gegeben. Besonders bei den Anzeigenamen der Modul dürfte es zuerst auffallen.
- Vollständige Überarbeitung der Oberfläche: Hierbei wurde großer Wert auf die Benutzerfreundlichkeit und Bedienbarkeit gelegt.
- Überarbeitung des Admin-Panels: Der Adminbereich wurde umgestaltet und um die Anzeige der Modulbeschreibung, sowie ein Kontextmenü zu den Adminfunktionen eines Moduls ergänzt. In den Moduleinstellungen kann auch auf ein Alternativlayout zurückgeschwenkt werden.
- Bereinigung und Erweiterung der globalen CSS-Klassen: Die CSS Klassen wurden umbenannt und nutzen nun das Präfix "z-". Die alten "pn-" Klassen funktionieren jedoch weiterhin. Außerdem wurde für Formulare ein neuer Satz an Definitionen vorgegeben names "z-form". Entwickler sollten einfach einen Blick in die Datei javascript\style.css werfen.
- CSS/JS Echtzeitoptimierungen:
- Zusammfassung aller CSS-Dateien in eine Datei
- Zusammfassung aller Javascript-Dateien in eine Datei
- Minify JS und CSS
- Erzwingen der GZ-Komprimierung für JS- und CSS Dateien
- Header-Cache Steuerung
- Verbesserter Workflow bei Modulinstallationen: Der neue Prozess sieht wie folgt aus:
- Nicht initialisiert->Aktiv->Inativ->Entfernen
- Inaktiv->Aktiv
- Upgrade->Aktiv->Inaktiv->Entfernen
- Neues Layout beim Installations- und Upgradeskript
- Neues vereinfachtes Upgradeskript: Es werden alle Aktionen für ein Upgrade durchgeführt. Es müssen kaum noch Schritte manuell durchgeführt werden. Das Skript konvertiert alle mySQL-Installationen automatisch ins UTF8-Format.
- Multilingualität:
- Die Mehrsprachigkeit kann aktiviert und deaktiviert werden
- Der lang-Parameter kann nun bei Bedarf oder immer an eine URL angehangen werden
- Sprachvarianten, wie "en_GB" und "en_US", können aktiviert und deaktiviert werden
- Standardsprache der Webseite ist auswählbar
- Die automatische Erkennung der Browsersprache wurde optimiert
- Der Anzeigename eines Moduls wird zukünftig nicht mehr für die URLs genutzt: Die Variable $modversion['displayname'] wird um $modversion['url'] erweitert. Somit besteht ein Modul nun quasi aus dem internen Modulnamen (Blocks), den Anzeigenamen (Blockverwaltung) und der Modul-URL (blocks). Dies hat den Vorteil, dass nun ausführlichere Namen für die Administration angezeigt werden können, die vorher in einer URL nicht oder nur schlecht genutzt werden können (z.B. bei Umlauten oder Leerzeichen).
- Wiedereinfügen der Modulinformationen: Wer kennt das nicht? Die Modulverwaltung listet Anzeigenamen und Beschreibungen auf, die aus den Zeiten der Erstinstallation eines Moduls kommen. Oft tauchen dort noch Inhalte auf, die gar nicht mehr zutreffen oder sogar in einer anderen Sprache sind, weil das passende Sprachpaket bei der Installation nicht greifbar war. Da diese Text in der Datenbank und nicht im Sprachpaket gespeichert sind, wurden diese auch nicht automatisch aktualisiert. Mit Zikula 1.2.0 wurden nun Funktionen integriert, die für ein einzelnes Modul oder für alle Module (in der Konfiguration der Modulverwaltung) den vorhandenen Bestand mit dem aktuellen Sprachpaket überschreiben.
- Neue Icons im Benutzerkonto: Die individuelle Sprachauswahl für einen Benutzer wurde bisher über einen Block umgeschaltet. Nun wurde der Sprachwechsel auch ins Benutzerkonto integriert, wo man diese Funktion auch erwarten würde. Außerdem wurden das Benutzerkonto um die Punkte "Kennwort ändern" und "Mailadresse ändern" erweitert.
- Erlauben von HTML-Tags: Die Konfiguration der erlaubten HTML-Tags befindet sich jetzt im Sicherheitscenter und nicht mehr in den globalen Einstellungen.
- Reines Core-Release: Zikula 1.2.0 ist die erste Version, die komplett ohne ValueAddons ausgeliefert wird. So wurden diesmal noch mehr Zusatzmodule in das "Parked"-Projekt ausgelagert: AuthLDAP, blank, FAQ, Feeds, MultiSites (legacy), Pages, PendingContent, Ratings, Recommend_Us, Reviews, Sniffer und Thumbnail.
- Das Upgradeskript migriert die Daten aus den Blöcken und der Kategorieverwaltung in neuen zweistelligen Sprachcodes. Beispielcode kann aus den Datei pninit.php der entsprechenden Module entnommen werden.
- Überarbeitung und Fehlerbehebung im SeaBreeze Theme: Im Theme wurde ein Javaskript verwendet, dass gleich hohe Spalten erzeugen soll. Jedoch gab es hier einige Inkompatibilitäten mit diversen Ajax-Anwendungen. Das Theme wurde umstrukturiert und nutzt nun reines CSS (Technik: Liquid Faux Column).
- Automatische Updatebenachrichtigung im Admin-Panel, wenn eine neue Core-Version vorliegt.
- Im Benutzermodul wurde eine API eingeführt, um mit den dynamischen Benutzerattribute aus den Profilmodulen umzugehen (siehe system/Users/pndocs).
- Das Profilmodul wurde entsprechend angepasst, so dass es mit der neuen Schnittstelle des Benutzermoduls zusammenarbeiten kann.
- Das Modul 'legal' (Rechtliches) wurde ins Modulverzeichnis verschoben. Das Modul sollte nicht gelöscht werden. Dieser Wechsel hat nur technische Gründe, die mit der Erweiterungsdatenbank und der Übersetzungsmöglichkeit zusammenhängen.
- Sämtliche Abhängigkeiten zum Profilmodul wurden vollständig entfernt. Das Modul wird diesmal letztmalig zusammen mit dem Core ausgeliefert, um die Migration der Daten erfolgreich durchführen zu können. So wird vom Upgradeprozess z.B. die notwendige Mailadresse ins das Core-Benutzermodul übertragen.
- Der Pfad zu den Avatar-Bildern ist nun im Core und nicht über Drittmodule konfigurierbar. Dadurch können zukünftige Module auch mit anderen Verzeichnissen als images/avatar/ umgehen.
- Der Installationsskript bietet keine - nicht benutzbaren - Module als Startmodul an. Weiterhin kann nun auch "kein Startmodul" ausgewählt werden.
- Verbesserte Fehlerüberprüfung im Installationsskript (DB-Fehler, mbstring, etc.)
- Die Nutzung von dynamischen Meta Keywords wurde entfernt. Die Ergebnisse der automatischen Schlüsselwortgenerierung war selten zutreffend auch aus Gründen der Suchmaschinenoptimierung nicht sinnvoll. Außerdem benötigte dieses Feature viel Speicher.
- Das Modul advMailer wird automatisch als zusätzlicher Mailer eingebunden, wenn es im System vorgefunden wird.
- Der Core wurde so vorbereitet, dass die neue Version von MultiSites genutzt werden kann.
- Im 'extmenu' Block werden die Module "Error", "Header_Footer" und "Blöcke" nicht mehr automatisch in der Modulliste angezeigt, da auf diese sowieso nicht direkt zugegriffen werden kann.
- Neue Klasse ("ZI18n") für die Internationalisierung hinzugefügt, um Zahlen und Währung entsprechend der Ländereinstellungen zu formatieren (siehe auch Blog: "Zikula and i18n").
- Die Internationalisierungs (i18n)- und Gettextunterstützung ist unabängig vom verwendeten Betriebssystem und der Systemumgebung.
- Unterstützung für alle Schreibrichtungen: Im Theme sollte über das Plugin <!--[langdirection]--> die Schreibrichtung der ausgewählten Sprache festgelegt werden. So können Inhalte auch von rechts nach links gelesen werden. In der Datei locale/$lang/locale.ini sind die Information zum Sprachsystem vorkonfiguriert.
- Übersetzungsfunktionen hinzugefügt:
- ZLanguage::getModuleDomain() übergibt die Translation-Domain für das angegebene Modul.
- ZLanguage::getThemeDomain() übergibt die Translation-Domain für das angegebene Theme.
- __() übersetzt eine Zeichenkette.
- _n() übersetzt eine Plural-Zeichenkette.
- __f() übersetzt eine Zeichenkette mit sprintf().
- _fn() übersetzt eine Plural-Zeichenkette mit sprintf().
- Das Plugin <!--[pndate_format]--> benötigt nicht länger die Angabe von "Defines" (was jedoch aus Gründen der Abwärtskompatibilität weiterhin möglich ist). Bitte nun die folgenden Parameter nutzen: datelong, datebrief, datestring, datestring2, datetimebrief, datetimelong, timebrief, timelong
- Neue Plugins:
- <!--[homepage]--> übergibt die aktuelle Startseite des Webseite
- <!--[langdirection]--> übergibt die Schreibrichtung 'ltr' oder 'rtl'
- formatcurrency Modifier formatiert eine Zahl anhand der aktiven Währungseinstellung
- formatnumber Modifier formatiert eine Zahl anhand der aktiven Spracheinstellungen (z.B. Tausendertrennzeichen, etc.)
- <!--[array_field_pop]-->
- dataformat modifier
- <!--[pngetbaseuri]-->
- <!--[gt]--> übersetzt eine Zeichenkette direkt im Template.
- <!--[charset]--> übergibt den aktuellen Zeichensatz mittels ZLanguage::getEncoding()
- <!--[case]-->
- <!--[checkgroup]-->
- <!--[switch]-->
- Folgende "Defines" werden nicht mehr unterstützt:
- _CHARSET
- _LOCALE
- _LOCALEWIN
- _DATEBRIEF
- _DATELONG
- _DATESTRING
- _DATESTRING2
- _DATETIMEBRIEF
- _DATETIMELONG
- _DATEINPUT
- _DATETIMEINPUT
- _TIMEBRIEF
- _TIMELONG
- _DATEFIRSTWEEKDAY
- _TIMEFORMAT
- ShortURLs können nun auch mit Sprachparametern arbeiten
- "Zikula.itemlist.js" und "Texpand.js" unter javascript/helpers/ hinzugefügt. Texpand kann für die autom. Größenanpassung von "Textareas" eingesetzt werden.
- Fehlerbereinigung bei der pninit-Upgradelogik
- Überarbeitung der Klassen FileUtil, HTMLUtil, ZLanguage, LogUtil, DataUtil, etc.
- Ein ausführlicheres Changelog ist unter \pndocs\CHANGELOG.txt zu finden
Wichtige Links:
Kommentar hinzufügen