Features
Backend
- Previously, you could already use certain types of placeholders in database and LDAP queries. Now you can also make use of user placeholders such as [%USER.id%] or [%LAST_USER.id%]. If a database or LDAP query is initiated via AJAX from a web form, it is important to send the current ID of the form session via the frid parameter for this to work. The code editor offers a code template for database and LDAP queries which already contains this parameter.
- In the appointment management menu, you can now enter a custom subject and description, which is used for the events in the ICAL calendar file for an appointment. You can also enter placeholders can be used here, including placeholders for I18N variables.
Form designer
- When you assign a data source to a select element, you can now also configure a column for the title of each option, in addition to the display label and value of the option. When the select element is displayed as a list of checkboxes or radio buttons, the title is shown to the user when they hover over an option with the mouse.
- In previous FORMCYCLE versions, the values of all columns from a data source were always added to the select element as data attributes (e.g. data-col0, data-col1). Now you can deactivate this behavior so that such attributes are not generated any longer. This may be useful in case the data source contains sensitive data you do not want to make public.
Changes
Backend
- For each appointment, you can enable the ICAL URL which contains all booked appointments and can be imported into mail clients or calendar applications. This ICAL calendar now includes the fields X-PUBLISHED-TTL and REFRESH-INTERVAL. This makes it easier for mail programs and calendar applications to decide how often they should check for updates. Currently, this value is set to 1 hour.
- The menu System -> Server information now also list the Malware scan directory, which is used to store uploaded files temporarily when the system performs a malware scan.
Form designer
- When you add a condition to a form element (e.g. hidden-if), you can already enter a custom formula such as [%tf1%] == "Test". Starting with FORMCYCLE 7.4.0, this formula can now access the JQuery instance of the current element via the this context. This is especially useful for repeated elements, when you want to access the current element repetition or another element within the same repeated container. For example, if both tf1 and sel1 are form fields within a repeated container fs1, then you can use the formula this.closest(".dynamic-row").find("[data-org-name=sel1]").val() === "5" for tf1 in order to check whether the corresponding select field from the repeated container sel1 has a value equal to 5.
Fixes
Backend
- Form export files with a manually created state that was named Received can now be imported correctly again.
- Various small bug fixes and security improvements.
Frontend forms
- Externe Nutzer, welche über Open-ID-Connect angebunden sind, können sich nun auch wieder am Formular anmelden, wenn das Formular über einen Frontend-Server aufgerufen wird.
- Das automatische Hochladen bei Upload-Elementen funktioniert nun auch wieder bei Formularen, welche per AJAX oder über die API eingebunden sind.
- Wurde in einem Formular ein Terminkalender ausgewählt und die serverseitige Validierung an irgendeinem Element aktiviert, wurde der ausgewählte Termin gelöscht, falls das Formular abgesendet wurde und der Server die abgesendeten Daten abgelehnt hat. Dies wurde nun behoben, sodass der ausgewählte Termin auch weiterhin ausgewählt bleibt.
- Wird ein Element wiederholt geschaltet, kann zudem noch ein anderes Element als Trigger für die Wiederholung festgelegt werden. Beispielsweise kann ein Textfeld als Trigger verwendet werden, sodass im Textfeld die Anzahl der Wiederholungen steht und bei Änderungen des Werts im Textfeld sich auch die Anzahl der Wiederholungen befindet. Im letzteren Fall konnte es vorkommen, dass in der neu hinzugefügten Wiederholung der Initialzustand von Bedingungen wie Versteckt-Wenn nicht korrekt gesetzt war. Dies wurde nun behoben.
- Betrifft Auswahlelemente, für welche die Option Autocomplete aktiviert ist:
- Neben dem <select>-Element auch noch ein <input>-Element generiert. Der Name dieses <input>-Elements erhält die Nachsilbe _autocomplete. (etwa "sel1_autocomplete"). Auch das Attribut data-name wird nun korrekt auf den abgeleiteten Namen gesetzt.
- Seit Version 7.0 wurde bei der Auswertung von Bedingungen wie Versteckt-Wenn fälschlicherweise der im Textfeld eingetragene Wert zum Prüfen der Bedingung verwendet. Dies wurde nun korrigiert, es wird der Wert der ausgewählten Option verwendet. Zur Wahrung der Abwärtskompatibilität wurde eine neue Einstellung im Formulardesigner rechts im Eigenschaften-Panel bei Formular eingeführt. Ganz unten bei Fortgeschritten findet sich die Option Bei Autocomplete Text der Option für Bedingungen verwenden. Bei bestehenden Formular ist diese aktiviert, bei neuen Formularen deaktiviert. Wir empfehlen, diese Option bei neuen Formularen auch deaktiviert zu lassen.
Form designer
- Fixed a bug where the CSS classes of the most recently selected element was applied to all selected elements. This bug only occurred when multiple elements were selected at the same time.
- The setting for the W3C compliant mode defaults to disabled for old forms again. It is still enabled by default for new forms.
Workflow
- The dialog for loading unsaved changes is now closed again after you press a button.
- When executing an HTTP request action and the server responds with a redirect (HTTP header: Redirect) and the redirect is a relative URL, that URL is now resolved against the request URL. This is the correct as specified by RFC 7231. Previously the URL was not resolved at all.
- There is also a new option that lets you choose how to resolve relative URLs: against the request URL, against a custom URL, or not at all.
For plugin developers
- You can now access the data of the current form request session ("FRQSession" ) within plugins of type IPluginFormPreRender, IPluginFormPrePersist, IPluginFormPreProcess, IPluginFormPreResponse as well as in workflow action plugins and possibly also placeholder plugin. Furthermore, you can also write values back to the FRQ session via the return value of IPluginFormPreRender, IPluginFormPrePersist, IPluginFormPreProcess, IPluginFormPreResponse, and workflow action plugins.
- Plugins of type IPluginFormPreRender are usually only executed when a form is opened via the /form/provide URL. Now you can opt-in to have your plugin get executed in other situations as well, such as when opening a form in the inbox or when printing a form via the print services. To do so, override the shouldExecute method of the IPluginFormPreRender plugin.