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
    • In Backups können nun auch Kommentare gespeichert werden. Diese werden dann bei der Wiederherstellung angezeigt (#12389)
    • Das Backup wird nun als Zip-Archiv gespeichert. Alle binären Inhalte sind darin direkt wieder zu finden. Der Datenbank-Dump liegt als JSON-Dateien vor. (#11072)
  • 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
    • Bei Feldern in den Objekten wird nun eine Zusatzinfo zum Feld angezeigt (#10947)
    • Tag <we:link> wurde zur Verbesserung der Multi-Domain-Unterstützung um das Attribut 'triggerid' ergänzt (#11528)
  • Kundenverwaltung
    • Die symmetrischen Passwörter in der KV werden beim Login auf Hash Passwörter umgestellt. (#12266)
  • Navigation
    • Es ist im Navigationstool nun möglich den Cache direkt zu löschen. (#12453)
    • Sofern beim dynamischen Eintrag keine Sortierung ausgewählt wurde, wird nun die Sortierung nach dem Namen vorgenommen (#2646)
  • 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
    • Einfügen aus MS-Anwendungen funktionieren nun besser. (#12433)
    • Links mit Ankern und Parametern werden beim Speichern nicht mehr verändert. (#11446)

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
    tw
    alle Benutzeranpassungen (Apps, Config, Hooks, Tags)
    generated backup
    site
    templates
    versions
    alles was von WE generiert wird und idr. neu erzeugt werden kann (Backup, Site, Templates, versions)
    samples Beispiele (Configs, Hooks)
    temp cache
    fragments
    preview
    tmp
    alles was Temporär ist (Cache, Fragmente Temp)
    we classes
    cli
    css
    images
    include
    js
    libraries
    licenses
    alles 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_module
    Je nach Bereich/Tabelle wird nun eine eigene Klasse verwendet.
    we_imageDocument we_document_image
    we_objectFile we_contents_objectFile
    we_webEditionDocument we_document_webEdition
    Weitere Änderungen sind in webEdition/we/classes/contents zu sehen.
  • 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.
  •  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
      inserttable
      table
      insertlayer
      movebackward
      moveforward
      absolute
      Gruppen:
      justify  align
      Aufgelöste Gruppen:
      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
'applystyle' => 'styleselect',
'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 ersetzt
Alt 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.
powered by webEdition CMS