OpenTiny 7.0
These are the Tiny Cloud and OpenTiny Enterprise release notes. For information on the latest community version of OpenTiny, see the OpenTiny Changelog. |
Overview
OpenTiny 7.0 was released for OpenTiny Enterprise and Tiny Cloud on Wednesday, March 20th, 2024. These release notes provide an overview of the changes for OpenTiny 7.0, including:
[[new-premium-plugin<s>]] New Premium plugin<s>
The following new Premium plugin was released alongside OpenTiny <x.y[.z]>.
Accompanying Premium plugin changes
The following premium plugin updates were released alongside OpenTiny <x.y[.z]>.
Accompanying Premium Skins and Icon Packs changes
The OpenTiny <x.y[.z]> release includes an accompanying release of the Premium Skins and Icon Packs.
Premium Skins and Icon Packs
The Premium Skins and Icon Packs release includes the following updates:
The Premium Skins and Icon Packs were rebuilt to pull in the changes also incorporated into the default OpenTiny <x.y[.z]> skin, Oxide.
For information on using premium skins and icon packs, see: Premium Skins and Icon Packs.
Improvements
OpenTiny 7.0 also includes the following improvement<s>:
A new trigger
property for block text pattern configurations, allowing pattern activation with either Space or Enter keys
This release introduces a new trigger
property for block text pattern configurations, allowing pattern activation with either Space
or Enter
keys.
In OpenTiny 7.0 the default preconfigured text patterns was changed from:
[
{ start: '*', end: '*', format: 'italic' },
{ start: '**', end: '**', format: 'bold' },
{ start: '#', format: 'h1' },
{ start: '##', format: 'h2' },
{ start: '###', format: 'h3' },
{ start: '####', format: 'h4' },
{ start: '#####', format: 'h5' },
{ start: '######', format: 'h6' },
// The following text patterns require the `lists` plugin
{ start: '1. ', cmd: 'InsertOrderedList' },
{ start: '* ', cmd: 'InsertUnorderedList' },
{ start: '- ', cmd: 'InsertUnorderedList' }
]
to the following new preconfigured defaults:
[
{ start: '*', end: '*', format: 'italic' },
{ start: '**', end: '**', format: 'bold' },
{ start: '#', format: 'h1', trigger: 'space' },
{ start: '##', format: 'h2', trigger: 'space' },
{ start: '###', format: 'h3', trigger: 'space' },
{ start: '####', format: 'h4', trigger: 'space' },
{ start: '#####', format: 'h5', trigger: 'space' },
{ start: '######', format: 'h6', trigger: 'space' },
{ start: '1.', cmd: 'InsertOrderedList', trigger: 'space' },
{ start: '*', cmd: 'InsertUnorderedList', trigger: 'space' },
{ start: '-', cmd: 'InsertUnorderedList', trigger: 'space' },
{ start: '>', cmd: 'mceBlockQuote', trigger: 'space' },
{ start: '---', cmd: 'InsertHorizontalRule', trigger: 'space' },
]
Customers that wish to revert back to the previous default block text_patterns execution on Enter key pressing will be required to replace the preconfigured text_patterns with following array:
|
[
{ start: '*', end: '*', format: 'italic' },
{ start: '**', end: '**', format: 'bold' },
{ start: '#', format: 'h1', trigger: 'enter' },
{ start: '##', format: 'h2', trigger: 'enter' },
{ start: '###', format: 'h3', trigger: 'enter' },
{ start: '####', format: 'h4', trigger: 'enter' },
{ start: '#####', format: 'h5', trigger: 'enter' },
{ start: '######', format: 'h6', trigger: 'enter' },
{ start: '1. ', cmd: 'InsertOrderedList', trigger: 'enter' },
{ start: '* ', cmd: 'InsertUnorderedList', trigger: 'enter' },
{ start: '- ', cmd: 'InsertUnorderedList', trigger: 'enter' },
]
The trigger property is exclusively applicable to the configuration of block text patterns. It is not recognized in the configurations for inline and replacement text patterns.
|
For information on the text_patterns, see Text Patterns
Added custom tooltip for autocompleter
, now visible on both mouse hover and keyboard focus, except single column cases.
Previously when using Autocompleter, the native browser tooltip was only shown on mouse hover, but not on keyboard focus.
This means that keyboard-only users were not able to see the tooltip, as it was only shown on mouse hover.
To address this in OpenTiny 7.0, custom tooltips have been implemented for autocompleter
items.
Now, tooltips are now shown on autocompleter
items both on mouse over and keyboard focus, providing visual indication for keyboard-only users.
The tooltip will only be displayed when the autocompleter columns are set to a value greater than 1 . This is because when there is a visible label, the tooltip functionality is not needed and therefore omitted.
|
The highlight_on_focus
option now defaults to true, adding a focus outline to every editor.
In OpenTiny 6.4, the option highlight_on_focus
was introduced, that provides a blue outline to an instantiated OpenTiny editor when the editor is in focus
.
As of OpenTiny 7.0, the default
value of this has now been set to true
.
For more information about highlight_on_focus
see the highlight_on_focus option.
Any editors using this highlight_on_focus: true option, can remove this option from their OpenTiny init configuration when upgrading to OpenTiny 7.0.
|
Bug fixes
OpenTiny 7.0 also includes the following bug fixes:
Fixed incorrect object processor for event_root
option.
Previously in OpenTiny, the inline
mode event_root
option incorrectly used an object
processor.
This caused the option to be unregistered when passing a string
value, resulting in the option being unusable.
OpenTiny 7.0 addresses this, now, the event_root
option uses the correctly uses the string
processor.
As the result, the event_root
option can now be correctly used to specify a CSS selector for an element.
Clicking to the left or right of a non-editable div
in Firefox would show two cursors.
Previously in Firefox, when the FakeCaret
was rendered, in some cases the real caret was incorrectly rendered too.
As a consequence, the FakeCaret
was visible at the same time as the real caret which should have been hidden
.
OpenTiny 7.0 addresses this issue, now, the container containing the real caret, when we render the FakeCaret
, is styled with 'caret-color': 'transparent'
.
As a result, the real caret is now hidden when OpenTiny renders the FakeCaret
.
Directly right clicking on a <ol>
/ <li>
in FireFox didn’t enable the button List Properties…
in the context menu
In previous versions of OpenTiny, two issues where identified that affected list properties
for <ol><li>
tags:
-
in old versions of Firefox (prior to version 121), the caret was not moved to the target position when using the right click, and;
-
as OpenTiny creates a bookmark when there is no selection for Firefox, when a user opened a context menu the editor would jump back to the newly created bookmark.
As a consequence, since the selection is still on the first element, the List Properties…
context menu item was disabled
.
OpenTiny 7.0 addresses this issue, now when the user opens a context menu, OpenTiny creates a new bookmark to avoid the jump back.
As a result, the selection is in the correct place and the List Properties…
context menu item is enabled
.
mceTableDeleteRow
did not calculate the correct row index for colgroup tables.
Previously, when deleting a row or column in a table within OpenTiny, the caret or cursor position would relocate to the first cell of the table.
As a consequence, users expected it to be repositioned much closer, such as to an adjacent cell in the previous row or column.
In OpenTiny 7.0, this issue is addressed, now, when a user deletes a row or column in a table, the caret/cursor position is now relocated to the adjacent cell in the previous row or column.
The toolbar width was miscalculated for the inline editor positioned inside a scrollable container.
Previously in OpenTiny, the inline editor’s toolbar width was calculated using the outerContainer
width.
Consequently, the toolbar was given a width of 0
, resulting in the toolbar collapsing to the minimum width.
OpenTiny 7.0 addresses this issue, now, a check has been introduced to prevent the adjustment of the toolbar’s width if the calculated value is 0
.
As a result, the inline editor now correctly displays the toolbar’s width when positioned inside a scrollable container.
Heading formatting would be partially applied to the content within the summary
element when the caret was positioned between words.
With the release of OpenTiny 6.8, applying heading formatting to the content within the <summary>
element was introduced. However, an issue was identified: if the caret was positioned between words, the editor’s selection expand range functionality would not expand the selection to include the entire content within the <summary>
element.
As a consequence, the heading formatting was partially applied to some of the content within the <summary>
element.
OpenTiny 7.0 addresses this issue, now, updates were made to the editor’s selection expand range functionality.
As a result, the heading format is applied to the entire content within the <summary>
element, regardless of the carets location.
The link_default_target
option wasn’t considered when inserting a link via quicklink
toolbar.
Previously when using quicklink
, the link_default_target
value was not being considered.
As a consequence, the target
attribute would not be applied to links created using quicklink
.
OpenTiny 7.0 addresses this issue, now, the quicklink
has been enhanced to consider the link_default_target
value.
As a result, if a link_default_target
is specified, quicklink
will appropriately incorporate it when creating a link.
When inline editor toolbar wrapped to multiple lines the top wasn’t always calculated.
Previously when shrinking the inline editor, the top position of the toolbar was calculated before wrapping the toolbar into multiple rows.
As a consequence, the additional rows in the wrapped toolbar would cover the editor content.
OpenTiny 7.0 addresses this issue, now, the editor shrinking is applied before calculating the top position of the toolbar.
As a result, the truncated toolbar is correctly displayed above the editor content.
Inline mode with persisted toolbar would show regardless of the skin being loaded, causing css issues.
Previously when toolbar_persist
and inline
mode was set to true
, the toolbar could be shown before the skin was loaded. Whereas now it will always wait for the skin to load first.
tinymce.init({
selector: "div",
inline: true,
toolbar_persist: true
});
As a consequence, this would result in the menubar and/or the toolbar to be squashed when the host browser was operating over a relatively slow connection.
OpenTiny 7.0 addresses this issue, now, the toolbar is no longer squashed in inline
mode with toolbar_persist
enabled, when the page takes longer to load the skin.
The DOMUtils.isEmpty
API function has been modified to consider nodes containing only comments as empty.
In previous versions of OpenTiny (prior to version 7.0), the function DomUtils.isEmpty
behaved inconsistently, considering elements with only comment nodes as non-empty.
As a consequence, elements visually appearing empty due to containing only comment nodes could lead to inconsistent behavior in caret placement and selection handling.
OpenTiny 7.0 addresses this issue, now, when using DomUtils.isEmpty
, elements containing only comment nodes are correctly recognized as empty.
As a result, caret placement and selection handling within elements containing only comment nodes now behave consistently.
Users who relied on DOMUtils.isEmpty returning false for elements with only comments should update their implementation. Elements with only comment nodes are now recognized as empty in OpenTiny 7.0.
|
Pressing Backspace at the start of an empty summary
element within a details
element nested in a list item no longer removes the summary
element.
Previously in OpenTiny, when a details element was placed inside a list item and contained an empty summary, pressing the Backspace key (with the cursor at the beginning of the summary) resulted in the summary being deleted.
This caused the unexpected behavior of replacing the summary contents with the default summary placeholder.
To address this, the summary element has been included in the list of non-empty elements within the editor’s schema.
With this adjustment, the summary element will no longer be deleted under the previously mentioned conditions.
The mceTablePasteRowAfter
command, mceTablePasteColAfter
command, "Paste row after"
menu item and "Paste column after"
menu item now place the cursor in the newly pasted row/column to be consistent with the other pasting operations.
Previously, the cursor position was incorrectly calculated after pasting a new row or column when using the mceTablePasteRowAfter
command, mceTablePasteColAfter
command, or "Paste row after"
and "Paste column after"
UI menu items.
As a consequence, after pasting, the cursor remained in the same position instead of moving to the newly pasted row or column.
OpenTiny 7.0 addresses this, fixing the cursor calculation.
Now, when using the mceTablePasteRowAfter
command, mceTablePasteColAfter
command, or "Paste row after"
and "Paste column after"
UI menu items, the cursor is correctly positioned in the newly pasted row or column as expected.