| Release | 3.0.4233
## RealObjects Nimbudocs Editor Readme | Date | 2021-03-29

# Documentation

## ReadMe

- Current Release Information
- System Requirements
- Deployment of the Nimbudocs Editor server:
  - Virtual Appliance
  - Package
- Integration Code & Resources
- Current Limitations
- Support

## API Documentation & Guides

The API documentation contains information about the JavaScript API doc of Nimbudocs Editor and also includes integration guides.

This documentation is available on the installed Nimbudocs Editor server and can also be downloaded from there.

# Release 3.0.4233 (released 2021-03-29)

## Improvements

- Improved logging output for internal editor lock/unlock.
- Added system information log output (on level INFO, including CPU, garbage collection, Java internal heap, thread and opened editors information).

## Bug fixes

- Resolved memory issue caused by a rare condition with non-responding editors.

# Release 3.0.4226 (released 2020-11-17)

## Bug fixes

- #8237: Preventing an issue with the server startup in certain situations (e.g. no internet access).
- #8247: Resolved issue with management interface not starting correctly when the management WAR file is loaded before the Nimbudocs Editor WAR.

## Changes

- Updated Java to OpenJDK 15.0.1
- Updated to Jetty 9.4.33.v20201020

# Release 3.0.4217 (released 2020-09-24)

## Updated dependencies of the Nimbudocs Editor server to the latest versions to include various security updates. The updates include:

- Updated Jetty from version 9.4.26 to 9.4.31.
- Updated Apache CXF from version 3.2.6 to 3.4.0.
- Updated Jackson from version 2.9.6 to 2.11.2.
- Updated Spring from version 4.3.18 to 5.2.8.
- Updated Java to OpenJDK 15.
- Updated Nimbudocs Editor Docker base image dependency.

## Bug fixes

- #8106: The management interface is now available in the Docker image.
- #8149: Resolved issue with the healthcheck endpoint in the management interface.

# Release 3.0.4210 (released 2020-07-14)

## Bug fixes

- #8129: Resolved permissions issue preventing the Nimbudocs Editor server from writing to Java temp directory when using the Release Appliance or the Beta Appliance. This solves issues with web fonts and images pasted from external sources.

# Release 3.0.4209 (released 2020-07-10)

## Bug fixes

- #8056: Moved the temp directory used by the Nimbudocs Editor Java VM to a different location. This resolves crashes that occurred when the OS deleted the temp directory while Nimbudocs Editor was running.
- #8097: The appliance dictionaries (configured through the server parameter "applicationDictionaryDir") now use UTF-8 encoding. This resolves an issue were correction suggestions could be delivered to the client with incorrect encoding.
- #8105: When the automatic spelling checker is enabled, spell check markers (wiggly lines) are now updated when learning or unlearning a word through the API.
- #8082: Text lines no longer overlap under certain circumstances when typing rapidly in Chrome.
- #8084: Resolved issue were the caret was moved to the end of the first line of a paragraph when inserting two consecutive spaces in Chrome.
- #8005: The state of toggle-show-semantic-elements is now preserved after hibernation.
- #8006: The editor now loads correctly if `showSemanticElements` is configured with `false`.

# Release 3.0.4202 (released 2020-03-10)

## Features

- #7875: Added a `page-mode-double-sided` mode.

## Improvements

- #7943: It is now possible to display a `Default` entry in the font drop down.

## Bug Fixes

- #7973: Resolved issue with setting the configPath on Windows.
- #7988: The viewport of the header footer editor is now displayed correctly, if the main editor is in full screen mode.
- #7990: Resolved issue which in rare case could lead to editors not being removed correctly.
- #6999: Fixed error that could lead to an invalid editor when trying apply a paragraph format in a multi-column context.

## Changes

- #7965: Updated Jetty to 9.4.26

# Release 3.0.4196 (released 2020-01-21)

## Features

- #7876: It is now possible to sort the font family list. Introduced new `onfontfamilyupdate` callback which receives an array containing a list of all available font families. This can be sorted and must be returned in the callback function.

## Improvements

- #7916: Improved overlay behavior when editor is restored from disc.
- #7920: Improved reliability of the `oncontentchange` callback.

## Bug Fixes

- #7846: The caret no longer jumps when typing in a table cell that spans multiple pages (This change log entry was already added by mistake to the previous release).
- #7909: Resolved issue with scroll bars when using zoom below 100% in IE/Edge.
- #7935: Improved detection when web fonts have to be proxied by Nimbudocs Editor.
- #7936: Resolved issue with duplicate font proxying.
- #7938: Resolved issue with justified text for certain font sizes.

# Release 3.0.4186 (released 2019-12-10)

## Features

- #7816: Added semantic elements actions. This allows to e.g. toggle `strong`, `em` and other semantic elements. Furthermore semantic elements will now be visualized/highlighted in the editor. This can be configured in the configuration options (`showSemanticElements`, defaults to true) or toggled by using the `toggle-show-semantic-elements` action.
- #7895: Added a server configuration parameter (`instanceName`) whose value is set as custom response header for each request. Can be used to identify the node in a load balanced scenario.
- #7651: Styles set on the main editor can now be passed to the header/footer editor with the `passdownStyles` option on the header/footer editor configuration object.

## Improvements

- #7849: The character encoding declaration is now consistent in the default template.
- #7873: The RPM Repo update links in the Virtual Appliance now use HTTPS.
- #7884: Added documentation for the configPath server parameter.
- #7887: Shortened the web-font prefix to avoid font-family name length issues in IE11.
- #7888: Corrected localization of some multi-column actions.
- #7889: Changed documentation of color-related actions and options.
- #7892: The TTF variants of the core fonts Arimo, Tinos and Cousine are now installable.

## Bug Fixes

- #7846: The caret no longer jumps when typing in a table cell that spans multiple pages.
- #7851: Resolved issue with the `defaultDocumentTemplateUrl` configuration option.
- #7861: Table actions are now enabled when the table is inside a container (div).
- #7891: The image properties dialog now correctly previews image from relative URL.
- #7897: Resolved issue with tool bar drop down menus in IE11.
- #7899: Resolved width unit issue in image properties dialog.
- #7902: Resolved issue which could occur when default fonts are disabled and the document is closed.
- #7912: Fonts from style sheets which are loaded through @import are correctly resolved now.
- #7917: REST Asset CSS files are now returned with mime-type `text/css`.

