Commit Graph

49 Commits

Author SHA1 Message Date
Huong Nguyen 99ae088704 MDL-78936 editor_tiny: Disable quickbars for small target
The quickbars selection toolbar is not displayed correctly
if the target element is too small. We will wait for it
to be fixed in the future before we re-enable it in Moodle
2024-06-26 10:16:52 +07:00
Huong Nguyen 7ac2d7f598 MDL-81530 editor_tiny: Better browsers compatibility
The TinyMCE.remove() function is killing other events on Firefox
We need to modify the setupForElementId() to make TinyMCE to
remove itself outside of the event loop
2024-05-07 14:21:22 +07:00
Paul Holden c70ceb5f7b MDL-81724 editor_tiny: remove whitespace from block formats syntax.
Ensures that the values are subsequently translated correctly. Workaround
for upstream bug: https://github.com/tinymce/tinymce/pull/9599

Co-authored-by: Andrew Nicols <andrew@nicols.co.uk>
2024-04-30 09:26:17 +01:00
Andrew Nicols dcaf884d28 MDL-79671 editor_tiny: Do not show the help link in the status bar 2024-03-27 14:40:35 +08:00
Stevani Andolo ec7bd6035c MDL-80391 tiny_html: Fixed multi modal layer display 2024-02-29 12:53:21 +08:00
Stevani Andolo 7917d779d1 MDL-80391 tiny_html: Fixed the loose focus in window manager 2024-02-15 10:06:46 +08:00
Sara Arjona 84c5a2c7ea Merge branch 'MDL-79152-main' of https://github.com/andrewnicols/moodle 2024-01-24 16:02:23 +01:00
Andrew Nicols 81d9f60840 MDL-79152 editor_tiny: Enable browser-based spell-checking 2024-01-18 12:53:20 +08:00
Sara Arjona c06553f908 Merge branch 'MDL-80058-main' of https://github.com/meirzamoodle/moodle 2024-01-17 18:46:09 +01:00
meirzamoodle 958b48c54d MDL-80081 editor_tiny: Allow empty content in the i tag 2024-01-12 14:04:17 +07:00
meirzamoodle d744c7f510 MDL-80058 editor_tiny: add preformatted format to the blocks 2024-01-10 09:37:26 +07:00
meirzamoodle f456416318 MDL-80257 editory_tiny: Implement ui_mode: split
Since version 6.4 and later, TinyMCE had a feature `ui_mode: split`.

It enables support for editors in scrollable containers,
and Moodle has some pages, especially the course pages, that are using the scrollable containers.
Therefore, all workaround that is addressed should be replaced by the feature to avoid future problems
regarding the overflow and the z-index issues.
2023-12-04 16:27:47 +07:00
Huong Nguyen e38aa09dee MDL-78239 editor_tiny: Calculate correct height for non-visible editors 2023-09-26 14:50:13 +07:00
Ilya Tregubov 9bf3e5a893 Merge branch 'MDL-78745-master' of https://github.com/meirzamoodle/moodle 2023-09-01 10:52:26 +08:00
Andrew Nicols 10525085a3 MDL-79107 editor_tiny: Target correct element on editor removal 2023-09-01 09:06:39 +08:00
Andrew Nicols db23620cdb MDL-79107 editor_tiny: Inform Behat of field type 2023-08-31 20:36:32 +08:00
meirzamoodle a164fc5317 MDL-78745 editor_tiny: Stored text in non-entity form
TinyMCE has a default entity_encoding 'named',
which causes text with diacritic symbols to be converted to HTML entities,
e.g. pâté will be convert to p&acirc;t&eacute;
That will be a problem with the Glossary auto-linking filter if a course has a text concept like pâté,
then the filter will likely fail to get the text concept.
Changing the TinyMCE entity_encoding to 'raw' will resolve the problem.
2023-08-30 08:56:26 +07:00
Kevin Percy 7db066a823 MDL-78436 editor_tiny: mform disabledIf works with TinyMCE 2023-08-15 14:15:07 +08:00
Jun Pataleta c3a27a0070 Merge branch 'MDL-77817-master' of https://github.com/meirzamoodle/moodle 2023-08-10 18:32:15 +07:00
Andrew Nicols 9f9814ae41 MDL-78714 editor_tiny: Disable HTML Sanitisation in TinyMCE
This is in keeping with other Editors such as Atto and resolves an issue
where DOM Purification incorrectly identifies HTML-like string content
as an HTML tag with a JS variable.

