Was ist neu?
Auf dieser Seite sind die wichtigsten Neuerungen von CMSimple_XH 1.7 zur Vorgängerversion (1.6) aufgeführt.
Die beachtenswertesten Änderungen für Anwender
- Die Unterstützung für sehr alte PHP-Versionen (4.3 - 5.2) wurde eingestellt. Es wird nun mindestens PHP 5.3.0 benötigt. Es wird allerdings empfohlen zumindest PHP 5.6 zu verwenden.
- Das klassische CMSimple Seitensplitting wurde überarbeitet. Zuvor wurden Seiten an bestimmten HTML-Überschriften gesplittet (standardmäßig <h1>-<h3>). Nun werden die Seiten stattdessen an bestimmten HTML-Kommentaren gesplittet. Dies ermöglicht es beliebige Überschriften auf jeder Seite einzufügen, was es wiederum ermöglicht eine saubere Überschriften-struktur zu erzeugen. Ebenfalls sind nun bis zu 9 Menü-Ebenen möglich (zumindest theoretisch; die Seiten-URLs werden bei so vielen Menü-Ebenen vermutlich zu lang). Weiterhin ist es im normalen Modus nicht mehr möglich die Seitenamen im Editor zu ändern; stattdessen muss ein Seitenverwaltungstool verwendet werden. Fortgeschrittene Nutzer können aber den Advanced-Mode aktivieren, was bewirkt, dass die HTML-Splitkommentare in der Quellcodeansicht des Editors bearbeitet werden können. Beachtet, dass der Seitenname nun eigentlich nichts mehr mit der ersten Überschrift auf der Seite zu tun hat, was die Alternative Seitenüberschrift (Tab "Seite") unnötig macht, so dass sie entfernt wurde.
- TinyMCE 3 wurde als Standardeditor von TinyMCE 4 abgelöst.
- Das Ändern des Passworts wurde aus dem allgemeinen Konfigurationsformular in ein eigenes Formular Einstellungen → Passwort) verschoben, da es Probleme mit nicht standardkonformer Autovervollständigung einiger Browser gibt.
- Die Sichtbarkeit und der Veröffentlichungsstatus von Seiten, die im Reiter "Seite" eingestellt sind, vererbt sich nun auf alle Unterseiten.
- Mehrere bereits missbilligte Funktionen wurden nach cmsimple/compat.php verschoben. Wenn man sich sicher ist, dass diese Funktionen nicht gebraucht wird, kann in cmsimple/config.php $cf[site][compat] ein leerer String zugewiesen werden.
- Die spezielle Unterstützung für das Menumanager Plugin wurde entfernt, so dass selbst wenn eine modifizierte Version dieses Plugins verwendet wird, es nicht mehr ordnungsgemäß funktionieren wird.
- Die automatisch erzeugte Seite "Legal Notices" wurde entfernt.
- Es gibt nun eine automatisch erzeugte Seite Site/CMS Info, die Informationen über das System, die Templates und die Plugins inklusive Backlinks anzeigt. Es können zusätzliche Informationen zu dieser Seite mittels einer Newsseite hinzugefügt werden. Details befinden sich im ausgelieferten Demo-Content.
- Die Seiten-URLs wurden leicht vereinfacht indem nun mehrere aufeinander folgende word separator zu einem zusammengefasst werden. Beispielsweise hatte eine Seite namens "dies - das" zuvor die URL dies---das, aber nun dies-das.
- Die Sprachcodes von Schwedisch und Griechisch wurden korrigiert; diese sind nun sv bzw. el.
- Die Flaggen-Icons wurden vergrößert.
- Das Password-Hashen wurde verbessert, so dass nun BCrypt anstelle des alten, weniger sicheren Algorithmus verwendet wird.
- Die Zugänglichkeit der Adminmenu-Funktionalitäten auf Touchscreen Geräten wurde verbessert.
- Eine Prüfung bezüglich der Passwortstärke wurde hinzugefügt. Diese verwendet derzeit einen sehr einfachen Algorithmus, wobei Stärken über 100 sehr starke Passwörter bedeuten sollten.
- Die Systemprüfung wurde überarbeitet, um die Bedeutung der einzelnen Prüfungen deutlicher zu machen.
- Der Order core/ wurde zu assets/ umbenannt.
- Verschiedene Datums-/Zeit-Angaben sind nun internationalisiert, wenn die PHP intl Extension verfügbar ist.
- Das Markup einiger Elemente wurde verbessert (searchbox, lastupdate).
- Der Veröffentlichungszeitraum im Reiter "Seite" verfügt nun über Datums/Zeit-Picker, falls der Browser diese unterstützt.
- Das Loginformular ist nun vom Template losgelöst.
- Das Fa_XH Plugin wurde zur Standard-Distribution hinzugefügt. Es ermöglicht Font Awesome Icons im Content zu verwenden.
- Die page_params Funktionalität betreffend des Versteckens und Unveröffentlichens von Seiten wurde in den Core verschoben.
- Die relevante Funktionalität des Utf8 Plugins wurde in den Core verschoben, und das Plugin entfernt.
- core.css und plugins.css werden nun in xhstyles.css zusammen gefasst.
- Konfigurations- und Sprachdateien werden nun nur bei Bedarf geladen, was die Server seitige Performance etwas verbessern könnte.
Die beachtenswertesten Änderungen für Templatedesigner
- Die besondere Unterstützung von XHTML wurde entfernt bzw. missbilligt. Es wird unbedingt empfohlen den HTML5 Doctype für neue Templates zu verwenden.
- Aufgrund des neuen Seitensplitting (siehe oben) besteht nicht mehr die Notwendigkeit <h1>-<h3> identisch zu gestalten. Stattdessen kann davon ausgegangen werden, dass alle Seiten mit <h1> beginnen (oder vielleicht mit <h2>, falls das Template bereits eine <h1> Überschrift für alle Seiten verwendet). Es dürfte das Beste sein, zu dokumentieren ob ein Template für das neue Seitensplitting optimiert ist, und die jeweiligen Details zu beschreiben.
- Es wird empfohlen, dass Templates eine Datei templateinfo.htm direkt im Template-Ordner enthalten, die Information über das Template und einen Backlink zum Designer enthalten kann. Das Format ist vereinfachtes HTML (nur <a> und <br> Elemente sind erlaubt), kodiert als UTF-8; die maximal unterstützte Länge sind 400 UTF-8 Glyphen. Die Information in dieser Datei wird in die neue Site/CMS Info Seite (siehe oben) injiziert. Die Templatedesigner sollten sich überlegen die Backlinks zum Templatedesigner zu entfernen (oder Anwendern dies zu erlauben) und statt diesen die neue poweredByLink() Funktion zu verwenden.
- Ein Template kann nun einen eigenen Satz von Sprach-Flaggen-Icons ausliefern; diese können einfach in den flags/ Unterordner des Templates gelegt werden. Fehlende Icons werden aus dem Standardordner (userfiles/images/flags/) geholt.
- Die Funktion submenu() akzeptiert nun einen optionalen Parameter, der benutzerdefiniertes Markup für die Submenü-Überschrift erlaubt.
- Die Funktion legallink(), die von CMSimple_XH 1.5.8 an missbilligt war, wurde entfernt.
- Die Funktion editmenu() wurde missbilligt. Sie machte seit XH 1.5 sowieso nichts mehr, so dass es Zeit wird sie aus Templates zu entfernen.
- Die Funktion tag() wurde missbilligt. Es wird empfohlen statt dessen einfach valides HTML5 zu verwenden.
- Die Funktion top() akzeptiert nun einen optionalen Parameter, der genutzt werden kann um zu einer anderen ID als #TOP zu verlinken.
- .plugintext, .pluginedit und .plugineditcaption wurden vom Core und den Standard-Plugins entfernt. Während diese alten Pluginloader-Klassen immer noch von einigen Plugins verwenden werden könnten, können sie vermutlich in neuen Templates ignoriert werden.
- Das Template-Stylesheet wird nun als letztes Stylesheet verlinkt, so dass es leichter ist von Plugins definierte Regeln zu überschreiben.
- Das Fa_XH Plugin wurde zur Standard-Distribution hinzugefügt. Es ist der empfohlene Weg um Font Awesome im Template zu verwenden.
Die beachtenswertesten Änderungen für Pluginentwickler:
- Während in früheren Versionen Flags im Query-String (d.h. Parameternamen ohne Gleichheitszeichen und Wert) automatisch als globale Variablen mit dem Wert 'true' registriert wurden, ist dies aus Sicherheits- und Wartbarkeitsgründen nicht länger der Fall. Dieses "Feature" wurde üblicherweise verwendet, um zu prüfen ob die Administration eines bestimmten Plugins angefordert wurde (if ($pagemanager) …). Das funktioniert nun nicht mehr. Es ist stattdessen XH_wantsPluginAdministration() zu verwenden.
- CMSimple_XH verwendet nun standardmäßig benannte Sessions, so dass mehrere Installationen in derselben Domain ihren eigenen Satz von Sessions haben. Will ein Plugin eine Session starten, so sollte es nicht mehr session_start() aufrufen, sondern stattdessen XH_startSession(). Das funktioniert allerdings nicht, wenn das Plugin direkt PHP-Dateien anfordert, also ohne durch CMSimple_XH's index.php zu laufen. Es wird grundsätzlich empfohlen, dies zu vermeiden. Ist das nicht möglich, dann kann der Sessionname aus der Datei cmsimple/.sessionname gelesen, und session_name() mit diesem Namen aufgerufen werden bevor session_start() aufgerufen wird.
- Der Konfigurationstyp "password" wurde entfernt.
- Erweiterte Konfigurationsoptionen wurden eingeführt. Diese werden mit einem führenden Pluszeichen in metaconfig.php gekennzeichnet, und sind hinter einem "mehr" Schalter in den Konfigurationsformularen versteckt.
- $cf[xhtml][endtags] wurde entfernt, und tag() missbilligt. Es wird empfohlen statt dessen einfach valides HTML5 zu erzeugen.
- initvar() wurde missbilligt. Es ist zu beachten dass es nicht nötig ist initvar('action') oder initvar('admin') aufzurufen, weil dies bereits vom Core getan wird. Für alle anderen Verwendungen von initvar(): sollten keine globalen Variable verwendet werden.
- Die JSON-Klasse, die einen Fallback für alte PHP-Versionen ohne JSON-Support bot, wurde entfernt. XH_decodeJson() und XH_encodeJson() sind immer noch verfügbar, aber sind nun nur noch dünne Wrapper über json_decode() und json_encode(). Erwägt, die json_*() Funktionen direkt zu verwenden.
- Die PasswordHash Klasse wurde entfernt und stattdessen sollte die Password-Hashing-Funktionen (password_hash() und password_verify()) bzw. random_bytes() verwendet werden. Für ältere PHP-Versionen gibt es Fallbacks in cmsimple/password.php.
- Die Funktionen h() und l(), die dünne Wrapper über $h bzw. $l sind, wurden missbilligt. Es kann statt dessen XH\Pages verwendet werden.
- plugin_admin_common() erwartet nun keine Argumente mehr, da diese auch früher nie verwendet wurden. Es können auch weiterhin $action, $admin und $plugin an die Funktion übergeben werden, da PHP überschüssige Argumente stillschweigend ignoriert, und sich dies in der nahen Zukunft vermutlich nicht ändern wird (falls überhaupt jemals).
- Die globale Variable $rq wurde entfernt.
- Die "Editorhooks" des Standard-Filebrowsers wurden in die jeweiligen Editorplugins verschoben, so dass die Pluginentwickler keine Dateien mehr im Filebrowserplugin überschreiben müssen. Aus Gründen der Abwärtskompatibilität wird auf den alten Ort zurückgegriffen, falls am neuen Ort kein Hook gefunden wird.
- CMSimple_XH hat einen allgemeinen Klassen-Autoloader bekommen. Um diesen zu verwenden, müssen die passend in Namensräumen definierten Klassen in den classes/ Ordner des Plugins gelegt werden. Verschachtelte Namensräume werden ebenfalls unterstützt. Es wird empfohlen, sich aus Gründen der Einfachheit und Effizienz auf das Klassen-Autoloading zu verlassen anstatt PHP-Dateien manuell zu require'n.
- XH_afterFinalCleanUp() wurde hinzugefügt, dass es Plugins ermöglicht eine Funktion zu registrieren, die kurz vor dem Ende des Requests aufgerufen wird, so dass das vollständige HTML manipuliert werden kann.
- $pd_router->addTab() akzeptiert nun einen optionalen dritten Parameter, der es ermöglicht eine CSS-Klasse anzugeben, die für den Page-Data-Tab gesetzt wird, so dass individuelle Tab-Labels leicht gestylt werden können.
- Die Klasse XH\Mail wurde aus dem Mailform-Code extrahiert, so dass Plugins deren Funktionalität wieder verwenden können.
- XH_formatDate() ist nun internationalisiert, falls ext/intl verfügbar ist. Erwägt es für menschenlesbare Formatierung von Datums-/Zeitangaben zu verwenden.
- $pd_router->model ist nun private; es sollte stattdessen die Methoden von $pd_router verwendet werden, um zum Model weiterzuleiten.
- Überschriften, die von Plugins ausgegeben werden, sollten an das neue Setensplitting angepasst werden. Beispielsweise sollte zusätzlicher Inhalt auf einer Seite nicht mehr <h4> verwenden, sondern eher <h2>. Es ist zu überlegen die tatsächliche Überschriftenebene konfigurierbar zu machen.
- Plugins, die direkt mit den Inhalten von Seiten arbeiten, müssen ggf. an das neue Seitensplitting angepasst werden.
- Das Fa_XH Plugin wurde zur Standard-Distribution hinzugefügt. Es ist der empfohlene Weg um Font Awesome Icons in Plugins zu verwenden. Es wird empfohlen Font Awesome anstatt klassischer Icon-Bilder aus Gründen der Konsistenz und besserem Aussehen auf Retina-Geräten zu verwenden.
- GET Anfragen mit `selected` werden nun zur gewünschten Seite weiter geleitet.
Die beachtenswertesten Änderungen für Core-Entwickler:
- Die PEAR Coding-Standards wurden von den PSR-2 Coding-Standards abgelöst. Die Einhaltung kann mit `phing sniff` überprüft werden.
- PHP MessDetector wurde zu den Entwicklungstools hinzugefügt, und ist mittels `phing mess` aufrufbar.
Wichtige Hinweise
- Diese Version enthält ein paar abwärtsinkompatible Änderungen (BC breaks). Eine Liste von bekannten Inkompatibilitäten wird auf einer entsprechenden Wiki-Seite gepflegt.
- Aktuelle Versionen von jQueryUI sind möglicherweise nicht vollständig kompatibel mit jQuery 3, siehe https://github.com/TN03/jQuery_XH/issues/1. Es könnte das beste sein, jQueryUI nicht für neue Entwicklungen zu verwenden.
« vorige Seite | Seitenanfang | nächste Seite » |