## Changes

- The font for the default theme is now Arimo instead of Verdana.

# Release 3.0.4169 (released 2019-09-19)

## Bug Fixes

- #7757: Check boxes surrounded by inline elements can now be clicked in Form Fill Out Mode
- #7760: If the retriever is enabled the editor now loads properly if the `defaultDocumentTemplateUrl` option is specified
- #7764: User preferences can now be set properly.
- #7765: Resolved issue with `contentchange` event being thrown with every response from the server.
- #7774: The ondocumentloaded event is no longer thrown for document manipulating API method calls.
- #7793: Document containing only empty block can now be loaded.
- #7814: Resolved issue which prevented the header/footer editor to open correctly.
- #7826: Resolved issue with typing in Chrome.
- #7832: Inline SVGs are now displayed correctly again.
- #7836: Resolved platform compatibility (Windows) issue with font-path.

## Changes

- Updated to Java 12.0.1
- Restructured/Redesigned Documentation

# Release 3.0.4160 (released 2019-06-12)

## Changes

- Updated underlying MARTHA rendering engine and PDFreactor version to be in sync with the PDFreactor 10.1.10722.2 release.

# Release 3.0.4159(released 2019-05-24)

## Bug Fixes

- #7673: Resolved an issue where the server was not always notified when a client session was closed (i.e. closing the tab or browser or when navigating away from the editor), resulting in a non-closed editor session on the server.
- #7695: Tool bar icons are now correctly displayed when using browser zoom in Chrome.
- #7706: Resolved memory issue which could occur under certain circumstances.

## Changes

- Security Improvements (CVE IDs are registered for PDFreactor but also apply to Nimbudocs Editor)
  - Enhanced security to protect against potentially malicious 3rd party content or configurations, especially regarding file system access and server side request forgery. Nimbudocs Editor only allows loading resources from public, private and local IP addresses or hosts, using file URLs is not allowed.
    CVE-2019-12153: by Sean Melia of Aon’s Cyber Solutions.
  - Loading of XML external entities and other XML parser resources is now disabled.
    CVE-2019-12154: by Sean Melia of Aon’s Cyber Solutions.

# Release 3.0.4145 (released 2019-04-12)

## Bug Fixes

- #7665: Fixed issue with removing hibernated sessions under specific circumstances.
- #7658: Editor can now be restored from memory hibernation again.
- #7656: Editor can not reliably be restored from disc hibernation under specific circumstances (scrolling while hibernated).
- #7585, #7586, #7587: Fixed various issues with Auto Correct.

# Release 3.0.4141 (released 2019-01-31)

## Bug fixes

- Removed time bomb from release version.

# Release 3.0.4137 (released 2018-12-18)

## Bug Fixes

- #7532: When using a non-italic font, synthetic italic is applied again when converting a document to PDF.
- #7531: Empty inline elements no longer prevent their parents from collapsing through.
- #7110: The dimensions of multi-page collapsed tables with varying border widths are now determined correctly.

# Release 3.0.4135 (released 2018-12-13)

## Features

- #7439: It is now possible to restore an auto saved editor instance, when starting a new editor on the client. This is possible by using the REST API and the `restoreAutosave` option. With the REST API it is possible to move an auto save state from one server to the other, the `restoreAutosave` option allows to restore from the auto save state with a given document and user ID.
- #7360: It is now possible to define a document (`defaultDocumentTemplate(Url)`), which should be loaded by default when starting the editor or invoking the `new-document` action.
- #7331: Words can now be stored persistently on the server if the `applicationDictionaryDir` server parameter is configured. Words need to be learned through `learnWord` with persistence level `application` or through the `spellcheck-add-word-application` action to be learned persistently. Also added appropriate new REST API methods for Management Interface.
- #7157: Added new tool bar UI element: Drop down icon.
- #7144: It is now possible to enable or disable pre-loading of fonts with the new configuration option `fontSettings.preloadFonts`
- #7010: It is now possible to configure which options are available in the search & replace dialog.
- #7046: It is now possible to specify style sheets and a document to be loaded as part of the option object.
- #6862: Improved display of Korean text by using a better fall back font for CJK.
- #6950: Improved Cut / Copy / Paste buttons in IE, Edge and Chrome. The behavior is now as follows:
  - IE11: cut, copy and paste fully supported.
  - Chrome: cut and copy supported, paste will trigger paste dialog.
  - Edge: cut and copy supported, paste will trigger paste dialog.
  - Firefox: cut, copy and paste still trigger dialogs.
- #6926: It is now possible to leave the comparison mode through the API. The accept/reject-all-diff actions now terminate the comparison mode. Added `endComparisonMode` API method which accepts all differences and ends the comparison mode by default. The method has an optional boolean argument which rejects all differences instead when the argument is set to true.
- #6661: It is now supported to resize table columns defined with "col" elements.
- #6604: The CSS property `word-spacing` is now supported.
- #5586: Added support for thead / tfoot (repeating headers / footers) in the "Insert Table" and "Table Properties" dialog.
- Added actions and UI to enable multi column editing (experimental).

## Improvements

