Joomla Editors script
JoomlaEditor
and JoomlaEditorButton
provides an API for client side integration for different Editors scripts while keeping cross-extension communication.
This is allowing other Joomla extensions interact with editor and its content.
To enable it on the page use WebAssetManager $wa->useScript('editors')
(which also will load editor-api
and editor-decorator
modules).
The API consist with following elements:
JoomlaEditorDecorator
- provides a common interface for editors to follow.JoomlaEditor
- responsible for editor registration, and retrieving of Active one.JoomlaEditorButton
- responsible for registration of an editor buttons and its actions.
They provided by editor-api
module, and can be imported as following:
import { JoomlaEditor, JoomlaEditorButton, JoomlaEditorDecorator } from 'editor-api';
How it works
Editor script should provide (and register it with JoomlaEditor.register(editor)
) own instance of JoomlaEditorDecorator
with implementation of required methods.
Any time when User interact with editor or with one of Editor Button, the editor script should mark this instance as Active with JoomlaEditor.setActive(editor)
.
Each Editor button can run one action, this action should be previously registered with JoomlaEditorButton.registerAction(name, handler)
. Where:
name
- is an action name.handler
- a function to be executed for this action.
When editor script decides to integrate Joomla Editor Buttons in to its interface (as for example it is done in Joomla TinyMCE integration), then editor script is responsible for calling button action JoomlaEditorButton.runAction(name, options)
for these buttons. Where:
name
- is a name of the action that need to be run.options
- an options object that will be passed to the actionhandler
.
For examples look How to create an Editor plugin.
JoomlaEditor
Methods
register(editor)
Register new editor (which implementJoomlaEditorDecorator
).unregister(editor)
Unregister editor instance (byJoomlaEditorDecorator
orid
of editor).get(id)
Return instance byid
if exists.setActive(editor)
Set currently Active editor, the editor that in focus (byJoomlaEditorDecorator
orid
of editor).getActive()
Return last Active editor, if there exist eny.
JoomlaEditorButton
Methods
registerAction(name, handler)
Register new button action, or override existing.runAction(name, options, button)
Execute action.getActionHandler(name)
Get registered handler by action name.
Action handler is a function (or callable object), that will be given an Active editor instance of JoomlaEditorDecorator
and Button options:
JoomlaEditorButton.registerAction('example', (editor, options) => {
alret('Doing the Example action! For editor ' + editor.getType());
});