Editor 1.9.1 release notes
Our first patch release for the 1.9.x Editor series. It has been quite a while since our last release of Editor, so this is a cumulative update with a number of fixes for issues that have been discovered since 1.9.0. Of particular interest in this release is the focus on the datetime
input which now has displayFormat
and wireFormat
options allowing it to edit a format different from what is shown. It will also display the date and time pickers side by side now for better use of space.
For details on the changes in 1.9, please refer to the 1.9.0 release notes.
Downloads
Downloads of specific versions of Editor are only available to license holders. Please see the download page for information about the current release version.
Release notes
New
- Javascript
- Ability to have a different format for the datetime fields for the value from what the end user sees. This is achieved using the
displayFormat
(which superseedsdisplay
) andwireFormat
options. Examples have been updated to reflect this. - e-field datetime
can take a default value of
--now` which will be automatically translated into the current date. This allows the field default to be transferred via JSON initEditor
which can be listened for on thedocument
to determine when a new Editor instance has been created.opened
andclosed
events which are similar to the existingopen
andclose
but called when the form is shown/hidden (taking account of any animations).upload
anduploadMany
now support theattr
option that most other field types support, allowing attributes to be set directly on theinput
elementactionName
parameter which can be used to change the intent parameter name for data submission to the server (for integration with WordPress)i18n.create.message
andi18n.edit.message
options
- Ability to have a different format for the datetime fields for the value from what the end user sees. This is achieved using the
- PHP
Editor->actionName()
parameter which can be used to change the inbound intent parameter name (defaultaction
). To be used withactionName
.
- NodeJS
- Can use an
as
alias for the Editor main table and Mjoin tables now
- Can use an
- Example
- Parent / child editing example
Updates
- Javascript
- Pass the event parameter into the
action
callback forbuttons()
. datetime
when showing both date and time will now show the date and time pickers horizontally, rather than vertically stacked (if there is enough width in the window, otherwise it will be vertically stacked still). Just date or just time has no difference.
- Pass the event parameter into the
- Styling
- Bootstrap 4 integration now uses
modal-dialog-scrollable
which was introduced in Bootstrap 4.3 (no change for 4.0 - 4.2).
- Bootstrap 4 integration now uses
Fixes
- Javascript
- Allow
fields.id
to operate on theupload
anduploadMany
field types ajaxData
forupload
is now passed theFile
object for the file being uploaded- Bootstrap 3 and 4 integrations now use a model per Editor instance (for support of the CSV import)
- Bootstrap 4 modal integration rewritten to use a different modal per Editor instance. This allows for CSV import which uses two different Editors.
- Bootstrap 4 - starting a click in the modal and then dragging outside before releasing the mouse button would result in the modal closing, which could result in changes being lost by mistake.
- Clicking Clear button in file upload in Bootstrap would reload the page.
- Don't close Bootstrap modals if a click starts inside the modal and then drags outside of it
dependent()
's callback function (if used as a function rather than Ajax) is executed with the scope of the Editor instance.initSubmit
could not be cancelled with areturn false;
it required aPromise
to be returned. It will now work with both.datetime
was triggering achange
event when a value was selected by the end user, but it did so indicating that it was Editor that set the value (using an optional second parameter to the change callback), which was incorrect.- Encoded £ characters were not being decoded
- Hide datetime picker on scroll so it doesn't flow out of the container and look disconnected.
- Inline editing with KeyTable and FixedColumns would edit a fixed column's cell, but behind the fixed column! This is now addressed, but note that it requires FixedColumns 3.8.0.
- jQuery UI integration -
focus: null
for the form options wouldn't work - Semantic UI integration, the
focus
form option had no effect - Throwing an error when can't find DataTables will now give a stack trace
- Throw warning if uploading with
ajax.data
as a plain object. It must be a function for upload to work. - When
upload
anduploadMany
fields were disabled, it was still possible to use the clear buttons to change their values - Tidy up the envelope display when hiding it by removing from the document
- Allow
- .NET
- Better support for database types. New
Field.DbType()
method which can be used to specify a specific data type - Exceptions were being shown in the output log. They were caught and handled, but they were messy!
- Mjoin upload database referenced files wouldn't be populated on data load
- Only run file upload clean when validation passes
- Oracle case sensitive for id fetching
- Possible to bypass validation for create / edit by changing the
action
to something unexpected - Support for delete with an aliased table name
- Support for server-side processing search on non-text fields with Postgres
- Table names with sub-string matching for mjoin could result in an SQL error
- When no upload action was given, the primary key for the newly uploaded file's record did not propagate from the Upload instance to Editor (null was used)
- Better support for database types. New
- NodeJS
- Aliased tables couldn't have rows deleted
Editor.where()
method was adding conditions as arrays (lack of spread operator).- Knex builder can be used as the db type being passed in
- Mjoin when used without a link table, and with two tables which have an
id
column would result in an SQL error - Only run file upload clean if validation passes
- Possible to bypass validation for create / edit by changing the
action
to something unexpected postRemove
server event was passing the row ids that were removed with prefixes. All other events removed the prefixes. Fix - NodeJS:postRemove
server event now only triggered for rows that were actually deleted (previously it was also for any rows which were individually cancelled as well).- Update npm dependencies
Upload.Db
should have beenUpload.DbOpts
per the docs- Wasn't waiting for any joined tables to be inserted before returning a result
- With larger datasets file upload information wouldn't be loaded
preRemove
returningfalse
would result in an error- Support for server-side processing search on non-text fields with Postgres
- Allow https on URL validation
- Improved typing support related to Knex upgrade
- PHP
- Added support for aliased parent tables in join
- 5.3 compatibility
- Aliased table names now support deleting rows (in databases which support aliasing of table names for a delete command)
- Allow ordering on concatenated fields when using server-side processing
- Composer fails to autoload Editor libraries
- Error message for boolean validation failing would not be used
- If more parameters are submitted than PHP allows, an error is now shown.
- If using a database name in the constructor it wasn't possible to delete data from a table. You can now, but you must also specify the database and table names in the field names (to protect against possible naming conflicts which Editor doesn't automatically check for like SQL does)
- Invalid SQL could be generated when using
where ... in ...
. mb_strlen
can be disabled in PHP. The minLen and maxLen validators need to allow for that.- Mjoin validators wouldn't run
- Possible to bypass validation for create / edit by changing the
action
to something unexpected - Run file upload clean only if the validation passes
- Support for server-side processing search on non-text fields with Postgres
- Docs
formatToSqlDate
for the NodeJS formatter was incorrectly named Site: Fix generator for Node datetimes
- Examples
- Responsive example didn't allow inline editing when the value of a collapsed cell was empty
- PHP REST example used incorrect URLs
- XML source files for examples were incorrectly included in the download bundles