- #7460: The promise returned by calling `invokeAction` on a custom JavaScript action can now be resolved within the `invokeListener` of the custom action. See the example below: `

      var testAction = editor.getAction("test-action");
      if (testAction !== null) {
          testAction.addInvokeListener(function(e) {

              var p1 = editor.fetchBodyFragment();
              var p2 = editor.fetchNumberOfCharacters();

              jQuery.when(p1,p2).then(function(valp1, valp2) {

                  var str = "<html>"+valp1 + "<p>Original document contained "+valp2+ " characters</p></html>";
                  editor.loadDocument(str).then(function(ld){
                      e.deferred.resolve("Ready");
                  });
              });
              e.preventDefault();
          });
      }

  ` Please note that it is necessary to call `e.preventDefault()` so that the promise `e.deferred` is available.
- #7135: Improved error handling/logging when trying to use a comparison API method without a comparison license.
- #7120: The callbacks which are customizable by the integrator (e.g. `onready`, `onsessionlimitreached`) now have improved error handling.
- #7116: Improved indentation behavior for list elements when using the ruler.
- #7022: Added a server health check method to the REST service.
- #6970: A list of default shortcuts is now part of the `action reference tutorial`.
- #6737: Added documentation for Track Changes functionality.
- #6629: Improved CSS property documentation.
- Web Fonts with absolute http(s) URLs, which do not set appropriate CORS header will now be cached and delivered by the Nimbudocs Server. This improves web font handling in general.

## Bug Fixes

- #7332: The dictionaryChange event now provides information about the word that was learned or unlearned.
- #7271: Caret no longer jumps randomly when typing in a very long justified paragraph.
- #7203: It is now possible again to set the language to `British Medical` when auto spell check is active.
- #7186: The focus is now correctly returned to the editor when calling paste-browser in a context in which it is prohibited.
- #7176: Shorthand properties for page size are now correctly applied to page properties dialog.
- #6931: It is now possible to select a column spanning multiple rows.
- #6915: Resolved typing issue after style selection in context menu in IE and Edge.
- #6907: Styles set as user agent styles with `-ro-priority: -1` are now correctly applied in page margin boxes using the `xhtml()` function.
- #6878: The line connecting deleted content with the appropriate bubble is now correctly displayed in table cells.
- #6873: The caret no longer jumps when typing in the first cell (which spans multiple pages) of a table.
- #6844: Table handles for tables split across two (or more) pages are now correctly displayed.
- #6843: It is now possible to search for two consecutive blank spaces using the "Find / Replace" dialog.
- #6779: The "assets/main.css" resource now includes the page counter styles from the header/footer editor.
- #6776: The `clearUserAgentStyles` method no longer removes track changes bubble styles.
- #6774: Check boxes can now be checked again.
- #6731: Inserting a page break while the caret is in (before) a page break now works correctly.
- #6684: The page no longer scrolls to the caret position after checking a check box.

## Changes

- Updated layout engine and built-in PDFreactor to version 10.
- Updated to Java 11.0.1
- Updated Jetty to 9.4.8
- Internet Explorer 10 is no longer supported.
- Deprecated support of Internet Explorer 11
- Deprecated the `disableDefaultFonts` configuration option. Instead we have a new `fontSettings` configuration option object, with `disableDefaultFonts` and `preloadFonts` (see feature #7144) as child configuration options.
- Removed deprecated options and methods:
  Options:
  - hideSingleTabs
  - hideToolbarPanelDescription
  Methods:
  - addUserAgentStyles
  - addUserAgentStylesFromUrl
  - addUserStyles
  - addUserStylesFromUrl
  - addEmbeddedStyles
  - removeEmbeddedStyles
  - setEmbeddedStyles
  - clearUserStyles
  - clearUserAgentStyles
  - removeUserAgentStyleSheet
  - removeUserStyleSheet
  - hasContentChanged
  - fetchEmbeddedStyles
- Changed default icon set. The previous icon set can be used by setting `iconRepositoryUrl` to `http://$SERVERURL/client/nimbuEditor/images/editoricons-legacy/` or `spriteIconCssUrl` to `http://$SERVERURL/client/nimbuEditor/images/editoricons-legacy/sprite/spriteicons.css`.
- The "Administrative GET requests" were removed and replaced by an official REST management API (see REST tutorial). The Nimbudocs Editor Management REST service runs on a different port and (base) URL: `http://yournimbudocsserver:9424/management/`. Without an installed Management Service, the Webmin administration interface will not function correctly.
- Removed server parameters: `customFontContextPath`, `fontCacheContextPath` and `imageCacheContextPath`. All those resources are now delivered by the Nimbudocs Editor REST API. It is still required to configure the `customFontFilePath` if you want to use custom fonts.
- The `fetchAnnotationCount()` and `fetchChangesCount()` methods now return an integer instead of a string (as it was already correctly described in the documentation before).
- The page properties `mirror` property is now a boolean instead of a string.
- The `fetchCurrentTableColumnCellAttributes`/`setCurrentTableColumnCellAttributes` and `fetchCurrentTableRowCellAttributes` `setCurrentTableRowCellAttributes` now return/expect an array of attribute objects.
- The following methods can now be used asynchronously (they return a promise which is resolved when the method is completed):
  - setWidth
  - setheight
  - toggleMaximize
  - toggleFullscreen
  - toggleSidebar
  - addDocumentStyleSheet
  - addEditorStyleSheet
  - addAuthorStyleSheet
  - clearDocumentStyleSheets
  - clearEditorStyleSheets
  - clearAuthorStyleSheets
  - removeDocumentStyleSheet
  - removeEditorStyleSheet
  - removeAuthorStyleSheet
  - setDocumentBaseUrl
  - setDocumentName
  - setBlockElementAttributes
  - setCurrentElementContent
  - setElementAttributes
  - setParentElementByNameAttributes
  - setParentElementByNameContent
  - setElementListAttributes
  - setElementListStyles
  - removeParentElementByNameAttributes
  - insertContent
  - insertContentFromUrl
  - setHeadElementContent
  - setIgnoreReadOnly
  - loadDocumentFromUrl
  - loadDocumentXsltFromUrl
  - loadDocumentXsltFromContent
  - loadDocument
  - importLegacyDocumentFromUrl
  - importLegacyDocument
  - setBodyFragment
  - moveCaretToDocumentEnd
  - moveCaretToDocumentStart
  - moveCaretToNextBlock
  - moveCaretToNextPage
  - moveCaretToPreviousBlock
  - moveCaretToPreviousPage
  - moveToBookmark
  - moveToNextBookmark
  - moveToPreviousBookmark
  - removeCurrentTableColumnCellAttributes
  - removeCurrentTableRowCellAttributes
  - setContentChanged
  - setCurrentTableColumnCellAttributes
  - setCurrentTableRowCellAttributes
  - setSelectedColumnsCellAttributes
  - setSelectedRowsCellAttributes
  - setSelectionColor
  - lock
  - unlock
  - setHideOverlayFlag
  - requestFocus
  - setPasteHandler
  - setPageProperties
  - updateUIConfig
  - endComparison
  - spellChecker.learnWord
  - spellChecker.unlearnWord
  - spellChecker.setDictionary
  - spellChecker.ignoreWord
  - spellChecker.ignoreAllWords
  - spellChecker.changeWord
  - spellChecker.changeAllWords
  - compareDocumentsFromUrl
  - compareDocumentsFromContent
  - compareDocumentFromContentToEditorContent
  - isComparisonMode
  - endComparison
