- Tabs als ID-freie Implementierung –
addTabElement()funktioniert jetzt stabil in verschachtelten und dynamischen Kontexten (z. B. FlexRepeater, Fieldset, Collapse, Modal), ohne Bootstrap-ID-Verkabelung und ohne Kollisionen zwischen geklonten Instanzen. - Optionale Tab-Modernisierung – Tab-Navigation kann optional als modernisierte Variante gerendert werden über
tab-style => 'modern'bzw.data-group-tab-style => 'modern'. - Optionale vertikale Tab-Navigation – Tabs können optional links neben dem Inhalt dargestellt werden über
tab-layout => 'vertical'bzw.data-group-tab-layout => 'vertical'(inkl. Mobile-Fallback auf gestapelte Ansicht). - Font-Awesome-Icons je Tab – Icon-Unterstützung über
tab-iconbleibt erhalten und funktioniert weiterhin in den neuen Tab-Varianten. - Form Builder erweitert (Issue #403, 9.1 Scope) – neue Palette-/Generator-Unterstützung für
addColorSwatchField(),addToggleCheckboxField(),addModalElement()sowie Alert-Elemente (addAlertInfo/Warning/Danger/Success).
- Repeater-Decode mit Slot-ID –
MFormRepeaterHelper::decode()akzeptiert jetzt neben String-Payloads auch direkt numerische Value-Slots (z. B.decode(1)). - Klare API für Slot-basierten Zugriff – neue Methode
MFormRepeaterHelper::decodeById(int $valueId)für die direkte Auflösung über den REDAXO-Value-Slot. - Form Builder Output aktualisiert – generierter Repeater-Output nutzt nun bevorzugt
MFormRepeaterHelper::decode(<slot>)stattdecode('REX_VALUE[...]'). - Doku und Demo-Beispiele vereinheitlicht – Repeater-Beispiele wurden auf die bevorzugte Slot-ID-Variante umgestellt, die alte String-Nutzung bleibt kompatibel.
- ColorSwatch-UX im Form Builder – zusätzliche Hilfe im Eigenschaften-Panel, Beispiel-Palette per Klick und erweiterte Options-Syntax für CSS-Klassen-Swatches mit optionaler Preview-Farbe (z. B.
.text-primary=Primaer CSS|#2f77bc). - Palette-Suche im Form Builder – Live-Filter über Feld- und Wrapper-Typen inkl. Alias-Suche (z. B.
color,alert,link) und Leerzustand-Hinweis bei keinen Treffern. - Schneller Fokus auf die Suche –
/fokussiert direkt das Suchfeld in der Palette. - Bessere Übersicht bei langen Listen – Feld- und Wrapper-Liste haben jetzt eine maximale Höhe mit eigenem Scrollbereich in der linken Palette.
- Barrierefreiheit bei Tabs verbessert – ARIA-Zustände und Verknüpfungen wurden für Standard-Tabs und Repeater-Tabs ergänzt (
aria-selected,aria-controls,aria-labelledby).
- Tab-Active-Class im Parser – fehlendes Leerzeichen beim Anhängen von
activekorrigiert, damit bestehende Klassen nicht zu ungültigen Tokens zusammenlaufen. - Dokubeispiele korrigiert – fehlerhafte Beispiele in der Wrapper-/Repeater-Doku angepasst (
addCheckboxField-Parameter,addTextAreaField-Methodenname).
- Standardverhalten bleibt unverändert: Ohne neue Attribute bleiben Tabs visuell und funktional wie bisher.
- Bestehende Module mit
addTabElement()bleiben kompatibel.
- Bugfix: Beim Hinzufügen eines neuen Slices (function=add) werden die Formularfelder nicht mehr mit den Werten des Vorgängers vorbefüllt. Das Verhalten entspricht jetzt wieder dem REDAXO-Standard. Danke an @abra100pro für den Hinweis!
MForm 9 fasst den neuen FlexRepeater-Standardpfad, die modernisierte Link-/Media-API, neue Feld- und Wrapper-Typen, den visuellen Form Builder sowie umfangreiche Stabilitäts- und Doku-Arbeiten in einem Major Release zusammen. Die Detailhistorie der Betas bleibt unten erhalten; diese Sektion bündelt die 9er Änderungen release-tauglich. Alle Änderungen wurden unter Wahrung der Kompatibilität umgesetzt.
- Neuer Standardpfad für wiederholbare Inhalte –
addFlexRepeaterElement()etabliert den FlexRepeater als robusten Repeater für REDAXO-Backend-Kontexte, inklusive Drag-and-Drop, stabiler Editor-Initialisierung, Copy/Paste, Aktiv/Inaktiv-Status, Toggle-All und verschachtelten Strukturen.addRepeaterElement()kann weiterhin verwendet werden; bestehende Repeater-Setups funktionieren also weiter und koennen schrittweise auf den neuen FlexRepeater-Pfad umgestellt werden, ohne dass bestehende Module pauschal neu gebaut werden muessen. - Neue Feld- und Wrapper-Typen – hinzugekommen sind u. a.
addConditionalFieldsetArea(),addModalElement(),addColorSwatchField(),addCustomLinkMultipleField()sowie die YForm-Value-Typescustom_link_multiundcolor_swatch. - Modernisierte Link-/Media-Integration – MForm bringt eigene Widgets mit und ersetzt die Systemwidgets. Mit
MFormOutputHelper::createLinkData()/normalizeLinkData(),normalizeRepeaterItems(),useCustomLinkForClassicWidgets(true),addMFormMediaField()und der überarbeiteten Custom-Link-Integration lassen sich klassische Widgets und neue Linkformate einheitlich verarbeiten. - Visueller Form Builder – neue Backend-Seite zum Zusammenklicken von MForm-Modulen mit Live-PHP-Code-Generator, Repeater-/Wrapper-Support und Copy-Funktion für Input- und Output-Code.
MFormOutputfür Frontend-Ausgabe – neuer Fluent-Output-Helper mit Filter-, Sortier-, Gruppen-, Render- und Tag-API sowie Single-Value-Helfern wielinkUrl(),picture(),mediaList(),richtext()undexcerpt().- Template- und Projektintegration –
registerTemplate(),fromTemplate()undapplyTemplate()ergänzen MForm um eine wiederverwendbare Template-Registry für projektweite Defaults.
- FlexRepeater funktional ausgebaut – Layout-Steuerung (
horizontal,vertical,inline), Wrapper-Support für Tabs, Collapse, Fieldsets, Inline- und Column-Gruppen, bessere Default-Styles und sauberes Scoping über eigene.mform-Container pro Item. - Link-, Media- und Listen-Widgets deutlich robuster – Imagelist, Medialist, Linklist, Custom-Link und Multi-Link verhalten sich im Repeater und nach Reload konsistenter, inklusive Vorschau, Validierung und Popup-Übernahme.
- Dokumentation, Demos und Backend-Navigation erweitert – neue Einstiegsseite „Was ist neu in MForm 9?“, MFormOutput-Doku, Security-Seite, zusätzliche Demo-Module und konsistentere Backend-Struktur.
- Code-Ausgabe komfortabler – Copy-to-Clipboard ist nun zentralisiert und robust; falls das
code-Addon installiert ist, werden Doku-Codeblöcke und Form-Builder-Code read-only über Monaco dargestellt.
- Viele Repeater- und Wrapper-Regressionen behoben – darunter Rendering von Widgets, Readonly-Feldern, Tabs, Collapse, Fieldsets, Legends, Label-HTML, Toggle-Optionen, TinyMCE-/CKE5-Reinit und MBlock-Reindexing.
- Statische Analyse und Codebasis aufgeräumt – Rexstan auf 0 Fehler gebracht,
empty()-Verwendungen bereinigt, veraltete TODOs entfernt und Doku-spezifisches Inline-CSS/JS in eigene Assets ausgelagert. - CI- und Sicherheitsartefakte ergänzt –
SECURITY.mdsowie GitHub-Workflow für Linting, PHP-CS-Fixer und Rexstan sind Teil des 9er Releases.
- Bestehende Module bleiben weitgehend kompatibel; für bestimmte MBlock-Szenarien mit klassischen Link-/Media-Widgets wird
MForm::useCustomLinkForClassicWidgets(true)empfohlen. - Klassische Systemwidgets werden in diesem Kontext durch MForm-Widgets ersetzt.
- Für Repeater-Ausgabe mit Online/Offline-Status ist
MFormRepeaterHelper::decode()der bevorzugte Pfad statt reinemjson_decode().
- Visueller Form Builder (
Backend → MForm → Form Builder) – Drei-Spalten-Oberfläche zum Zusammenklicken von MForm-Modulen mit Drag-and-Drop und Live-PHP-Code-Generator.- 16 Feld-Typen: Text, Textarea, Select, Radio, Checkbox, Hidden, Headline, Description, Media, Medialist, Imagelist, Link, Linklist, Custom Link, Custom Link Multiple, Flex Repeater
- 2 Repeater-Verschachtelungs-Ebenen, mit eigenständigen Drop-Zonen
- Feld-Eigenschaften: Label, Default-Value, Placeholder, Hinweistext, CSS-Klassen, Zeilen (Textarea), Optionen, Required, TinyMCE-Editor,
setFull(), Custom-Link-Linktypen-Toggles, Link-/Media-Kategorien, Extern-Link-Prefix, Media-Type-Whitelist, Add-Button-Text - Im Canvas: Repeater einklappbar, Item Duplizieren / Kopieren / Einfügen mit rekursiver UID/ID-Neuvergabe
- Generator emittiert nur Optionen, die vom Core-Default abweichen
- Flex Repeater Defaults angepasst:
collapsedjetztfalse(wartrue)first_openjetztfalse(wartrue– ohnecollapsed=trueohne Wirkung)open(neu hinzugefügtes Item geöffnet) jetzttrue(warfalse)copy_pastejetzttrue(warfalse)confirm_deletejetzttrue(warfalse)- Hinweis: Bestehende Module ohne explizite Optionen verhalten sich daher leicht anders. Bei Bedarf alte Werte explizit setzen.
- Neue Repeater-Optionen im Builder verfügbar:
default_count,collapsed,first_open,show_toggle_all,open,copy_paste,confirm_delete,confirm_delete_msg,btn_text,btn_class.
- Layout Preview Demo (
Backend → MForm → Demos → Layout Preview) – Demo-Seite fürHtmlToSvgConverterundLayoutPreviewBuildermit Beispielen für SVG-Tag-Sets und CSS-Style-Attribut-Mapping.
- Rexstan: 0 Fehler im gesamten Addon – Alle statischen Analyse-Fehler (
variable.undefined,method.notFound,nullCoalesce.offset,argument.type) behoben. Betrifftboot.php, Demo-Seiten (pages/demo.*.php),pages/docs.phpsowie alle YForm-Templates (ytemplates/bootstrap/undytemplates/classic/).$this-Aufrufe in Addon-Includes aufrex_addon::get('mform')umgestellt- Explizite
@var- und@psalm-scope-this-Annotationen in allen YForm-Templates ergänzt $counter ?? 0-Fallback in Templates für YForm-injizierte Variablen- Null-Guard für
rex_file::get()indocs.php
- Custom-Link-Widget: Werte und Vorschau nach Reload korrekt – Bereits gespeicherte Werte werden im Single- und Multi-Widget wieder korrekt übernommen und lesbar aufgelöst, auch für
redaxo://ID-Links. Der Vorschau-Button für Medien steht jetzt direkt hinter dem Namensfeld und ist mit bewusstem Abstand von den restlichen Aktionen getrennt. - Linklist im Flex-Repeater: Artikelnamen nach Reload korrekt – Bereits gespeicherte Linklisten-Einträge werden nach dem erneuten Öffnen nicht mehr nur als Platzhalter wie
Artikel 5angezeigt, sondern wieder zu den echten Artikelnamen aufgelöst. - Custom-Link-Multi: Trash-Icon – Der Entfernen-Button je Eintrag zeigt jetzt ein
fa-trash-Symbol statt des durchgestrichenen Link-Icons. - Custom-Link: E-Mail-Validierung – Die
mailto:-Eingabe prüft vor dem Speichern, ob die eingegebene E-Mail-Adresse syntaktisch valide ist. Ungültige Eingaben werden mit einem Hinweis abgelehnt. - Custom-Link: Telefon-Validierung – Die
tel:-Eingabe lässt nur Ziffern,+,-, Leerzeichen und Klammern zu. Ungültige Eingaben werden mit einem Hinweis abgelehnt.
- Flex-Repeater: Custom-Link-Widgets korrekt gerendert –
addCustomLinkField(),addMFormLinkField(),addMediaField(),addMFormMediaField()undaddCustomLinkMultipleField()zeigten im Flex-Repeater zuvor den Platzhalter „Widget-Typ nicht unterstützt". Sie werden jetzt als vollständige Widgets gerendert. - Flex-Repeater: Bilderliste vollständig identisch zum normalen Widget –
addImagelistField()nutzt jetztrex_var_custom_medialist::getWidget()direkt und rendert damit das vollständige Widget mit Galerie/Raster/Listen-Ansicht, View-Toggle und vertikaler Toolbar – identisch zur Nutzung außerhalb des Flex-Repeaters. Zuvor wurde nur ein einfaches Skelett ohne Preview und Ansichts-Umschalter angezeigt. - Flex-Repeater: Readonly-Felder korrekt gerendert –
addTextReadonlyField()undaddTextareaReadonlyField()gaben zuvor einen leeren String zurück. Werden jetzt alsreadonly-Input/Textarea dargestellt. - Flex-Repeater: Radio- und Checkbox-Styling –
addRadioField()undaddCheckboxField()rendern jetzt Bootstrap-3-konforme<div class="radio">/<div class="checkbox">-Wrapper statt nackterradio-inline-Labels. Vertikale Abstände und Ausrichtung korrigiert. - Flex-Repeater: Dead-Code entfernt – Unreachable-Code-Block nach dem
custom-link-multi-Case im Renderer bereinigt.
addModalElement()– Bootstrap-Modal als Sub-Formular direkt im Modul-Input- Trigger-Button und Modal-Titel konfigurierbar über
$label - Sub-Formular als MForm-Instanz, Callable oder HTML-String (
$form) - Button-Klasse (
$btnClass, Standardbtn-default) und Ausrichtung ($align:'left','center','right') frei wählbar - Felder werden beim Speichern des Moduls normal übernommen – kein AJAX erforderlich
- Vollständig im Flex-Repeater unterstützt (eindeutige IDs per Row via
__MFRID__-Placeholder) - Einfache Felder (Text, Select, Checkbox) auch innerhalb des Modals verwendbar; TinyMCE/MarkdownEditor nicht empfohlen
- Trigger-Button und Modal-Titel konfigurierbar über
addColorSwatchField()– Farbwähler mit Vorschau-Input und Swatches-Popup- Speichert direkte Hex-Werte (
#2f77bc) oder CSS-Klassennamen (.bg-primary) - Swatches unterstützen optionalen
preview-Schlüssel für CSS-Klassen-Einträge - Vollständig im Flex-Repeater unterstützt
- Verfügbar in: Klassisches Modul ✓ · YForm ✓
- Speichert direkte Hex-Werte (
- YForm Value-Type
color_swatch– ColorSwatch-Feld nativ in YForm-Formularen nutzbar- Swatches als JSON im Feld-Parameter konfigurierbar
- Korrekte Listenansicht im YForm-Manager (Farbvorschau-Quadrat bei Hex-Werten)
- Verfügbarkeitstabelle in der Dokumentation korrigiert:
addToggleCheckboxFieldundaddColorSwatchFieldspiegeln jetzt die tatsächlich vorhandenen Implementierungen wider
MFormOutputHelper::createLinkData()/normalizeLinkData()– Unified Link-API als einheitlicher Einstieg für alle Link-Typen- Akzeptiert alle Eingabeformen: einfachen String (
redaxo://,https://,mailto:,tel:), Array mitid/name(Repeater-Format aus Issue #357), bereits vorbereitetescustomlink_*-Array - Parameter
mode(frontend|raw|strict): steuert ob Backend-Labels (namemit ID-Suffix) erhalten bleiben oder bereinigt werden - Optionaler Parameter
extern_blank(bool) fürtarget="_blank"bei externen Links
- Akzeptiert alle Eingabeformen: einfachen String (
MFormOutputHelper::normalizeRepeaterItems()– normalisiert Link-Felder in einem kompletten Repeater-Array in einem Schritt- Standard: fügt normalisiertes Array als
<feldname>_normalizedhinzu (kein Datenverlust) - Option
replace => trueüberschreibt das Original-Feld
- Standard: fügt normalisiertes Array als
MForm::useCustomLinkForClassicWidgets(true)– rendertaddMediaField()undaddLinkField()intern über dascustom_link-Widget- Kein Änderung am Speicherformat (
REX_MEDIA_n/REX_LINK_nbleiben identisch) - Standard
falsefür vollständige Rückwärtskompatibilität
- Kein Änderung am Speicherformat (
addCustomLinkMultipleField()– mehrere Custom-Links in einem Feld (Repeater-basiert), Single-Format bleibt unverändertaddConditionalFieldsetArea()– regelbasierte Anzeige von FormularbereichenaddFlexRepeaterElement()– neuer Flex-Repeater als Standardpfad, inkl. stabiler Initialisierung in dynamischen Backend-Kontexten- Kopieren / Einfügen für Flex-Repeater –
copy_paste => trueamaddRepeaterElement()- Copy-Button pro Item speichert Daten im
sessionStorage - Einfügen-Button fügt das kopierte Item als neues Element am Ende ein
- Clipboard bleibt nach Seitenreload erhalten;
__disabled-Status wird nicht übernommen
- Copy-Button pro Item speichert Daten im
MFormRepeaterHelper::decode()– bequemes Dekodieren von Repeater-Werten inkl. Filterung deaktivierter ItemsMFormRepeaterHelper::filterByField()– Items nach Feldwert filtern (optionaler strikter Vergleich)MFormRepeaterHelper::sortByField()– Items nach Feldwert sortieren (asc/desc, auto numerisch/alphabetisch)MFormRepeaterHelper::groupByField()– Items nach Feldwert gruppierenMFormRepeaterHelper::limitItems()– Items begrenzen / Pagination-Unterstützung- Template-API:
MForm::registerTemplate($key, $class),MForm::fromTemplate($key),->applyTemplate($key)über interne Registry (projektweite Defaults wiederverwendbar) - YForm Value-Type
custom_link_multi– mehrere Custom-Links in einem YForm-Feld (JSON-Array) addMFormMediaField()– MForm-natives Media-Widget ohne Reindex-Problem beim Klonen in MBlock- Dokumentationsseite „Was ist neu in MForm 9?" als Einstiegsseite in den Backend-Docs
- Repeater-UI: Aktiv/Inaktiv-Status pro Item (Auge-Icon), Ausgabe-Filter für deaktivierte Items, verbesserte Toggle-All-Logik
- Repeater-Header: Statusanzeige als gefüllter Punkt (grün = aktiv, rot = offline)
- Repeater-Symbole und Bedienung vereinheitlicht (konsistentes Auf-/Zuklappen inkl. verschachtelter Repeater)
- Linklist/Medialist-Repeater-Widget: robuste Übernahme aus Linkmap/Mediapool-Popups
- Medialist-Widget: View-Switch zwischen Listen- und Rasteransicht (
view,view_switch) - Medialist-Widget: Toggle wieder als Symbol-Button in der Toolbar
- Medialist-Widget: echte Datei-Previews analog zur
imagelist imagelistauf das neue List-Widget-Muster umgestellt (schlanker Wrapper ummedialist)- Neue Demo-Module ergänzt (Conditional Fields Builder, erweiterte Repeater-Szenarien)
- Dokumentation erweitert: Repeater, Output-Filter, Conditional Fields, neue Einstiegsseite
- Navigations- und Titelkonsistenz im Backend verbessert
- Bestehende Helper
prepareCustomLink(),getCustomUrl(),getCustomLinkUrl()bleiben unverändert, werden intern auf die neue Normalisierung geroutet
- TinyMCE-Kompatibilität: stabileres Save/Destroy/Reinit bei Add/Move/Sort/Remove im Repeater
- Medialist-Widget: Preview-URLs korrekt aufbereitet (HTML-Entity-Decode für
rex_medialistbutton_preview) - YForm Value-Type
custom_link: Bug im Classic-Template (extern→external) behoben; Anker-Button überanchor: 0ausblendbar - Verhindert Reindex-Probleme in MBlock beim Klonen von Blöcken (via
useCustomLinkForClassicWidgets)
- Bestehende MBlock-Module mit
addMediaField()/addLinkField()benötigenMForm::useCustomLinkForClassicWidgets(true)vor demMForm::factory()-Aufruf, um Reindex-Probleme beim Klonen von Blöcken zu vermeiden – in einem Modul-Input reicht der einmalige Aufruf; das Zurücksetzen auffalseist nur nötig, wenn im selben Request weitere MForm-Instanzen ohne das Flag folgen (z. B. inboot.phpoder Addon-Seiten) - Repeater-Ausgabe:
MFormRepeaterHelper::decode()ist bei Verwendung des Online/Offline-Toggles (__disabled) erforderlich; für einfache Repeater ohne Toggle bleibtjson_decode()ausreichend - Namespace-Änderungen: keine neuen Breaking Changes gegenüber v8 (Namespace
FriendsOfRedaxo\MFormbleibt) - Siehe 08_mblock_migration.md für den Migrationsleitfaden
- fix:
noticeAttribut kann nun auch über den Parameter-Array übergeben werden (z.B.addMediaField,addTextFieldetc.) – schließt #389
- add simple anchor link support for custom link
- add toggle wrapper for inputs element
- add form-group-class attribute
- add html to svg converter
- fix toggle issues with repeater
- Add new icon radio input element field
addIconRadioField - fix some repeater issues with cke5 and collapses
- Repeater issues with addLinkField, addCustomLinkField, addMediaField, addInputs, addToggleCheckboxField, addCollapseElement, setToggleOptions solved
- Repeater CustomLink yForm link option issue solved
- Fix radio collapse not work in repeater issue
- cke5 reinit issue fixed
- add showWrapper functionality
- Major Release and major changes included
- IMPORTANT: breaking namespace change -> from
MFormtoFriendsOfRedaxo\MForm - New: alpine repeater with 2 level support
- New: Complete docs by Alexander Walther @alxndr-w
- All demo modules now directly installable
- New: addRadioImgField
and much more
- IMPORTANT: breaking namespace change -> from
MFormtoFriendsOfRedaxo\MForm - new docs added - thanks @alxndr-w
- added install button to collapse title for example modules
- fixed multiple select default value issue
- fixed select '0' value issue
- ensured full option functionality for description
- some beauty changes
- custom link name issue fixed
- add english translations
- add placeholder example
- add outputs for each examples
- fix button style, ensure that buttons ever will display, added potential disable style for buttons
- min and max count of blocks for repeater
- rename
addRadioImgInlineFieldtoaddRadioImgFieldandaddRadioColorInlineFieldtoaddRadioColorField
- added delete confirmation option for repeater group and fields
- added radio image / color inline field
- default value support for repeater added
- fix repeater parentId issue
- added handling for cke5 move preparation
- fix :id label issue
- added the option to hide the repeater if empty
- css for repeater exchanged
- added repeater examples
- fix :id, move addInputs method to elements class
- add recursion for repeater mform subform obj structure
- change mform css filename
- remove unused $inline variable
- add inputs for default form input forms
- alpine repeater with 2 level support
- remove dynamic creation of property in fragments
- fix PHP 8.1 deprecation warnings
- prevent module action when Gridblock addon is used @skerbis
- make mform manipulable
- Stretch height of ImageList
- PRESAVE-Action: Die REX_VALUES werden nach einer PRESAVE Aktion aus dem $_POST geladen.
- Dadurch sind Validierungen ohne Neueingabe des Contents jetzt möglich. @skerbis
- use mblock:change event to reinit mform elements
- remove form-group wrapper for hidden input fields
- fix collapse accordion aria-expanded click issue
- added the selectpicker class by default, to remove it you have use the class
none-selectpickeron your select element - added mblock compatibility for mform usage of with the selectpicker
- fix some small issues to get ability for combined and nested wrapper element usage
- added column element for some form input column elements
- removed element fragments and added stuff to wrapper fragment
- removed author email address
- wrapper fragment changed, remove id handling in output and js for accordion, collapse and tab
- properties direction changed in
addAccordionField,addCollapseField - open properties added to
addTabField - added inline wrapper element
addInlineElement - minor css changes @skerbis
- add php 7.x compatibility
- add fragment files
- remove data themes and use fragments as theme templates
- add radio-, checkbox and select toggle options for collapse
- add radio-, checkbox and select toggle options for tabs
- create generic collapse, accordion and tab handling for mblock usage
- remove deprecated stuff
- remove default theme config form in addon page
- ytemplates moved from data to addon root path
- remove docs plugin and unused lang strings
- make example modules installable
- revised all example modules remove all .ini's and use instead of them .inc files
- add new wrapper example files
- validations removed
- changed screenshot @skerbis
- correcting readme @skerbis
- add english readme @sckerbis
- add readme to backend pages @skerbis
- add changelog to backend navigation @skerbis
- fix double quote issue @dtpop
-
Removed class methods:
- addEditorField
- addCke5Field
- addFieldset
- closeFieldset
- addTab
- closeTab
- addCollapse
- closeCollapse
- addAccordion
- closeAccordion
- isSerial
- setToggle
- setValidation
- setValidations
-
Renamed class methods:
- addOption => setOption
- addAttribute => setAttribute
- disableOptions => setDisableOptions
- disableOption => setDisableOption
- addFieldsetField => addFieldsetArea
- addCollapseField => addCollapseElement
- addTabField => addTabElement
- addAccordionField => addAccordionElement
- addTooltipInfo => setTooltipInfo
- addCollapseInfo => setCollapseInfo
- addParameters => setParameters
- addParameter => setParameter
Call to undefined method MForm::addFieldset()orMForm::closeFieldset()- Use
addFieldsetArealikeMForm::factory()->addFieldsetArea('Label', MForm::factory()->addTextField(1, ['label' => 'Text']));
- Use
Call to undefined method MForm::addCollapse()orMForm::closeCollapse()- Use
addCollapseElementlikeMForm::factory()->addCollapseElement('Collapse', MForm::factory()->addTextField(1, ['label' => 'Text']));
- Use
Call to undefined method MForm::addTab()orMForm::closeTab()- Use
addTabElementlikeMForm::factory()->addTabElement('Tab', MForm::factory()->addTextField(1, ['label' => 'Text']));
- Use
Call to undefined method MForm::addAccordion()orMForm::closeAccordion()- Use
addAccordionElementlikeMForm::factory()->addAccordionElement('Accordion' MForm::factory()->addTextField(1, ['label' => 'Text']));
- Use
Call to undefined method MForm::addEditorField()orMForm::addCke5Field- Use
addTextAreaFieldwith editor attributes like$mform->addTextAreaField('1', ['class' => 'cke5-editor', 'data-lang' => \Cke5\Utils\Cke5Lang::getUserLang(), 'data-profile' => 'default']);
- Use
Call to undefined method MForm::addOption()orMForm::addAttribute()orMForm::disableOptions()orMForm::disableOption()- Check the list
Renamed class methodsand use the new method name instead of the old one
- Check the list
Call to undefined method MForm::setToggle()- Use
addToggleCheckboxFieldinstead ofaddCheckboxFieldwithsetToggle
- Use
- Fix: UTF-8 encoding for arabic and other charsets in link and link-lists
- Adding return types for yform methods
- New: Dark-mode support for REDAXO >= 5.13 @schuer @skerbis
- Select fix. @dtpop, @IngoWinter, @skerbis, multiple issues fixed regarding single select- and multiselect-fields
- Allow callable @DanielWeitenauer
- new check for JSON Values 1.x.x
- fixed: delete all entries in imagelist @ynamite
- fixed: wrong var prevents cusrtom classes on tabs @bitshiftersgmbh
- Fixed missing external link in widget
- Some minor fixes thx @lexplatt @Hirbod
prepareCustomLink fixed
- readme style fixes @crydotsnake
- remove .formcontrol on input fields type color @olien
- some validation methods changed and calls deleted @skerbis
- added some docs
- minor bugfixes
- use rex_factory_trait in MForm class
- added YForm Links in custom_link
- removed
parsleyvalidation @skerbis, you should use html validations: https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation - deprecated:
closeCollapse,closeTab,closeAccordion - change
addCollapse,addAccordion,addTabfunctionality, useaddFormto add content in this methods - added
addFormmethod - added Media inUseCheck for media inside
custom_linkandimagelistin YForm - added some styling
- added some Svensk översättning @interweave-media
- added some English translation @ynamite
- added some docs @skerbis
The REX_CUSTOM_LINK Var now saves the data in a regular REX_VAR. So the usage of REX_CUSTOM_LINK is not backward compatible. You should move the values from Linklist to a value field.
Parsley has been removed. AddValidation is functionless.
removed closeCollapse, closeTab, closeAccordion
Look at the new wrapper field examples
- added custom link as widget
- exchange custom link for yform and rex_form
- added image list widget for mfrom, rex_form and yform
- add possibility to disable select options
- fix fieldset and grouping issues
- re-add special input types support
- removed tab history
- Parameter must be an array warning fix
- fixed: Media-Button Parameter type space
- Link-Title for Custom-Link Buttons added
- Attributes for media- and link-elements added, which allows validation via Parsley
- fixed: c14n html body wrapping removed
Changes:
- now uses includeCurrentPageSubPath to show pages @christophboecker
- Cache buster will be added by rex core @staabm
- init.js simplified @staabm
- Add Info Tooltip
- Bootstrap Toggle Checkbox als neues Element
addToggleCheckboxFieldhinzugefügt
$mform->addToggleCheckboxField('1.show_icons', [1 => ''], ['label' => 'Icon verwenden', 'label-col-class' => 'col-md-3', 'form-item-col-class' => 'col-md-9'], null, 1);
setLabelColClassundsetFormItemColClasshinzugefügt, ermöglicht das überschrieben der Standard "col-md-x" Classen
$mform->addTextField('2.0.title', ['label' => 'Titel'], ['empty']);
$mform->setLabelColClass('col-md-3');
$mform->setFormItemColClass('col-md-9');
- 4 Alert Message Elemente hinzugefügt
$mform->addAlertInfo('Heads up! This alert needs your attention, but it\'s not super important.');
$mform->addAlertSuccess('Well done! You successfully read this important alert message.');
$mform->addAlertDanger('Oh snap! Change a few things up and try submitting again.');
$mform->addAlertWarning("<strong>Warning!</strong> Better check yourself, you're not looking too good.");
- Collapse Panel für Formular elemente hinzugefügt, das steuern der Collapse über Checkboxen ist möglich
- Output helper class
MFormOutputHelperbereit gestellt
- Javascript für Multipe Selects entfernt, dafür nötiges Hidden-Input ebenfalls entfernt.
- Zu beachten bei Updates:
- Ein Hidden-Input Feld welches Komma-separiert die selected-options aufnimmt gibt es nicht mehr.
- Multiple Selects werden künftig als JSON-String direkt im REX_VALUE gespeichert.
- Dies Wirkt sich auf die Auswertung der REX_VALUES im Modul-Output aus.
- Künftig muss für diese REX_VALUES
rex_var::toArraygenutzt werden um die JSON-Strings in Arrays zu decodieren. - Beim editieren alter REX_VALUES gehen keine zuordnungen verloren, beim erneuten Speichern wird im neuen Format gespeichert.
- Im DB Column des REX_VALUES wird aus dem String
1,2der JSON-String["1","2"]
- Zu beachten bei Updates:
- Docu Plugin hinzugefügt
- Das alte MForm Github Wiki wurde in das Docu-Plugin übernommen
- Alle Inhalte wurden überarbeitet
- Thanks Alexander Walther, Paul Götz, Tim Filler
- Bootstrap Tabs integriert
- Selected und Checked haben einen Leerzeichen-Prefix erhalten.
- EN-Sprachdatei wurde übersetzt
- Thanks Thomas Skerbis, ynamite