REDAXO, a PHP-based CMS since 2004. Both simple and flexible.
rex_backend_login
:
backend_login_policy
(in config.yml
) mit Optionen login_tries_until_blocked
, login_tries_until_delay
, relogin_delay
und enable_stay_logged_in
(@staabm)increaseLoginTries
(@staabm)rex_password_policy
: Neue Methode getHtmlAttributes
, die passend zur Policy die Attribute minlength
, maxlength
und passwordrules
liefert (wird im Backend an passenden Stellen auch verwendet) (@gharlan)rex_form_base
:
setFormAttribute
(@pherzberger)addFieldset
können Attribute als zweiten Parameter übergeben werden (@gharlan)rex_select
: Optgroups können per endOptgroup
beendet werden (@gharlan)rex_context
: Neue Methoden getParams
, hasParam
, removeParam
(@tbaddade)rex_be_page
: Neuer Setter setTitle
(@DanielWeitenauer)rex_socket
:
acceptCompression()
(@pherzberger)rex_path
: Neue Methode findBinaryPath
(@staabm)rex_type
: Neue Type-Assertion-Methoden wie int
, nullOrInt
etc. (@gharlan)rex_sql
: Bei factory
wird noch nicht die DB-Verbindung geöffnet, sondern erst wenn wirklich notwendig (@Sysix)PACKAGE_CACHE_DELETED
(@gharlan)type="email"
etc.) und required
/autocomplete
-Attributen (@gharlan)SensitiveParameter
-Attribut wird an geeigneten Stellen verwendet (@staabm)rex_request
: Vermeidung von Exceptions in der cli (@staabm)rex_socket_proxy
: Der Host
-Header wurde fälschlich inkl. Port gesetzt (@gharlan)rex_htaccess_check
hat nicht die Cookie-Einstellungen aus der config.yml
verwendet (@staabm)rex:theme.change
) (@christophboecker)dracula
)rex_media_manager::setCacheDirectory
geändert werden (@gharlan)rex_managed_media::getMediaFilename
lieferte uneinheitliche Ergebnisse, nun einheitlich den neuen Dateinamen (@gharlan)image_format
: Bei .jpg
-Dateien (nicht .jpeg
) war die neue Extension im Header nicht korrekt (@gharlan)rex_template
: Neue Methode getCtypes
die ein Array von neuen rex_ctype
-Objekten liefert (@staabm)cache/addons/templates
statt im structure
-Cacheordner (@gharlan)rex_backend_login
:
backend_login_policy
(in config.yml
) mit Optionen login_tries_until_blocked
, login_tries_until_delay
, relogin_delay
und enable_stay_logged_in
(@staabm)increaseLoginTries
(@staabm)rex_password_policy
: Neue Methode getHtmlAttributes
, die passend zur Policy die Attribute minlength
, maxlength
und passwordrules
liefert (wird im Backend an passenden Stellen auch verwendet) (@gharlan)rex_form_base
:
setFormAttribute
(@pherzberger)addFieldset
können Attribute als zweiten Parameter übergeben werden (@gharlan)rex_select
: Optgroups können per endOptgroup
beendet werden (@gharlan)rex_context
: Neue Methoden getParams
, hasParam
, removeParam
(@tbaddade)rex_be_page
: Neuer Setter setTitle
(@DanielWeitenauer)rex_socket
:
acceptCompression()
(@pherzberger)rex_path
: Neue Methode findBinaryPath
(@staabm)rex_type
: Neue Type-Assertion-Methoden wie int
, nullOrInt
etc. (@gharlan)rex_sql
: Bei factory
wird noch nicht die DB-Verbindung geöffnet, sondern erst wenn wirklich notwendig (@Sysix)PACKAGE_CACHE_DELETED
(@gharlan)type="email"
etc.) und required
/autocomplete
-Attributen (@gharlan)SensitiveParameter
-Attribut wird an geeigneten Stellen verwendet (@staabm)rex_request
: Vermeidung von Exceptions in der cli (@staabm)rex_socket_proxy
: Der Host
-Header wurde fälschlich inkl. Port gesetzt (@gharlan)rex_htaccess_check
hat nicht die Cookie-Einstellungen aus der config.yml
verwendet (@staabm)rex:theme.change
) (@christophboecker)dracula
)rex_media_manager::setCacheDirectory
geändert werden (@gharlan)rex_managed_media::getMediaFilename
lieferte uneinheitliche Ergebnisse, nun einheitlich den neuen Dateinamen (@gharlan)image_format
: Bei .jpg
-Dateien (nicht .jpeg
) war die neue Extension im Header nicht korrekt (@gharlan)rex_template
: Neue Methode getCtypes
die ein Array von neuen rex_ctype
-Objekten liefert (@staabm)cache/addons/templates
statt im structure
-Cacheordner (@gharlan)rex_list
: Über addLinkAttribute
konnten keine eigenen Classes gesetzt werden (@tbaddade)rex_form
: Bei Fieldsets mit eckigen Klammern im Namen wurden die Werte nicht gespeichert (@gharlan)rex_formatter
: Behandlung von 0000-00-00
korrigiert (@tbaddade)rex_get
/rex_post
etc. warfen Notice, wenn nach String gecastet wurde, und ein Array gesendet wurde (@gharlan)null
-Werten kam es mit PHP 8.1 zu Deprecation-Notices (@gharlan)assets:sync
: Core-Assets wurden nicht korrekt synchronisiert (@gharlan)exec
nicht verfügbar ist (@gharlan)image_format
: Bei .jpeg
-Dateien (nicht .jpg
) war die neue Extension im Header nicht korrekt (@gharlan)MEDIA_LIST_QUERY
wieder hinzugefügt, der zwischenzeitlich entfallen war (@eaCe)width
-Attribut mit Wert 0 gesetzt (@skerbis)rex_mediapool_saveMedia
an das frühere Verhalten wieder angeglichen (@gharlan).php8
in die Liste der blockierten Extensions aufgenommen (@staabm)rex_article_slice
: Methode getMediaListArray
lieferte fälschlich Linklist-Werte (@rhetzer)REX_VALUE[]
: Mit PHP 8.1 kam es teils zu Deprecation-Notices (@nfission)rex_sql
: Die Query-Parameter werden entsprechend ihrer PHP-Typen gebunden, dadurch z.B. Parameter auch in LIMIT
-Ausdrücken möglich (@gharlan)boostrap-select
: Statt "Bitte wählen" wird "—" angezeigt (weniger Verwirrung bei optionalen Feldern und bei leeren Selectboxen) (@gharlan)rex_mediapool_saveMedia
und rex_mediapool_updateMedia
an das frühere Verhalten wieder angeglichen (@gharlan)catname
und catpriority
wurden nicht korrekt aktualisiert (@gharlan)rex_config
gespeichert (@gharlan)rex_sql_table
: Defaultwert 0
wurde nicht gesetzt (@TobiasKrais)rex_markdown
: Korrekturen beim PHP-Syntaxthighlighting (@gharlan)ctype
, mbstring
und intl
erfordert (@gharlan)config.yml
kann ein Theme für alle User fest vorgegeben werdenrex_list
:
getColumnPosition
/setColumnPosition
(@christophboecker)SQL_CALC_FOUND_ROWS
abgefragt (@gharlan)rex_formatter
:
intlDateTime
, intlDate
, intlTime
für die Datumsformatierung über IntlDateFormatter
(@gharlan)strftime
, stattdessen die neuen intl*
-Methoden verwenden (strftime
wurde auch in PHP deprecated gesetzt) (@gharlan)rex_select
: Bei addSqlOptions
kann als zweiter Parameter die DB-ID gesetzt werden (@christophboecker)rex_markdown
: Optional kann Highlighting für PHP-Codeblöcke aktiviert werden (wird in den Readme-Ausgaben im Backend verwendet) (@gharlan)rex_pager
:
setPage
/setCursor
(@gharlan)rex
: Neue Methode requireUser
(nicht nullable) (@gharlan)rex_socket
: Context-Options können gesetzt werden (z.B. verify_peer
für SSL) (@dergel)rex_socket_proxy
: Bei https wird TLS v1.2 und SNI verwendet (@develerik)rex_response
: Neue Konstante HTTP_BAD_REQUEST
für den entsprechenden HTTP-Status (@christophboecker)rex_factory_trait
Neue Methode getExplicitFactoryClass
, dafür callFactoryClass
deprecated (@gharlan)dump()
-Ausgaben enthalten einen Link (entsprechend der Editor-Einstellung in REDAXO) zu der Codestelle, wo die Ausgabe ausgelöst wurde (@gharlan)package:run-update-script
, der das Update-Skript eines Addons manuell anstößt (@gharlan)use_gzip
wird in der config.yml
default nicht mehr aktiviert (@gharlan)page
-Parameter erfordert (@gharlan)rex:///
-Pfade wurden nicht mit den Editor-URLs verlinkt (@gharlan)theme-color
-Metatag wird nicht mehr gesetzt (@gharlan)rex_media_small
, rex_media_medium
, rex_media_large
(@schuer)rex_mediapool
und rex_media_service
(entsprechend alte Funktionen als deprecated gesetzt) (@dergel, @gharlan)rex_media
: Neue Methode forId
, um ein Medium über die ID zu erhalten (@dergel)onchange
-Event des MediaButton-Inputs getriggert (@BenJ1337)*_UPDATED
EPs (@gharlan)PHPMAILER_CONFIG
, über den die Einstellungen dynamisch angepasst werden können (@skerbis).eml
-Datei abgelegt, statt in einem eigenen Format (@skerbis)rex_article_slice
-Objekt zur Verfügung gestellt über $this->getCurrentSlice()
, so kann über PHP ohne REX_VARs auf die Values zugegriffen werden (@gharlan)rex_article_slice
:
getValueArray
, getLinkListArray
, getMediaListArray
, die den Feldinhalt direkt als Array liefern (@gharlan)data-status="x"
-Attribut, so können die Zeilen je nach Status gestylet werden (@danspringer, @schuer)rex_article_slice
: bei getLinkUrl
bekam man die aktuelle URL statt null
, wenn das Feld nicht gesetzt ist (getMediaUrl
entsprechend) (@gharlan)REX_LINK[id=X output=url]
hat teilweise die URL in falscher Sprache geliefert (@gharlan)rex_version
:
compare
für Aufrufe ohne letzten Parameter $comparator
korrigiert (@gharlan)gitHash
für Aufrufe ohne zweiten Parameter $repo
korrigiert (@gharlan)structure/version
: Die Leiste für den Wechsel zwischen Arbeits-/Liveversion wurde mobil nicht korrekt dargestellt (@schuer)mediapool
: Seit Chrome 91 stimmten die Spaltenbreiten teilweise nicht mehr (@schuer)rex_socket
-Einträge in Timeline enthielten doppelten Slash in URL (@gharlan)resize
: Warning vermeiden, wenn nur Höhe oder nur Breite gesetzt wurde (@Hirbod)rex_var_media(list)::getWidget
: ID-Parameter mit zusätzlichem Namespace-Anteil (nicht nur integer) wurden nur teilweise unterstützt (@gharlan)SMTPDebug
-Schalter wird von PHPMailer inzwischen auch bei anderen Versandmethoden verwendet, deswegen ist die Einstellung dazu nun immer sichtbar (@skerbis)for
-Attribut für Label korrigiert (@aeberhard)rex_var_link(list)::getWidget
: ID-Parameter mit zusätzlichem Namespace-Anteil (nicht nur integer) wurden nur teilweise unterstützt (@gharlan)symfony/http-foundation
neu aufgenommen; das Request-Objekt kann über rex::getRequest()
abgefragt werden (@gharlan)utf8mb4_unicode_ci
genutzt (@ixtension)successmsg
-Property eine eigene Erfolgsmeldung setzen (@BlackScorp, @staabm)CHANGELOG.md
der AddOns einsehbar (@staabm, @gharlan)install
-AddOn geladen und ist nutzbar (@alxndr-w, @gharlan)package.yml
optimiert (@staabm)core/form/search.php
für Suchfelder wie in der AddOn-Verwaltung, mit zugehöriger JS-Funktion rex_searchfield_init
(@skerbis)rex
: Neue Methode getDbConfig
liefert die DB-Config als Objekt der neuen Klasse rex_config_db
(@staabm)rex_markdown
:
<br/>
(kein Markdown-Standard) kann deaktiviert werden und ist bei der Darstellung von Markdown-Dateien im Backend deaktiviert (@christophboecker)rex_validator
: Rules werden über neue Klasse rex_validation_rule
abgebildet; Objekte der Klasse können über addRule
hinzugefügt und über getRules
abgefragt werden (@staabm)rex_form
: Pflichtfelder (gesetzt über notEmpty
-Validator) werden im Label markiert und erhalten das required
-Attribut (@staabm)rex_list
: Es können Attribute für die Table-Rows (<tr>
) gesetzten werden (@christophboecker)rex_user
: Neue Methode forLogin
um User über den Benutzernamen abzufragen (@jelleschutter)rex_file
: Neue Methode require
, wie get
, aber wirft Exception, wenn die Datei nicht gelesen werden kann (@staabm)rex_response
:
sendResource
ist der Client-Cache default deaktiviert, und kann vorab per sendCacheControl
geändert werden (@alxndr-w)sendRedirect
kann der Statuscode als zweiter Parameter übergeben werden (@staabm)rex_package
: Neue Methode splitId
um eine Package-ID in AddOn- und PlugIn-Part zu trennen (@gharlan)rex_sql
:
in
, um die Parameter für die IN (…)
-Clause mit Escaping zu erhalten (@gharlan)closeConnection
(@gharlan)rex_sql_util
: Methode importDump
prüft, ob es eine *.sql
-Datei ist (@staabm)rex_var
: Variablen können auch Ziffern im Namen enthalten (@gharlan)rex_api_function
: Exception bei ungültigem JSON (@staabm)rex_editor
: Die Editoren haben Konstanten erhalten, und die Klasse validiert den gesetzen Editor (@staabm)config:get/set
: Über neue Option --package
können die Packages-Properties (statt Core-Properties) verwaltet werden (@staabm)config:get/set
: --type
-Option unterstützt den octal
-Typ für fileperm
/dirperm
(@staabm)assets:sync
: Dateivergleich optimiert und Beschreibung/Hilfe verbessert (@staabm)setup:run
: Die Ordner/Dateien mit fehlenden Schreibrechten werden im Listen-Style aufgelistet (@staabm)Server-Timing
-Header im Debug-Modus werden nicht mehr gesendet, da inzwischen das Debug-AddOn existiert und die Header sich als problematisch herausgestellt haben (@gharlan)boot.php
(@dtpop)help.php
entfernt (@skerbis)filter
wurde nicht geprüft (@gharlan)rex_autoload
: Cache-Handling korrigiert (@gharlan)rex_markdown
: In Code-Snippets wurde die Zeichenkette window.location
pauschal entfernt (@gharlan)rex_form
: Bei aktiviertem Debug-Parameter wurde die Redirect-URL nicht escaped (@gharlan)rex_extension
: Wenn der Runlevel als String übergeben wurde („EARLY“, „LATE“), wurde stillschweigend immer LATE verwendet; neu wird auf die korrekte Nutzung über die Integer-Konstanten rex_extension::EARLY/LATE
per Warning hingewiesen (@gharlan)setup:run
: Wenn die Systemvoraussetzungen nicht erfüllt werden, wurde nach der Fehlermeldung trotzdem das Setup fortgesetzt (@gharlan)rex_backup::exportFiles
sollte dafür der neue zweite Parameter mit einem Zielpfad gesetzt werden) (@staabm)article_status
: Neu können die Artikel-Datumsfelder nach Statusänderung automatisch geleert werden (optional) (@tyrant88)image_format
, über den das Bildformat geändert werden kann (JPG, PNG, GIF, WEBP) (@aeberhard)image_properties
: Der Effekt wirkte sich nur aus, wenn noch weitere Bildeffekte aktiv waren (@gharlan)smtp
statt mail
(@gharlan)mail
steht nur noch zur Auswahl, wenn die PHP-Funktion auch verfügbar ist (@skerbis)phpmailer[]
-Recht mit Textbeschreibung „PHPMailer-Einstellungen“ (@skerbis)rows_per_page
angepasst werden; der Default-Wert wurde auf 50 erhöht (@tyrant88)SLICE_MENU
(mit eigener Klasse rex_extension_point_slice_menu
), als Weiterentwicklung von STRUCTURE_CONTENT_SLICE_MENU
mit mehr Möglickeiten, die vorhandenen Buttons zu ändern/entfernen (@staabm)rex_article_not_found_exception
geworfen werden, wodurch auf den Fehlerartikel gewechselt wird (@gharlan)autocomplete
-Attribute werden gesetzt (@alxndr-w)rex_form
-Prio-Feld verhindert (@gharlan)rex_form
verhindert (@staabm, @gharlan)rex_escape
: Neue Escape-Strategie html_simplified
, bei der HTML escaped wird mit Ausnahme weniger einfacher Tags (<b>
, <code>
etc.) (@staabm)debug.throw_always_exception
aktiv ist, wurden Warnings/Notices trotz @
-Operator nicht ignoriert (@gharlan)rex_sql
kam es teilweise zu Warnings bzgl. reset()
(@gharlan)rex_logger
: Bei rex_
-Exceptions wurde im Log der erste Buchstabe großgeschrieben (Rex_exception
etc.) (@gharlan)Server-Timing
-Header) (@gharlan)download
-Attribut wurden trotzdem über PJAX geladen (@gharlan)media
-Ordner grundsätzlich geleert, auch wenn das Backup den media
-Ordner gar nicht enthält (@gharlan)rex_media_category_select
:
setRootId
funktionierte nur mit Root-Kategorien (@gharlan)rex_module::forKey()
korrigiert (@DanielWeitenauer)session.auto_start
wäre aktiv (@gharlan)rex_sql
:
getLastId
lieferte im Frontend 0
, wenn der Debugmodus des SQL-Objekts aktiviert war (@gharlan)getQueryType
unterstützt Klammern um die Query (@BlackScorp, @staabm)rex_sql_table
: Abfrage der Fremdschlüssel funktionierte nicht mit MySQL >= 8.0.21 (@gharlan)rex_markdown
: Generierung der Sprungnavi geht korrekt um mit HTML/Markdown/SpecialChars innerhalb der Überschriften (@jelleschutter, @gharlan)rex_dir
: delete
führte zu Warnings, wenn während des rekursiven Löschens bereits von anderen Prozessen wieder neue Dateien in dem Ordner angelegt wurden (@gharlan)rex_var
: toArray
ging teils nicht korrekt mit Anführungszeichen im Inhalt um (@portux)insert_image
: Bei right und bottom hatte der Abstand zum Rand das falsche Vorzeichen (@gharlan)rex_article_slice
: getPreviousSlice
/getNextSlice
lieferten mit $ignoreOfflines
teilweise fälschlich null
(@gharlan)