- spellChecker.getDictionary was renamed to spellChecker.fetchDictionary.
- The `onrecover` callback now receives an array of `recoverObjects` as argument instead of a single `recoverObject`.
- #6697: The new blue Webmin theme is now supported and the default theme.

# Release 2.4.4130 (released 2018-11-22)

## Bug Fixes

- #7493: Resolved issue with restoring the editor from (disc) hibernation.
- Resolved memory issue when consecutively hibernating(disc)/restoring the editor.

# Release 2.4.4099 (released 2018-10-12)

## Bug Fixes

- #7366: Refined resolution of issues which could occur when `waking up` the editor from hibernation through API calls.
- #7438: IE 11: Dropdowns in a dialog are usable again when having a selection in a table.

## Changes

- The `hibernateEditor` method now returns a promise that will be resolved as soon as the server is hibernated.The promise will be rejected when calling hibernateEditor() while the editor is already hibernated or the editor is restoring from hibernation. It is not required to use the promise, as API calls invoked directly after "hibernateEditor()" (programmatically or by user interaction), will be queued to execute after hibernation has completed. Nevertheless it is recommended and good practice to use the promise, as instantly calling an API method will lead to the situation that the editor is restored as soon as the promise is resolved due to the queued API call.

# Release 2.4.4086 (released 2018-09-13)

## Features

- #7205: Added API method to explicitly hibernate the editor (optional remove also from memory as soon as possible).

## Bug Fixes

- #6574: Copied editor content from Internet Explorer is no longer surrounded by line breaks.
- #7223: Improved reliability of typing preview, when using the arrow keys and typing very fast.
- #7366: Resolved issues which could occur when `waking up` the editor from hibernation through API calls.

# Release 2.4.3933 (released 2018-03-14)

## Bug Fixes

- #7213: Fixed an issue where placing the caret and typing in a read-only section caused the caret to move to the left and insert content once it reached an editable element.

## Improvements

- #7214: It can now be configured via CSS if typing between read-only elements is allowed. Two new CSS properties were implemented for this purpose: -ro-prevent-insertions-before and -ro-prevent-insertions-after. Please see the CSS Property Documentation for details.

# Release 2.4.3926 (released 2018-01-06)

## Bug Fixes

- #7118: Additional improvements for "Typing over fully or partially selected content with an inline format no longer removes this inline format".
- #7137: The Auto Correct dialog can now be closed correctly.
- #7139: Documentation improvement for the `insertContent` method, which was incorrectly documented as asynchronous.

# Additional Notes

## Time Bomb

This version of the Nimbudocs Editor Beta will cease to function on 2018-03-30.

# Release 2.4.3917 (released 2017-12-17)

## Improvements

- #7126: The PDF/Print dialog now has additional configuration options.

## Bug Fixes

- #7097: It is now possible again to upload fonts using the Webmin interface.
- #7103: It is now possible again to enable/disable the maintenance mode using the Webmin interface.
- #7118: Typing over fully or partially selected content with an inline format no longer removes this inline format.
- #7119: It is now possible to use data URIs as background image.
- #7133: When an image cache is configured on Windows, URLs serialized for background images no longer include back slashes.
- #7123: New pages are now correctly displayed when content overflows a named page.

# Release 2.4.3907 (released 2017-11-16)

## Bug fixes

- #7040: Server parameter 'customFontContextPath' now also works on Windows.
- #7087: Fixed typing issue when quickly typing after deleting selection.

# Release 2.4.3891 (released 2017-09-20)

## New Features

- #6832: It is now possible to configure the domains allowed for CORS requests. Added new "allowedCrossOrigins" server configuration parameter which allows the user to specify a comma separated list of allowed cross origin locations (host including protocol, e.g.: http://my.integration.host).

- #6997: Added metrically compatible fonts for Arial, Times New Roman and Courier New to the font drop down in Nimbudocs Editor. Those fonts were already included as base/core fonts and originate from the "Croscore fonts collection", which is also the base for the "Liberation" font package. The fonts added are the following:
  - Arimo (corresponds to Arial and Liberation Sans)
  - Tinos (corresponds to Times New Roman and Liberation Serif)
  - Cousine (corresponds to Courier New and Liberation Mono)

## Bug Fixes

- #6957: Editor can now be hibernated/removed correctly if there is an exception while retrieving caret information.

## Changes

- IMPORTANT: The Virtual Appliance is now based on CentOS 7. Existing Nimbudocs Editor appliances based on CentOS 5 can't be upgraded to the new appliance version, you need to redeploy and configure the new CentOS 7 appliance. Nimbudocs Editor packages and their dependencies can still be updated on CentOS 5 based appliances, but we strongly recommend that you reinstall the CentOS 7 appliance, since CentOS 5 has been EOL since the end of March 2017.
- Updated Java to 1.8.0_144.

# Release 2.4.3828 (released 2017-05-31)

## Improvements

- Added a "HealthChecker" mechanism which periodically checks for "hanging editors" and terminates those editors if necessary. If an editor is terminated, important diagnostic information is written to a file on disc (if possible, otherwise it is logged in the server log file).
- Improved server side logging.

## Bug Fixes

- #6899: Certain character sequences in style attributes no longer cause exceptions.
- #6882: Now preventing endless loop in layout process.
- #6774: Check boxes can now be checked again.

## Changes

- Updated Java to 1.8.0_131.

# Release 2.4.3769 (released 2017-03-01)

## New Features

- Added new method called "hasTrackedChanges" that returns if the document contains tracked changes. This method returns a Promise.

## Improvements

- #6704: When the Retriever is used, an authentication dialog is now displayed when trying to access resources protected by Basic authentication for the first time.
- Improved server side logging.
- Improved reliability when hibernating/clearing editors.

## Bug Fixes

- #6744: Selection no longer is suddenly moved to a different part of the document under certain circumstances.
- #6718: Tooltips bubble displayed for annotations or tracked changes no longer display control characters.
- #6673: Shapes drawn using the pencil or brush tool can now be resized properly.

# Release 2.4.3726 (released 2017-01-13)

## Features

- #6692: The `clear-formatting` action now removes `font` tags.