Moodle already performs XSS sanitisation using HTML Purifier in PHP.
2023-08-09 09:07:04 +08:00
meirzamoodle e039eaa599 MDL-77817 editor_tiny: Fix menu and dialogue window position
The boost theme makes the TinyMCE editor rendered in a scrollable container,
scrolling the editor’s container will cause TinyMCE UI elements to be detached from the anchor.
Therefore, to keep the tinyMCE menu in the correct position,
adjustments must be made on the page drawers style.

When using TinyMCE editor in Safari browsers, a problem may occur where the dialogue
windows (such as modal dialogs) overlap with page drawers due to a specific behavior
in Safari's rendering. This function addresses the issue by adjusting the CSS overflow
property of the page drawers, ensuring they do not obscure the dialogue windows.
2023-08-03 11:31:28 +07:00
Stevani Andolo c2be53493d MDL-78485 editor_tiny: Allowed script tag to be added in tinyMCE editor 2023-07-04 13:36:10 +08:00
Jun Pataleta e07f28e276 Merge branch 'MDL-77896' of https://github.com/paulholden/moodle 2023-04-21 11:21:40 +08:00
Paul Holden 571292b6eb MDL-77896 editor_tiny: approximate height for non-visible editors.
When an editor is renderer initially invisible to the browser, e.g.
the forum "Add discussion" form, it has a `clientHeight` value of
zero. We can approximate an alternative value based on the number
of rows in the textarea.

Co-authored-by: Andrew Nicols <andrew@nicols.co.uk>
2023-04-20 15:24:23 +01:00
Paul Holden c81bfc4f45 Merge branch 'MDL-77897-master' of https://github.com/andrewnicols/moodle 2023-04-19 14:13:03 +01:00
Andrew Nicols 489a53ceb2 MDL-77897 editor_tiny: Save editor content on editor blur 2023-04-19 14:57:10 +08:00
Paul Holden adb6d5468e MDL-77895 editor_tiny: standardize quickbar selection toolbar.
Ensure the same heading tags are available as those defined in the
editor block formats configuration (c51b7e2c).

Co-authored-by: Andrew Nicols <andrew@nicols.co.uk>
2023-04-18 07:46:05 +01:00
Paul Holden c51b7e2c44 MDL-77012 editor_tiny: correct block formats property syntax.
Co-authored-by: Hiroto Kagotani <hiroto.kagotani@gmail.com>
2023-04-04 09:53:13 +01:00
Paul Holden f60057a680 Merge branch 'MDL-77773-master' of https://github.com/andrewnicols/moodle 2023-03-30 10:41:15 +01:00
Andrew Nicols 7ba9097264 MDL-77773 editor_tiny: Improve initial editor size 2023-03-28 20:47:49 +08:00
Andrew Nicols 8fe80e743c MDL-77740 editor_tiny: Set the Editor window from the iFrame element
This is a workaround for an upstream bug which I have not been able to
reproduce outside of Moodle whereby the editor.contentWindow does not
match the editor.iframeElement.contentWindow when it should.

This issue only seems to affect Firefox, and it may even be a bug in
Firefox. It can only be reproduced when using a fresh browser which has
never had a TinyMCE window open.
2023-03-28 10:43:21 +08:00
Jun Pataleta 9bba8650c0 Merge branch 'MDL-76569-master' of https://github.com/andrewnicols/moodle 2023-02-07 22:54:12 +08:00
Paul Holden fe6db3e3b2 Merge branch 'MDL-76447-master' of https://github.com/meirzamoodle/moodle 2023-02-03 14:31:38 +00:00
Meirza 83b5089e54 MDL-76447 editor_tiny: Nest the dropdown menu in the parent DOM.
The TinyMCE menu has a significant issue with the Overflow style,
and the Boost theme heavily uses Overflow for drawer navigation.
Nest the dropdown menu container into the parent editor container makes it work correctly.

Co-authored-by: davewoloszyn <david.woloszyn@moodle.com>
Co-authored-by: xr0master <xr0master@gmail.com>
2023-02-01 17:33:18 +07:00
Meirza ec805cd575 MDL-76562 editor_tiny: Added functions to remove button/menu/submenu.
Added a few functions to remove the toolbar button, menubar and sub-menu items.
One of the implementations is to remove the justify alignment in the toolbar and
the sub-menu items to aid the accessibility aspect of the TinyMCE editor.
2023-01-20 09:57:52 +07:00
Andrew Nicols c7dd76dadb MDL-76734 editor_tiny: Listen to TinyMCE submit events
jQuery submit events do not trigger the native submit event, and
therefore the TinyMCE submit listener is not called. This means that the
tinymce.triggerSave() function is not called, and the editor content is
not saved.

