Skip to main content
iVentureTeam

calendar_event_notes_html

The rich text editor for meeting notes, with exactly one plugin taken out. In a narrow calendar panel, drag handles on every block were doing more harm than good.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 27, 2026Updated September 8, 20265 min read
Technical namecalendar_event_notes_html
Field typeshtml
Viewsform, calendar side panel
Modulecalendar, the Meetings app
Used in core1 occurrence, the notes field on the meeting form in calendar
VersionsOdoo 20.0, Odoo 19.0
No-code setupNo. Studio offers the plain rich text field; this variant is set in view XML
Alternativeshtml, html_mail, text, mass_mailing_html

What the meeting notes editor does

Odoo's rich text editor is assembled from plugins. Formatting, lists, links, tables, the slash command menu and the drag handles that let you move a whole block around are each a separate piece, and the field widget decides which ones are loaded.

Meeting notes are written in narrow places: the right hand panel of the calendar, a popover, a form column beside the attendee list. The block move plugin adds a hover affordance to the left of every paragraph, which in a wide document is helpful and in a narrow one is clutter competing with the text.

So this widget is the rich text field with that one plugin filtered out of the configuration. Nothing else is changed, nothing is added, and every other editing feature behaves exactly as it does elsewhere in Odoo.

What this means for your team

Meeting notes are one of the few genuinely free-form fields in an ERP, and the temptation is to either lock them down to plain text or leave the full editor in place. Neither is right: people want a bullet list and a link, and they do not want a document editor in a sidebar.

What makes this worth reading is the mechanism rather than the decision. Odoo's editor is trimmable per field, in a supported way, by filtering the plugin list. If a client complains that an editor somewhere is too heavy, the answer is usually a five line widget like this one rather than replacing the field with plain text.

Supported options in Odoo 19

The widget declares no options of its own. It spreads the rich text field's descriptor unchanged, so everything that widget accepts is available here. The options below are the ones that matter in practice on a notes field. Read from calendar_notes_html_field.js and the rich text field, Odoo 19.0.

OptionTypeWhat it does
placeholderstring (attribute)Inherited from the rich text field. Hint text shown while the editor is empty. Core sets it on the meeting notes field.
heightnumberInherited. Fixes the editor's height rather than letting it grow with content.
sanitizebooleanInherited. Governs whether the stored markup is sanitized, which for notes should normally stay on.

The plugin removal is not configurable. The filter is written into the configuration getter with no option to keep the block move plugin. Restoring it means using the plain rich text widget instead, or writing your own subclass.

Working examples

The core usage

<field name="notes" nolabel="1" class="w-100"
       placeholder="Notes"
       widget="calendar_event_notes_html"/>

The placeholder is inherited from the rich text field and works normally, since this widget does not touch the extractor.

Reusing it elsewhere

<field name="internal_notes"
       widget="calendar_event_notes_html"/>

Nothing in it is calendar-specific beyond the name, so any narrow notes field benefits, as long as the calendar module is installed.

The full editor instead

<field name="notes" widget="html"/>

Same editor with the block move handles restored, which is the right choice on a full width form.

Five lines to trim an editor

The implementation is five meaningful lines. The class extends the rich text field, overrides the method that builds the editor configuration, takes the plugin list the parent returned and filters out one entry by identity, then returns the configuration.

Filtering by identity rather than by name matters: the plugin is imported and compared directly, so a rename in the editor would break the import rather than silently failing to filter. That is the safer of the two failure modes.

Because the override is on the configuration getter, everything else in the parent's configuration survives: the other plugins, the toolbar setup, the collaboration hooks and whatever the base widget derives from the field's own options. A future Odoo version adding a plugin will add it here too, unless it is the one being removed.

Worth being clear about what the removed plugin does, since it is easy to confuse with the slash menu. It is the affordance that appears beside a block on hover and lets you drag that block to a new position. Removing it does not stop users reordering content; it removes the mouse shortcut for doing so.

Version compatibility

VersionStatusNotes
Odoo 20.0In developmentNot released. Byte-identical to Odoo 19 on the development branch.
Odoo 19.0VerifiedFirst version. Verified against the shipped source.
Odoo 18.0Not availableWidget does not exist. Meeting notes used the standard rich text field.
Odoo 17.0Not availableWidget does not exist.
Odoo 16.0Not availableWidget does not exist.

Upgrade note. The widget is new in Odoo 19, along with the editor architecture it depends on. On Odoo 18 and earlier the meeting notes field used the standard rich text field of that version, so an upgrade gains the trimmed editor with the standard views and there is nothing to migrate.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The development branch is unstable and this may still change; we re-verify the page after release.

Byte-identical. The file on the development branch matches Odoo 19 exactly. Since the widget only filters the parent's plugin list, any change to the editor in Odoo 20 flows through automatically, minus the one removed plugin.

Common problems and fixes

SymptomCause and fix
No drag handles beside paragraphsIntended. That plugin is filtered out of the editor configuration. Use the plain rich text widget if block dragging is wanted.
The rest of the toolbar is missing tooSomething other than this widget trimmed the editor; it removes exactly one plugin. Check for another customization on the same field.
The placeholder does not showThe attribute is missing, or the field already has content. Set the placeholder attribute; the widget does not touch the extractor.
The editor is too tall in the panelThe editor grows with its content by default. Use the inherited height option to fix it.
Missing widget errorThe calendar module is not installed in that database. Install Calendar, or use the plain rich text widget.

Meeting notes editor vs the alternatives

WidgetBest forKey difference
calendar_event_notes_htmlRich notes in narrow panels where hover handles get in the wayThe standard rich text editor with the block move plugin filtered out of its configuration
htmlRich content on a full width formKeeps every plugin, including block dragging
html_mailContent that will be sent as an emailConfigured for email compatible markup
textNotes that should stay plainNo editor and no formatting at all
mass_mailing_htmlDesigning a mailing bodyA full design surface with snippets and themes

Use the plain rich text widget wherever the field has room. Use the mail-oriented variant where the content will be sent as an email, since it configures the editor for that. And use a plain text field where formatting genuinely should not be possible, rather than trimming the editor down to nothing.

Frequently asked questions

What does calendar_event_notes_html change?+
One thing. It filters the block move plugin out of the editor's plugin list, so paragraphs no longer get a drag handle on hover. Every other editing feature is inherited unchanged.
Why remove that plugin?+
The notes field is rendered in narrow panels beside a calendar, where a hover affordance on every block competes with the text for space.
Can I turn it back on?+
Not through XML. The filter is written into the configuration getter with no option. Use the plain rich text widget instead.
Does it support the rich text field's options?+
Yes, all of them. The descriptor is spread unchanged, so the placeholder attribute and the editor options behave normally.
Which versions have it?+
Odoo 19 onwards, along with the editor architecture it depends on. It is byte-identical on the Odoo 20 development branch.

Editors that fit the screen they are on

Odoo's rich text editor is configurable per field, which most implementations never use. We tune editors, forms and layouts so the interface matches how your team actually works, on Odoo 16 through 19.

Book a free consultation

How this page was produced

The configuration override and the single filtered plugin were read from calendar_notes_html_field.js on the Odoo 19.0 branch, with the inherited descriptor read from the rich text field in the editor module. The usage comes from calendar/views/calendar_views.xml. Version coverage comes from the absence of the file on the 16.0, 17.0 and 18.0 branches, and a byte comparison against the public development branch. Spotted an error? Tell us and we will correct the page.