## Bug Fixes

- #6683: Locale extensions are now correctly loaded and displayed
- #6690: Resolved issue with the `start at` input in the list properties dialog.
- #6691: Resolved issue when typing over a selection.
- #6694: Implemented workaround for an issue in Internet Explorer that could cause a JavaScript error when trying to set a selection range.

# Release 2.4.3722 (released 2016-12-21)

## Features

- #6646: It is now possible to use non-numerical characters in the list properties dialog, when setting the "start at" value of ordered lists. When changing the list type, the start value in the text field will be automatically converted to the new list type format.

## Bug Fixes

- #6644: The "Compare View" buttons are now correctly toggled.
- #6647: Actions specified in an action map extension are no longer overwritten by actions loaded from modules.
- #6648: The `remove()` API method now works as intended.
- #6649: Scrolling by clicking into the scrollbar now functions properly in Internet Explorer.
- #6654: Fixed ArrayIndexOutOfBoundsException when loading specific documents.
- #6655: Fixed JavaScript error when clicking the "Paste" button in Internet Explorer.
- #6670: Resolved visual discrepancy between the outputs in the editor, preview images and PDFs, when using CSS "letter-spacing".

# Release 2.4.3693 (released 2016-12-01)

## New Features

- #5195: The document name (see #6415 below) of a session can be retrieved using the admin GET method to retrieve all editor sessions as JSON object. It is also displayed in the list of editor sessions in the Webmin interface.
- #5520: It is now possible to specify a fallback language, which is used when the locale constant is not found in the locale which is specified by the integrator or determined by the browser.
- #5610: Added action and dialog to insert/edit a QR or Barcode.
- #5908: Added method to access (read-only) editor properties. The following properties can be accessed: `autoSpellCheck, collabEnabled, continuousMode, fullScreen, maximized, showContainerGrid, showMarks, showReadOnly, showTableGrid, version, zoomFactor`.
- #6116: Added method to delete a specific element (using XPath).
- #6136: The editor of the header/footer dialog is now configurable. Added "headerFooterEditorConfiguration" configuration option which is passed to the header footer editor as "options" object. Some values are overridden (e.g. pageMode -> continuous, retriever is always the same as parent editor). The configured onready will be executed after performing an internal onready.
- #6137: It is now possible to add or remove specific (named) document (embedded) styles.
- #6245: It is now possible to have only one row of icons in the tool bar
- #6328: Added two ways to show messages in the editor:
  - `showInfoBox()` API method, to display a modal dialog with information.
  - `showStatusMessage()` API method, to display information in the status widget (non-modal, unobtrusive).
- #6415: Added new `setDocumentName()` method that sets an identifying name for the next document that is loaded. The name will then be displayed in the server log when the document is loaded.
- #6438: If the connection is lost, the client now tries to reconnect to the server automatically (10 retries in an interval of 5 seconds).
- #6478: Added an option to enable the spell checker by default.
- #6570: The title of the header/footer editor dialog is now context dependent (Header or Footer, specific page).
- The overlay and loading indicator is now configurable using the `overlayAndIndicator` configuration option (color, opacity, alwaysTransparent, alwaysHideIndicator).

## Improvements