To work around this, if there is a form for the Node that the editor is
attached to, the jQuery submit event is listened to and the save event
called.

Unfortunately it is not possible to use a global jQuery submit listener
added to the document to save all editors on the page.
In some cases, this is too late because the bubbling process means that
a child node consumer may attempt to consume the data before the
delegated handler is called for the document.
2022-12-21 13:02:21 +08:00
Andrew Nicols aea298513e MDL-76569 editor_tiny: Set table row header style
Configure Tiny to use markup of:

table > thead > tr > th

For all table headers.
2022-12-05 20:49:17 +08:00
Andrew Nicols 898e67ecb3 MDL-76440 editor_tiny: Add directionality plugins to toolbar 2022-11-23 11:11:47 +08:00
Andrew Nicols 126db9165c MDL-76025 editor_tiny: Adjust initial toolbar layout
Part of MDL-75966
2022-11-10 19:55:15 +08:00
Andrew Nicols c4a0896134 MDL-75966 editor_tiny: Tidy up toolbar management 2022-11-10 19:53:31 +08:00
Andrew Nicols 9dd2921d7c MDL-75331 editor_tiny: Limit formatting options
This commit removes several contentious formatting options for now,
pending further consideration, in particular it removes:
- forecolor
- backcolor
- fontfamily
- styles

The two color plugins are written in such a way that the chosen colour
is embedded into a style tag in the generated content. This is not
ideal as it removes these decisions away from theme developers and upon
theme changes to a site, is likely to lead to inaccessible and/or broken
content.

We feel that a new colour plugin will be required which links to known
colour style classes within the theme to allow a subset of colours which
are guaranteed to work with the theme.

The fontfamily plugin is removed pending further administrator
configuration in a future release.

In the case of the 'styles' plugin, this duplicates large parts of the
Format menu into which it is placed but does so in a way that does
respect the configuration of other areas - for example the block_formats
tag is ignored in this menu.

Part of MDL-75966
2022-11-10 19:53:27 +08:00
Andrew Nicols 769cc95f92 MDL-75078 editor_tiny: Tidy up TinyMCE configuration
This change does not include any functional change, but
compartmentalises the existing configuration to make it easier to read.

Part of MDL-75966
2022-11-10 19:53:23 +08:00
Andrew Nicols 07b9f384a2 MDL-75940 editor_tiny: Allow administrators to disable Tiny branding
Part of MDL-75966
2022-11-10 19:53:13 +08:00
Andrew Nicols 41952a03b6 MDL-75078 editor_tiny: Fix undestroyed editors
Part of MDL-75966
2022-11-10 19:52:58 +08:00
Andrew Nicols c2428e2018 MDL-75078 editor_tiny: Disable quickbars entirely
Part of MDL-75966
2022-11-10 19:52:55 +08:00
Andrew Nicols 603c50e1be MDL-75078 editor_tiny: Improve configuration specification
Part of MDL-75966
2022-11-10 19:52:52 +08:00
Andrew Nicols 90c40fba5d MDL-75271 editor_tiny: Add a cache-busting loader for TinyMCE
Part of MDL-75966

This commit adds a cache-busting loader API for use in the TinyMCE
plugin.

This is not for use in any TinyMCE subplugins at this time as we have no
use-case outside of AMD modules.

This loader ensures that only files within the js/tiny directory are
loaded, and it only supports either .js or .css files at this time.

The client-side of the loader makes use of the jsrevision as a
cache-buster, including for CSS files included with TinyMCE.

If the revision is negative, then files are not cached.
If the revision is positive, then the requested file is cached in a
candidate file and served using aggressive cache headers.
2022-11-10 19:52:15 +08:00
Andrew Nicols d8cf77a127 MDL-75246 editor_tiny: Add initial translation support
Part of MDL-75966

Add support for translation of the TinyMCE interface.

TinyMCE translates English language strings rather than keys, and a tool
to perform this translation is included.
2022-11-10 19:52:13 +08:00
Andrew Nicols 71d30542ae MDL-75078 editor_tiny: Hola TinyMCE 6
Part of MDL-75966

This commit adds TinyMCE version 6.1 into Moodle core.

A basic editor implementation is included, along with Moodle loader, and
basic Plugin API for Moodle. The Plugin API will be extended and
improved in future changes.

A new subplugin is defined for this plugin.
2022-11-10 19:51:45 +08:00