Version 9.0.0 (Barrhorn)
Veröffentlichungsdatum | 16.06.2020 |
Sicherheitsupdate | nein |
Behobene Fehler | 32 |
Optimierungen | 25 |
Übersicht Versionshistorie |
Hinweis
Beim Update wird die Verzeichnisstruktur von webEdition umgebaut. Bitte machen Sie vorher eine Datensicherung!Die Datenbank und alle Dokumente werden auf UTF-8 umgestellt; es wird nun die Collation utf8_unicode_ci verwendet. Sofern Fremdtabellen verwendet werden sollten diese ebenfalls an die neue Collation angepasst werden, da es sonst zu Problemen kommen kann. Das <we:charset> Tag liefert nun nur noch UTF-8 zurück, egal was hier eingestellt wurde.
Das Backup-System wurde nun auf Zip-Archive umgestellt. Alte Backups können noch gelesen werden, wir raten weiterhin nur Backups aus der gleichen Version einzuspielen.
Nach dem Update ist ein Rebuild der Vorlagen nötig!
Achtung: Bitte beachte, dass diese Version viel stärker auf Datentypen achtet. Es ist daher möglich das älterer PHP-Kode hiermit nicht ohne Anpassung kompatibel ist! Die Hinweise für Entwickler sollten unbedingt beachtet werden!
Achtung: Bitte beachte die Systemvoraussetzungen! webEdition 9 setzt PHP >= 7.2 sowie MySQL >= 5.7 bzw. MariaDB >= 10.2 voraus!
Achtung: ALLE Updates auf eine Version 9.1.x müssen zwingend unter PHP 7.2, 7.3 oder 7.4 durchgeführt werden. Darüber hinaus muss das WE-Sessionmanagement aktiviert und "Sitzung für jeden Benutzer verschlüsseln" auf "Transparent" eingestellt werden!
Bekannte Probleme
- Import/Export
- Der Import und Export ist derzeit nicht funktional und wird in einem späteren Release nachgereicht
- Update
- Das Update setzt voraus das vorher die WE-Sessionverwaltung aktiviert wurde. Im Updater erfolgt nun auch ein Hinweis bei der Installation
Verbesserungen
- webEdition allgemein
- Alle WE-Tags müssen nun als Klassen implementiert werden. Dadurch ist eine bessere Kapselung möglich, die Tags können so aber auch einfacher erweitert werden. (#12106)
- Die Datumsspalten wurden auf (My)SQL native Datentypen abgebildet. Die ursprünglichen Spalten werden als virtuelle Spalten weitergeführt. (#10719)
- Die Tabelle tblTemporaryDocs wurde entfernt. Die Daten werden jeweils in den entsprechenden Tabellen gespeichert und dort als "inaktiv" gekennzeichnet (#11503)
- Es ist nun möglich in den Einstellungen einen Wartungsmodus zu aktivieren. Damit kann das Front- und/oder das Backend zu Wartungszwecken deaktiviert werden. (#12561)
- Geschützte Mediendateien werden nun auch im Tree ausgezeichnet (#10924)
- WE unterstützt nun Memcached und Redis. Dieser kann über das Tag <we:cache> genutzt werden, wird aber auch von WE intern (bspw. für die Datenbank verwendet) (#9889)
- webEdition erhält eine neue Verzeichnisstruktur und fast alle Dateien werden nun als Klassen angelegt. Tags und Tag-Hilfen MÜSSEN auf das neue Format portiert werden. (#12107)
- Über einen eingebauten kleinen Grafikeditor können nun Änderungen am Bild (Markierungen, Bildverbesserungen) direkt in WE gemacht werden. (#12613)
- we:Tags
- <we:linklist> wurde entfernt. Alle Daten werden auf einen <we:block> übertragen und temporär durch <we:linklist> weiterhin ausgegeben (#12064)
- Mittels <we:saveRegisteredUser> uniqueFields=""> läßt sich verhindern das bestimmte Kundenfelder nicht eindeutig sind. Im Fehlerfall kann dies per <we:ifNotWritten type="" customer="" onerror="" notUnique=""> geprüft werden. (#12451)
- Tag <we:listview type="object">: predefinedSQL wurde aus der <we:listview type="object"> entfernt. Es kann stattdessen <we:listview type="sql"> verwendet werden (#8878)
- Backup
- Banner
- Das Bannermodul wurde nun vollständig aus WE entfernt. (#12094)
- Editor-Plugin
- Mit dieser Version führen wir webDAV für Vorlagen, Tags und (aktuell) einfache Textdokumente ein. Es kann somit ein beliebiger Texteditor/IDE verwendet werden um diese Dokumente zu bearbeiten. Beachte das diese Form der Dateifreigabe nicht sehr performant ist! Sofern man in webEdition angemeldet ist, kann die Freigabe über webdav(s)://DOMAIN/webEdition/davfs.php aufgerufen werden. Als Benutzername/Passwort müssen die gleichen Daten wie zum WE-Zugang verwendet werden. Nach dem Logout aus webEdition steht diese Freigabe auch nicht mehr zur Verfügung. Wird die Freigabe mit fuse (davfs2) gemountet, sollte in /etc/davfs2/davfs2.conf n_cookies auf z.B. 5 gesetzt werden. (#11199)
- Klassen/Objekte
- Kundenverwaltung
- Die symmetrischen Passwörter in der KV werden beim Login auf Hash Passwörter umgestellt. (#12266)
- Navigation
- Sammlungen
- In Sammlungen können jetzt auch Objekte gespeichert werden (#11477)
- Versionierung
- In webEdition werden nun in der Versionierung für Dokumente keine Vorschau mehr abgelegt. Alte Vorschauen werden beim Update gelöscht. (#12413)
- Wysiwyg-Editor
- TinyMCE wurde auf die Version 5 aktualisiert und optisch an moderne Office-Suiten angepasst. Im Zuge des Updates wurden viele Funktionsnamen/Commands an die Bezeichnungen von TinyMCE angepasst. Einige Funktionen sind auch ganz weggefallen. Detaillierte Informationen dazu finden sich in der Tagreferenz (#11245)
- Auch das Pasten in den Contentbereich des TinyMCE wurde optimiert: Neu werden im Modus "Als reinen Text einfügen" Abschnitte, Links und Tabellen in "gesäuberter" Form erhalten. Z.B. von Tabellen wird nur das reine Gerüst aus <table>, <thead>, <tr>, <td> etc. erhalten, während alle weiteren Formatierungen entfernt werden. Gleiches gilt für Links, die überdies nur erhalten bleiben, wenn das Attribut "href" gesetzt ist: Reine Anker-Links (sehr zahlreich z.B. beim Kopieren aus Office-Programmen ) werden also entfernt.
Behobene Fehler
- webEdition allgemein
- Der Installer ist nun so konfiguriert, das dieser ausschließlich UTF-8 Installationen erlaubt. (#12318)
- Probleme in der Versionierung die durch die gespeicherte Vorschau den Kode der Seite evaluiert haben, sind nun behoben. (#12472)
- webEdition ist nun komplett auf UTF-8 umgestellt und liefert alle Seiten so aus. Beim Update wird dazu die Datenbank konvertiert. (#12118)
- Fileupload
- Es ist nun möglich Benutzern das Upload-Limit zu deaktivieren. (#12662)
- Navigation
- Die Kundenfilter in der Navigation wurde nun konsistent in die Tabelle tblcustomerfilter verschoben. (#12119)
- Versionierung
- Keine Generierung mehr von der Vorschau (#12444)
- Wysiwyg-Editor
Informationen für Entwickler
Änderungen an internen Funktionen/webEdition Tags/Datenstrukturen
- Geänderte Verzeichnisstruktur! Die Verzeichnisstruktur von webEdition ändert sich folgendermaßen:
Verzeichnis Inhalt Bemerkungen custom apps
codesnippets
conf
hook
hooks
tag
twalle Benutzeranpassungen (Apps, Config, Hooks, Tags) generated backup
site
templates
versionsalles was von WE generiert wird und idr. neu erzeugt werden kann (Backup, Site, Templates, versions) samples Beispiele (Configs, Hooks) temp cache
fragments
preview
tmpalles was Temporär ist (Cache, Fragmente Temp) we classes
cli
css
images
include
js
libraries
licensesalles statische Inhalte (keine Veränderung außer durch Updates) liveUpdate * alle Dateien die für das Update gebraucht werden - dieses Verzeichnis soll langfristig auch in we verschoben werden Es entsteht somit eine klare Trennung der statischen und veränderlichen Inhalte.
- <we:linklist> wurde entfernt. Beim Update wird diese in einen <we:block> gewandelt. Nach dem Rebuild wird das Tag <we:linklist> automatisch zu einem <we:block>. Die Templates sollten nach dem Update angepaßt werden.
- Objekt-Tabellen: die 1:1 Beziehung zwischen tblObject_X und tblObjectFiles gilt NICHT mehr. Durch den Wegfall der tblTemporaryDoc besitzt jede Objekt-Tabelle eine weitere Spalte OF_DocumentTable, die angibt ob es sich bei dem Eintrag um ein gespeichertes oder ein normales Dokument handelt.
- Geänderte Klassenamen - hier die wichtigsten:
alt neu Bemerkungen we_folder we_folder_document
we_folder_objectFile
we_folder_vfile
we_folder_template
we_folder_moduleJe nach Bereich/Tabelle wird nun eine eigene Klasse verwendet. we_imageDocument we_document_image we_objectFile we_contents_objectFile we_webEditionDocument we_document_webEdition - Geänderte Datenstrukturen:
- tblnavigation enthält keine Einträge für den Kundenfilter mehr
- tblFiles, tblObjectFiles, ... ist komplett auf den Datentyp "TIMESTAMP" migriert. Die Spalten Creation_Date,Mod_Date und Publish_Date sind hierfür verwendet worden. Die Spalten CreationDate, ModDate und Published werden als virtuelle Spalten weiter angeboten, sind aber als deprecated eingestuft!
- PHP 7:
- durch die Umstellung auf PHP 7, werden die nun verfügbare Typisierung streng durchgesetzt. Alle Funktionen und Methoden achten auf die korrekten Datentypen. Eine Initialisierung bspw.
$doc=new we_document_webEdition(); $doc->initByID("3");
führt zu einem Fehler, da der übergebene Typ "String" und nicht "Int" ist.
- durch die Umstellung auf PHP 7, werden die nun verfügbare Typisierung streng durchgesetzt. Alle Funktionen und Methoden achten auf die korrekten Datentypen. Eine Initialisierung bspw.
- TinyMce 5.1:
- Der neue TinyMce besitzt das "layer"-Plugin nicht mehr: Die Funktion entfällt ersatzlos
- Die Tabellenfunktionen (Spalte einfügen, Zelle formatieren etc) erscheinen nun kontextabhängig in einer separaten Toolbar. In der Haupt-Toolbar wird nur noch der Split-Button zum Einfügen/Löschen von Tabellen ausgegeben. Aufgrund dieser platzsparenden Neuerung entfallen alle tabellenbezogenen Einzel-Commands: Die Gruppe "table" wurde gestrichen, das "neue" Command "table" geört nun zur Gruppe "insert". Die obsoleten Table-Commands werden auf "table" gematcht.
- Der Font-Selector wurde entfernt
- Die Namen vieler Commands wurden vereinfacht oder durch diejenigen von TinyMce ersetzt. Die alten Commands werden noch auf die neuen Entsprechungen gematcht, sind aber deprecated:
Commands -
alt neu applystyle styleselect createlink link fontsize sizeselect formatblock blockselect insertbreak break insertgallery gallery inserthorizontalrule hr insertimage image insertorderedlist numlist insertunorderedlist bullist insertspecialchar charmap justifycenter aligncenter justifyfull alignjustify justifyleft alignleft justifyright alignright visibleborders visualaid replace search searchreplace search decreasecolspan
deletecol
deleterow
deletetable
editcell
editrow
increasecolspan
insertcolumnleft
insertcolumnright
insertrowabove
insertrowbelow
inserttabletable insertlayer
movebackward
moveforward
absolutejustify align font sizeselect
=> das verbleibende Command "sizeselect" gehört neu zur Gruppe "prop"copypaste pastetext
=> das verbleibende Command "pastetext" gehört neu zur Gruppe "essential"layer
'backcolor' => 'backcolor',
'createlink' => 'link',
'fontsize' => 'sizeselect',
'formatblock' => 'blockselect',
'insertbreak' => 'break',
'insertgallery' => 'gallery',
'inserthorizontalrule' => 'hr',
'insertimage' => 'image',
'insertorderedlist' => 'numlist',
'insertunorderedlist' => 'bullist',
'insertspecialchar' => 'specialchar',
'justifycenter' => 'aligncenter',
'justifyfull' => 'alignjustify',
'justifyleft' => 'alignleft',
'justifyright' => 'alignright',
'removeformat' => 'removeformat',
'visibleborders' => 'visualaid',
'replace' => 'search',
'searchreplace' => 'search',
'template' => 'template',
'decreasecolspan' => 'table',
'deletecol' => 'table',
'deleterow' => 'table',
'deletetable' => 'table',
'editcell' => 'table',
'editrow' => 'table',
'increasecolspan' => 'table',
'insertcolumnleft' => 'table',
'insertcolumnright' => 'table',
'insertrowabove' => 'table',
'insertrowbelow' => 'table',
'inserttable' => 'table',
Deprecated: Funktionen/webEdition Tags/Datenstrukturen die ab dieser Version nicht mehr genutzt werden sollten
Folgende globale Variablen werden ersetztAlt | Neu | Verfügbar ab | Bemerkungen |
$GLOBALS['DB_WE'] | DB_WE::$inst | 8.1.2 | für die Funktionen f,getHash ist diese Angabe idr. unnötig! |
$GLOBALS['we_editmode'] | we_base_WE::$editmode <we:ifEditmode> |
- | |
$GLOBALS['WE_MAIN_ID'] | we_base_WE::$mainDoc['id'] | - | sollte nur intern/im Tag über self::getDocForTag verwendet werden |
$GLOBALS['WE_MAIN_DOC'] | we_base_WE::$mainDoc['doc'] | - | sollte nur intern/im Tag über self::getDocForTag verwendet werden |
$GLOBALS['we_doc']->setElement($name,$val) | <we:setVar to="self" nameto="$name" value="$val"/> we_tag('setVar', ['to' => 'self', 'nameto' => $name, 'value' =>$val]) |
- | sollte nur intern/im Tag verwendet werden |
$GLOBALS['we_doc']->getElement($name) | <we:input name="$name"/> we_tag('input', ['name' => $name]) |
- | sollte nur intern/im Tag verwendet werden |
$GLOBALS['we_doc']->Property | <we:setVar to="self" property="true" nameto="Property" value="$val"/> <we:var type="property" doc="self" name="Property"/> |
- |
Die Rückgabe der Properties erfolgt als String - beachte das beim Setzen von Nicht String-Werten es zu Problemen in WE kommen kann/wird! Mit einer Umstellung auf PHP 7.4 werden wir auch hier die Einhaltung der Datentypen sicherstellen. Objekt-Properties werden zukünftig alle gegen Zugriff von außen gesperrt (protected)! |
$GLOBALS['we_doc'] | we_base_WE::getWeDoc() | 8.1.3 | Prüfe, ob du deinen Kode nicht durch WE-Tags umschreiben kannst. |
Funktionen
Alt | Neu | Verfügbar ab | Bemerkungen |
f($query) | fB($query):bool | 8.1.2 | spezielle Query die immer nur Bool zurückliefert |
f($query) | fI($query):int | 8.1.2 | spezielle Query die immer nur Int (Zahl) zurückliefert |
f($query) | fS($query):string | 8.1.2 | spezielle Query die immer nur String (Zeichenkette) zurückliefert |
id_to_path(string):mixed | id2path(string):string | 8.1.2 | Rückgabe war früher abhängig von Parameter |
id_to_path(array):mixed | id2pathA(array):array | 8.1.2 | Rückgabe war früher abhängig von Parameter |
Tabellen
Tabelle | Spalte | Bemerkungen | |
* | CreationDate | veraltet, wird ersetzt durch Datumsfeld Creation_Date | |
* | ModDate | veraltet, wird ersetzt durch Datumsfeld Mod_Date | |
* | Published | veraltet, wird ersetzt durch Datumsfeld Publish_Date |
Funktionen/webEdition Tags/Datenstrukturen die in dieser Version nicht mehr zur Verfügung stehen
- Datenbank:
- Die Unterstützung für das Backend mysql wurde entfernt. Alle WE Versionen sollten bereits länger auf mysqli laufen.
- tblIndex: die Spalten OID und DID wurden entfernt.
- Tags
- Die Unterstützung von WE-Tags als Funktionen wurde entfernt. we-Tags müssen nun als Klasse implementiert sein. Siehe z.B. we/classes/tag/we_tag_a.class.php. Custom-Tags werden beim Update kopiert, sind aber erst lauffähig, wenn die Dateiendung .class.php lautet und auf die neue Basisklasse umgestellt sind.
- Tag-Wizzard Einträge müssen nun von we_weTag_twbase erben und die Klassen we_tagData_* nutzen. Siehe hierzu bspw. webEdition/we/classes/tw/we_tw_a.class.php. Da alte TW Einträge nicht lauffähig sind, werden diese in webEdition/we/include/old-tw-Tags verschoben.
- <we:ifHasShopVariants> und <we:useShopVariant/>
- <we:captcha/> wurde das Attribut font/fotnpath entfernt.
- Die Funktion printElement (we_tag.inc) wurde final entfernt
- $GLOBALS['lv'] wurde entfernt
- Hooks
- Hooks wurden auf Klassen umgestellt. Entsprechend müssen die Dateinamen auf .class.php enden.
- Schau dir die Sample-Hooks an, die Umstellungen sind einfach von bestehenden Hooks durchzuführen.