- #6435: The reconnect button is now clickable even if the overlay is displayed.
- #6439: Added a new state `still-disconnected` to the `onconnectionstatechange` callback. The callback will now also be called when reconnecting fails.
- #6497: The caret is now disabled and typing is prohibited in comparison mode. Also the "prohibited" symbol (read-only) is no longer visible in comparison mode.
- #6526: Added support for the CSS property `transform-origin`.
- #6573: The "longpoll aborted" state is handled more gracefully.
- #6596: Improved error handling/logging when empty/undefined/null arguments (of API methods or actions) are sent to the server.
- Improved typing on mobile devices.
- It is now possible to type using an IME.
- It is now possible (again) to remove a registered EventListener.
- Empty bookmarks are now visualized using a small icon (this also resolves #6104).
- Updates from the server are now more fine-grained. This reduces the amount of data that is sent from the server and improves performance.
- Context (sub) menus, which contain a lot of entries are now "scrollable".
- Added new Inline-Editing sample.

## Bug Fixes

- #6434: The Tinos font can now be used correctly.
- #6436: It is now possible to use the `-ro-source-page` CSS property for background PDF images.
- #6493: The `lang` and `xml:lang` attributes are no longer removed when using one of the importLegacy methods.
- #6494: It is now possible to set a document language when the document has no initial `lang` attribute.
- #6539: The selection is no longer lost when changing table attributes with the "setElementListAttributes" method.
- #6574: Copied editor content from Internet Explorer is no longer surrounded by line breaks.
- #6580: Fixed issue when closing the header/footer editor dialog before the editor was fully loaded.
- #6611: Fixed issue with pasting plain text in Windows Chrome / Firefox
- #6618: Fixed issue with list context inside `td` elements.
- #6632: The `apiKey` set in the editor's config object is now also passed through to the header/footer editor.
- #6634: It is now possible again to edit the `right page footer`.
- #6639: Editor no longer causes high CPU load due to endless iterations under specific circumstances.
- #6641: Tooltips no longer are permanently displayed in certain situations.

## Changes

- All existing style sheet manipulation methods in Nimbudocs Editor have been deprecated. We now have the following new methods:
  - `addDocumentStyleSheet, clearDocumentStyleSheet, removeDocumentStyleSheet, fetchDocumentStyleSheet` (replacing the embedded style sheet methods)
  - `addAuthorStyleSheet, clearAuthorStyleSheet, removeAuthorStyleSheet, fetchAuthorStyleSheet` (replacing the user style sheet methods)
  - `addEditorStyleSheet, clearEditorStyleSheet, removeEditorStyleSheet, fetchEditorStyleSheet` (replacing the user agent style sheet methods)
- Changes to the editor session management/cleanup:
  - Editor sessions will now be hibernated in memory after 3 minutes. In this state they require less memory, however they still count towards the editor session limit.
  - The hibernated session will be cleaned from memory after 10 more minutes and thus no longer count towards the editor session limit.
  - Additionally an editor session will be auto-saved to the file system of the server every 10 seconds (if there are changes) as long as the session is active.
  - Resuming an editor is possible from the memory hibernation mode and from the auto-save state in the file system (even after a server restart) as long as the user does not close the client side session (browser tab). Resuming is transparent for the user, as clicking in the editor suffices to resume/restore the editor.
  - Restoring an editor from disc is only possible if the session limit is not yet reached. If there are no free sessions, restoring behaves identical to opening a new session - the `onsessionlimitreached` callback will be called and by default a dialog with a retry button will be displayed.
  - If the connection is "lost" because the editor session was removed on the server (and is only available as auto-save file) a different icon is displayed and the "onconnectionchange" callback receives the status "editor-session-server-removed".
- Changes to server side configuration:
  - Removed `editor-session-timeout`
  - Added: `autoSaveInterval, autoSaveTempDir, hibernateCleanupTimeout, hibernateCleanupTimeoutCheckInterval, sessionHibernateTimeout, sessionHibernateTimeoutCheckInterval, storageCleanupCheckInterval, storageCleanupRetentionPeriod`
  - Unified notation: Parameters are now all camel case (`customfontfilepath` -> `customFontFilePath`).
  - Server configuration should no longer be made in the `nimbueditor.xml` (/ro/jetty9/webapps) context file, but in the `nimbudocseditorserver.config` configuration file in `/ro/nimbudocs/config`. See also the Server Configuration guide. If you have a `nimbueditor.xml.rpmnew` after the update, please make sure to transfer the configuration settings from your modified `nimbueditor.xml` to the new configuration file and replace your old nimbueditor.xml file with the .rpmnew file afterwards.
  - Changed the way the license key has to be installed: The licensekey.txt has to be uploaded via webmin or put into the `/ro/nimbudocs/config` directory. Alternatively now you can also configure the license key location by specifying the licenseKeyPath configuration parameter in the nimbudocseditorserver.config file.
- When no license key is set the server now runs in an evaluation mode which allows 3 concurrent sessions and displays evaluation notices in the editor.
- Changed the default theme. The previous theme can be enabled by setting the `theme` option `name` property to `nimbudocs-classic`.
- Updated Java to 1.8.0_112
- Updated Jetty to 9.3.14

# Release 2.3.3451 (released 2016-06-22)

## New Features

- #6340: Added a reconnect method in the "onconnectionstatechange" callback (when the connected state is false).
- #6374: It is now possible to change the server side log level (from the Webmin interface) without the need to restart the application server.
- #6398: Added an "oncontentchange" callback which is triggered when the content of a document or the document itself changes. This is a replacement for the (deprecated) "hasContentChanged" API method.

## Improvements

- Improved the way requests are sent to the server. Commands will now be queued on the client if there is already an active request. Queued commands will then be sent as bundle as soon as the previous request returns. This improves the overall connection reliability.
- Clicking in the side bar no longer removes the focus from the editing area.
- Dialogs in the side bar (collaboration related) will now be closed automatically if clicking somewhere else in the editor.
- Improved server side (error) logging.

## Bug Fixes

- #6192: Table cells are now correctly displayed after adding a column.
- #6293: Adding and removing table columns/rows now works properly in nested tables.
- #6311: Justify is now correctly applied if there is a floated element beside the justified content.
- #6314: Preventing exception when loading document with a root element that is not "html" (e.g. XML documents).
- #6318: Resizing an image or shape in continuous mode (e.g. header/footer dialog) now works correctly.
- #6335: (Web)Fonts specified via @import are now loaded in Nimbudocs Editor.
- #6341: It is now prevented that the longpoll is hibernated/woken up if the server is disconnected.
- #6385: Fixed issue in internal layout process which could lead to "infinite" recursions and StackOverflow errors.
- #6407: Pressing enter in the search dialog in IE 10 no longer opens the "About" dialog.
- Fixed an issue which could cause incorrect initialized editor sessions ("null" sessions).

## Changes

- Changed clean-up behavior: Non-closed inline elements are no longer repeated until the end of the document, as this could lead to a lot of nested/duplicate elements.
- Added additional clean up when loading a document: Identical nested inline elements (abbr, acronym, b, bdo, big, blink, cite, code, del, dfn, em, i, ins, kbd, q, ruby, rbc, rtc, rb, rt, rp, s, samp, small, strike, strong, sub, sup, tt, u) will be collapsed. This should resolve issues with nested/duplicate elements in documents which were cleaned with the "old" clean-up settings.
- Deprecated the "hasContentChanged" API method. Use the "oncontentchange" callback instead.
- Disabled the "Hot Deployment" mechanism of the Jetty application server. Changes to the nimbueditor.xml (or other context files in the webapps/ folder) no longer trigger an application server restart.
- The "Undo/Redo" stack is now limited to 50 steps by default. The value can be configured in the nimbueditor.xml (undoLimit).
- Changed behavior of the +/- Table handle buttons: They will now always insert a row/column after the last row/column or remove the last row/column.
- Removed the default style templates for H1-H6. They are now included in some of the samples. To ensure backward compatibility the action IDs previously provided by the style templates are now implemented as normal actions.
- Jetty was updated to version 9.3.9.
- Java was updated to version 1.8.0_92.

# Release 2.3.3439 (released 2016-04-22)

## Bug Fixes

- #6287: Video elements are now displayed correctly again.
- #6288: Fixed an issue with the importLegacyDocument* methods.
- #6291: Fixed an issue with toggling/updating custom style template actions in the tool bar.

## Changes

- Changed Copy and Cut behavior:
  - When something is selected in the editor, the server will always send the selected content to the client (asynchronously, in the background).
  - The copy action is disabled until the content was received by the client
  - The dialog introduced with 2.3.3423 will now only be displayed if the selection is larger than 1MB (The value is configurable with the new "clipboard" configuration option).

# Release 2.3.3423 (released 2016-04-12)

## New Features

- The default tool bar icons are now loaded as "sprite" icons (all icons are combined into a single image, a single icon is accessed through CSS background position) to minimize HTTP requests on startup of the editor. You can still use custom icons as before (i.e. specifying them as URL). Alternatively you could disable the new option, or even create your own sprite icon image with the command line tool included in the package. For more information see the theme configuration option.
- #6023: It is now possible to specify authentication information like cookies, additional headers or basic authentication credentials in the client side configuration. This information will then be set on connections made from the Nimbudocs Editor server and can be used to e.g. load documents, images or CSS files from repositories which require authentication.
- #6037: Added an event/callback which is triggered when the caret reaches the document start/end.
- #6105: Added an event/callback (onselectionchange) which is triggered when the selection changes. It provides the current selection as plain text.
- #6121: It is now possible to localize the "default" list properties image (ul and ol).
- #6217: Added "mod_rewrite" module to the Jetty application server in the VA, which allows to configure "HSTS".
- #6227: The tool bar can now be updated/changed dynamically (new methods "getUIConfig" and "updateUIConfig").
- #6238: Introduced new configuration option for auto correct. The property "sentenceStartUpperCase" can now be set to "latinOnly". This limits the upper case correction at the sentence start to words that begin with a Latin letter.

## Improvements

- Improved editing performance in IE and/or virtual environments.
- Reduced server-side memory footprint of the editor by improving handling of images contained in the document.
- Improved reliability of closing editor sessions (active closing by "leave()", closing the browser (tab) and passive closing by session timeout).
- Webmin Admin Interface: The list of editors now displays the date and time of the "Last Seen" attribute (Which is the time stamp of the last request from the client to this editor). The "Last Seen" attribute is used to determine when editor sessions have to be closed due to inactivity (session timeout).
- Automatic hyphenation (through CSS property "hyphens: auto") can now be used in Nimbudocs Editor.
- Improved behavior of shapes:
  - Shapes now snap to the document borders or to one another.
  - Added new side bar pane to change properties of shapes.
  - Box shapes can now be rotated.
  - Inserting and moving shapes is now more intuitive.

## Bug Fixes

- #6001: Short cuts like e.g. Command + B now work again in Safari on OS X.
- #6008: Table handles are now displayed in the correct order for tables having colspan on some rows.
- #6069: It is now possible again to type in the editor after closing the search bar (in IE).
- #6141: Tables containing rowspan are now correctly displayed if spanning over two pages.
- #6145: The "defaultBaseUrl" configuration option is now correctly applied for resources inserted with "insertContent()".
- #6165: Improved caret positioning in tables when typing and changing the caret position rapidly.
- #6171: The editor is now displayed correctly when using the "retry()" method of the "onsessionlimitreached" callback.
- #6267: The editor now loads correctly even if "localStorage" cannot be accessed.
- #6269: Dialogs are now displayed correctly when the connection is slow

## Changes

- "Copy" is now an asynchronous 2-step process:
  - Pressing the copy or cut button or using the appropriate shortcut now displays a dialog
  - Depending on the browser, a button or shortcut can be used to complete the copy or cut process
  As a result Copy & Paste is now possible through the tool bar buttons. Furthermore, as the "Copy" process is now asynchronous, this also solves the issue with using "Copy" in a load balancer scenario.
- Updated Java to 1.8.0_77 in the VA.

# Release 2.2.3301 (released 2016-02-15)

## Bug Fixes

- #5999: Fixed issue with deleting rows when a table containing table cells with the "rowspan" attribute is split in a specific way over two pages.
- #6026: Fixed issue when adding a row to a (nested) table when the inner table splits over multiple pages and has the style "border-collapse: collapse".

## Improvements

- Improved general editor stability.
- Added a mechanism which tries to recover the editor in case an internal (server) error occurs. The mechanism will undo changes made in the editor until the editor is recovered or there are no more undoable changes. There is a new "onrecover" callback which is triggered in case the new mechanism steps in. By default the callback displays a dialog with information about the error and which step was undone.

## Changes

- Removed the "workerThreadsCount" and "workerThreadsAbsolute" context init parameters, as they are no longer relevant.
- Added a mechanism to limit the maximum amount of concurrent editor sessions. The amount of concurrent editor sessions will now by default be limited by the memory available to the Nimbudocs Editor application server. It can be overridden by setting the "concurrenteditorsessions" context init parameter.
  Please note that increasing the amount of concurrent editor sessions above the calculated default maximum can result in decreased performance or even application server crashes!
  The amount of concurrent editor session can also be limited by the licensekey (the minimum of either default/context init parameter value or limit determined from the license key will be used). The limit (and its cause) will be logged on the INFO level on startup of the server.
- Added client side mechanism (callback) to handle the situation that there are no free editor sessions available.
- The MARTHA HTML/CSS layout engine and the PDFreactor version used internally (for printing/creating PDFs inside the editor) were synchronized with the PDFreactor 8 maintenance release version (8.0.8234).

# Release 2.2.3284 (released 2015-11-09)

## Bug Fixes

- #5965: It is now possible again to edit headers/footers in the page properties dialog.
- #5970: The retriever now also sends credentials (like e.g. cookies used for a load-balancer) when sending resources to the server.

## Changes

- The MARTHA HTML/CSS layout engine and the PDFreactor version used internally (for printing/creating PDFs inside the editor) were synchronized with the PDFreactor 8 release version (8.0.8064).

# Release 2.2.3273 (released 2015-10-21)

## New Features

- #5898: It is now possible to specify a start value for an ordered list in the list properties dialog.
- #5951: Added API methods to retrieve/set the page properties (like e.g. page size, margins, header and footer - similar to what is possible using the page properties dialog).
- Added "onconnectionstatechange" callback. This new callback receives an event object, containing the boolean state of the connection (connected: true/false) and a string state indicating additional connection information.

## Improvements

- Improved loading time of the editor (startup of the editor with an empty document).
- The client-server communication is now more robust and errors/problems on the server should no longer lead to a "disconnected" state on the client.
- Improved logging on server and client-side. The documentId of the current editor session is now displayed as identifier in the client and server-side log output.
- #5895: The zoom widget was improved as follows:
  - The 100% action button is now highlighted, when at 100% zoom.
  - When changing the zoom level a tool tip/indicator shows the current zoom-level.

## Changes

- Updated Java version to 1.8.0_60 in the virtual appliance.
- Updated Jetty version to 9.3.2 in the virtual appliance. Jetty 9 will be installed in a different directory (/ro/jetty9/) than the previous version (/ro/jetty/) when updating.

## Bug Fixes

- #5775: IE 11: The "x" displayed in a text field to "reset" the field is not compatible with Nimbudocs Editor and was thus removed (by CSS).
- #5795: Fixed paste behavior when a paste handler is configured.
- #5796: Selecting text by double clicking on a word now always works in IE.
- #5845: Selecting backwards over a <br/> between two paragraphs no longer disconnects the editor.
- #5857: The document now correctly scrolls to the selected change.
- #5861: The context menu is correctly placed when the document is scrolled.
- #5911: Resizing a video element no longer causes the editor to be non-responsive.
- #5931: Retrieving a resource from a host that does not exist no longer leads to a JavaScript error.
- #5949: Webmin interface: It is now possible to delete an API key with an empty description.
- #5950: Webmin interface: Added checkbox to disable the auto-refresh on the server control page (active client display).
- #5952: Typing accents or quotes using the "´" key is now possible.
- It is possible again to type and place the caret on mobile devices.

# Release 2.1.3150 (released 2015-07-03)

## New Features

- #5293: Tables (and its rows and columns) can now be resized using handles (mouse).
- It is now possible for the integrator to load and save the userpreferences. By default userpreferences are saved in local storage, which is browser and domain based. For users accessing the editor from multiple browsers or different locations this might not be optimal. Thus a configuration option "userPreferences" for loading userpreferences and a callback "onuserpreferenceschange", which is triggered when the userpreferences change, was added.

## Improvements

- #5105: "margin:right" is no longer applied to a table which was resized using the new table handles.
- #5773: The "cut" and "copy" actions are only enabled when there is a selection.
- #5779: Improved cache killer mechanism for situations where two or more integration URLs are using the same server (e.g. dev and production) in the same browser session
- #5774: The context menu and its submenus are now as wide as their corresponding content. Improved opening of submenus (will open to either side depending on the available space).

## Bug Fixes

- #5561: Context of floated images is now respected.
- #5562: Splitting and merging tables containing a tbody element no longer causes problems.
- #5776: Custom (user defined) auto-correct entries are now correctly saved/displayed.

# System Requirements

## Browser Support

The following browsers are supported:

- Edge
- Chrome 70+
- Firefox 63+
- Safari (OS X only) 12+
- IE 11+*

* Support for IE 11 is deprecated and it is not recommended to use Nimbudocs Editor in IE 11 as there might be issues with Nimbudocs Editor which only occur in IE 11.

The create() provides functionalities to react to non-supported browsers. Please see the Quick Integration Guide in the JavaScript API doc for more information.

Please note that development previews of supported browsers may not be able to run Nimbudocs Editor, even if the requirements check in JavaScript reports otherwise.

### Must-have Capabilities

The following features are must-have browser capabilities. Without them Nimbudocs Editor will not work as intended.

- CORS*
- Cookies
- CSS 3
  - @font-face
  - rgba()
  - calc()

* CORS is not required when using a reverse proxy as described in the Quick Integration Guide at the JavaScript API doc.

### Should-have Capabilities

The following features are should-have browser capabilities. Without them Nimbudocs Editor will still work in general, but some of its functionality will not.

- CSS 3 2D Transforms (for zoom functionality)
- HTML5 APIs
  - File
  - Local Storage
  - Fullscreen

## Server Minimum Hardware Requirements

This chapter holds information for integrators who do not use Nimbudocs Editor as a Service.

- 2 GHz Single Core or 1.5 GHz Dual Core CPU
- 4 GB RAM

In general, hardware requirements depend very much on the platform, the speed of the JVM implementation and the complexity of the documents which are edited.

# Nimbudocs Editor as Virtual Appliance

## Server Installation

The Virtual Appliance provides everything required to deploy a functional Nimbudocs Editor server as Virtual Machine.

Use the following URL for: VMWare vSphere, Oracle VM VirtualBox

https://repo.realobjects.com/download/beta/ovf/nimbudocs-va_OVF10.ovf

Additionally you need the vmdk file if you want to use VirtualBox:

https://repo.realobjects.com/download/beta/ovf/system.vmdk

If you want to use VMWare Workstation, Server or Player you can also download a compressed archive of VMX and VMDK files:

https://repo.realobjects.com/download/beta/ovf/nimbudocs-va.zip

Deployment of Nimbudocs Editor is supported on Oracle VM VirtualBox and VMware ESX. VMware ESX only requires the URL to the OVF file, VirtualBox requires both the ovf10 and vmdk file downloaded to the same folder.

## Integration

Download the integration code & resources from the Nimbudocs Editor server and continue with the Integration Code & Resources chapter.

# Nimbudocs Editor as Package

## Contents

The archive release file contains this ReadMe and a pre-configured Jetty Application Server with the Nimbudocs Editor application.

## Server Installation

The provided Jetty Application Server needs to be added to a host server.

To start, restart or stop the server on Unix-based systems run:

[JETTY_HOME]/bin/jetty.sh start

[JETTY_HOME]/bin/jetty.sh restart

[JETTY_HOME]/bin/jetty.sh stop

To start without the shell script, use start.jar:

[JETTY_HOME]/java -jar start.jar

## System Requirements

Nimbudocs Editor provides a pre-configured Jetty Application Server. In addition Java is required. The following VMs are supported:

- Latest Oracle JRE 7 or 8 (JRE 8 is required if the pre-configured Jetty Application Server is used).

## Integration

Download the integration code & resources from the Nimbudocs Editor server and continue with the Integration Code & Resources chapter.

# Integration Code & Resources

The integration code & resources archive is available on the running Nimbudocs Editor server. It contains the following folders:

`/doc/apidoc`

This folder contains the JavaScript API documentation.

`/samples/StandardSample`

This folder contains the standard sample, including custom actions, localization and UI configuration.

The sample requires the URL to a Nimbudocs Editor server and will not run out-of-the-box. The sample will also not run from a file URL.

# Current Limitations

## Accessible Resources

External resources (e.g. images, CSS, ...) of documents to be loaded must be available to the server. The server must be able to reach their resolved URLs and download the data.

## Mobile UI

Nimbudocs Editor currently provides no mobile user interface. It is intended to provide such an interface in the future.

## Localization

It is currently not possible to set the locale file, it is only possible to add a locale extension.

## Load Balancer

Using a load balancer and Collaboration is currently not supported.

# Support

### Additional Copyrights and other Important Notes

Copyright (c) 2014-2021, RealObjects GmbH.
All rights reserved.

support@realobjects.com
http://www.realobjects.com