Tuesday 1st October, 2019

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 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


  • 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 superseeds display) and wireFormat options. Examples have been updated to reflect this.
    • e-field datetimecan 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 the document to determine when a new Editor instance has been created.
    • opened and closed events which are similar to the existing open and close but called when the form is shown/hidden (taking account of any animations).
    • upload and uploadMany now support the attr option that most other field types support, allowing attributes to be set directly on the input element
    • actionName parameter which can be used to change the intent parameter name for data submission to the server (for integration with WordPress)
    • i18n.create.message and i18n.edit.message options
  • PHP
    • Editor->actionName() parameter which can be used to change the inbound intent parameter name (default action). To be used with actionName.
  • NodeJS
    • Can use an as alias for the Editor main table and Mjoin tables now
  • Example
    • Parent / child editing example


  • Javascript
    • Pass the event parameter into the action callback for buttons().
    • 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.
  • Styling
    • Bootstrap 4 integration now uses modal-dialog-scrollable which was introduced in Bootstrap 4.3 (no change for 4.0 - 4.2).


  • Javascript
    • Allow fields.id to operate on the upload and uploadMany field types
    • ajaxData for upload is now passed the File 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 a return false; it required a Promise to be returned. It will now work with both.
    • datetime was triggering a change 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 and uploadMany 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
  • .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)
  • 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 been Upload.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 returning false 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