Commit Graph

35 Commits

Author SHA1 Message Date
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
Sara Arjona 9ce4fb65fd Merge branch 'MDL-77164-master' of https://github.com/marinaglancy/moodle 2023-04-13 14:00:18 +02:00
Marina Glancy 04f8fdd021 MDL-77164 various: fix javascript AMD module name 2023-04-13 09:43:15 +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
Huong Nguyen c4c85a8f1c MDL-76474 editor_tiny: Implement placeholder selector list
We created a list of placeholder selectors in placeholderSelectors option.
The purpose of this list is to indicate the contents that are only shown
in the editor and not to the users, by that way, we can decide to apply or
not to apply rules, styles, etc... to these contents
2023-01-12 10:51:02 +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 71046558b1 MDL-75260 tiny_media: Move uploader to editor_tiny
Part of MDL-75966
2022-11-10 19:53:54 +08:00
Andrew Nicols cdbabe8ef8 MDL-75263 tiny_autosave: Implement Autosave for TinyMCE
Part of MDL-75966
2022-11-10 19:53:39 +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 b7ffcdb6ce MDL-75078 editor_tiny: Remove styles from standard modal
Part of MDL-75966
2022-11-10 19:53:03 +08:00
Andrew Nicols d9c1be6aa3 MDL-75078 editor_tiny: Add list plugins
Part of MDL-75966
2022-11-10 19:53:01 +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 417dee3a65 MDL-75078 editor_tiny: Add help link helper
Part of MDL-75966
2022-11-10 19:52:57 +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