Skip to main content

AI-powered text actions inside the Plone 6 TinyMCE editor, part of the Omnia suite by iMio.

This package adds a TinyMCE plugin that lets editors expand, improve, reduce, correct, translate or make text accessible — all without leaving the rich-text editor. It relies on imio.omnia.core for API connectivity and the shared Omnia control panel.

Features

The plugin ships seven AI actions, each available from the toolbar button, the right-click context menu, and a keyboard shortcut chord (Alt+O then an action key):

Action

Key

Description

Expand text

d

Make the selected text longer

Improve text

a

Enhance style and quality

Reduce text

r

Shorten the selected text

Correct text

c

Fix spelling and grammar

Make accessible

x

Simplify for WCAG / easy-read compliance

Translate text

t

Translate to a target language

Generate (*)

g

Create new content from a free-text prompt (side panel)

(*) The generate action is disabled by default — it is not yet exposed by the upstream API.

Text transformation actions open a floating panel near the selection (or centred with a blur overlay, depending on the chosen mode). The generate action opens a side panel with prompt input and a history carousel.

Installation

Add the egg to your buildout:

[buildout]

...

eggs =
    imio.omnia.tinymce

Then run bin/buildout.

The package is auto-included in Plone via z3c.autoinclude.plugin, so no ZCML slug is needed.

imio.omnia.core must be installed first. Declare the GenericSetup dependency in your profile’s metadata.xml if you build on top of this package:

<?xml version="1.0"?>
<metadata>
  <version>1000</version>
  <dependencies>
    <dependency>profile-imio.omnia.tinymce:default</dependency>
  </dependencies>
</metadata>

Configuration

All settings are editable from the TinyMCE tab of the Omnia control panel (Site Setup > Omnia > @@omnia-tinymce-settings).

Registry settings

Stored under the prefix imio.omnia.tinymce.browser.controlpanel.IOmniaTinyMCESettings:

Field

Purpose

enabled_features

Tuple of active actions (default: all except generate)

show_toolbar

Display the Omnia toolbar button (default: True)

show_context_menu

Display entries in the context menu (default: True)

enable_shortcuts

Enable keyboard shortcuts (default: True)

translate_languages

Available translation language codes (default: fr, nl, de, en; all options: fr, nl, de, en, es, it)

default_translate_language

Default target language (default: fr)

floating_panel_mode

inline (near selection) or blur (centred overlay)

floating_panel_width

Width in pixels (e.g. 500) or full

How it works

Plugin loading

The TinyMCE plugin is registered via three Plone registry records set by the default GenericSetup profile:

  • plone.custom_plugins — registers the omnia plugin JS (++plone++imio.omnia.tinymce/omnia-tinymce.js).

  • plone.custom_buttons — adds the omnia button to the TinyMCE toolbar.

  • plone.bundles/omnia-tinymce — loads the scoped CSS bundle globally.

Config bridge (viewlet)

An OmniaConfigViewlet registered in plone.htmlhead renders a <script> tag that monkey-patches tinymce.init() to inject omnia_* options read from the Plone registry. This bridges:

  • Settings from IOmniaCoreSettings — base URL, application ID, municipality ID.

  • Settings from IOmniaTinyMCESettings — enabled features, UI mode, shortcuts, translation languages, panel dimensions.

  • An omnia_auth_token — a Plone CSRF authenticator token required by the @@omnia-api proxy for every POST request.

API requests go through the @@omnia-api proxy view provided by imio.omnia.core, so no API credentials are exposed to the browser. By default, callers must have the imio.omnia.core: Access Omnia API proxy permission, which imio.omnia.core grants to Authenticated users.

Uninstall

The uninstall handler removes the omnia entries from plone.custom_plugins and plone.custom_buttons, and disables the CSS bundle.

Frontend development

The TinyMCE plugin source lives in browser/resources/ as a git submodule (ia/omnia-tinymce). Built artifacts are committed to browser/static/.

Rebuild after JS changes:

make build-js          # npm ci + vite build + copy to static/
make clean-js          # remove built artifacts

Run the Storybook dev environment:

make dev               # Storybook on http://localhost:6006

The frontend stack uses Vite (library mode), Preact, Tailwind CSS v4 (om: prefix, scoped to [data-omnia]), and Motion for drag / resize.

Translations

This product has been translated into:

  • English

  • French

Authors

License

The project is licensed under the GPLv2.

Contributors

Changelog

1.0 (2026-08-03)

  • Build the JS bundle from the published @imiobe/omnia-tinymce npm package (pinned to 0.3.0) instead of the git submodule sources. [thomlamb]

1.0a4 (2026-04-03)

  • Update the JS bundle. [aduchene]

1.0a3 (2026-04-03)

  • Load imio.omnia.core ZCML. [aduchene]

1.0a2 (2026-04-03)

  • Re-release because ZCML files were lacking. [aduchene]

1.0a1 (2026-04-03)

  • Initial release. [duchenean]

  • Added TinyMCE AI plugin with 7 text actions: generate, expand, improve, reduce, correct, translate, and make accessible. [duchenean]

  • Added toolbar button, context menu entry, and keyboard shortcuts for triggering AI actions on selected text. [duchenean]

  • Added floating panel with two display modes: inline (near selection) and blur (centred with overlay), with configurable width. [duchenean]

  • Added translation support with 6 languages (fr, nl, de, en, es, it) and configurable default target language. [duchenean]

  • Added control panel tab (@@omnia-tinymce-settings) in the shared Omnia settings UI: per-feature enable/disable, toolbar/context menu/shortcut toggles, translation languages, and panel display settings. [duchenean]

  • Added viewlet config bridge injecting Omnia settings into TinyMCE init via monkey-patched tinymce.init. [duchenean]

  • Added TinyMCE plugin registration via plone.custom_plugins and CSS bundle via plone.bundles/omnia-tinymce with Tailwind CSS scoped to [data-omnia]. [duchenean]

  • Added clean uninstall removing plugin registrations and CSS bundle. [duchenean]

  • Added i18n support (en, fr). [duchenean]

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

imio_omnia_tinymce-1.0.tar.gz (691.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

imio_omnia_tinymce-1.0-py3-none-any.whl (703.7 kB view details)

Uploaded Python 3

File details

Details for the file imio_omnia_tinymce-1.0.tar.gz.

File metadata

  • Download URL: imio_omnia_tinymce-1.0.tar.gz
  • Upload date:
  • Size: 691.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.12

File hashes

Hashes for imio_omnia_tinymce-1.0.tar.gz
Algorithm Hash digest
SHA256 41333952c7be6dcfafec3a216010a3fc089aa1a0866b5066943bf271a6b7327d
MD5 1f13594e8c7ad0ed4c862c798d62f898
BLAKE2b-256 c6bd42d07550ae7f262dbad07dd8a5a004b9cecc7b3e0ecba40ade1423fa1bec

See more details on using hashes here.

File details

Details for the file imio_omnia_tinymce-1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for imio_omnia_tinymce-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 efd595ef219ea9aa01447c3aa91061616fa9765186c7d0747ff5d4a81fa61e00
MD5 0b14d146413ad8f6a780541c792bbade
BLAKE2b-256 f43d1eb2d11419da4c3e64b0ea16693eaf4ed6b961c5c3172408b3148b788afb

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page