Odoo エディター

Odoo Editor は Odoo 独自のリッチテキストエディタで、ソースは odoo-editorディレクトリ にあります。

Powerbox

Powerboxは commands <reference/frontend/odoo_editor/powerbox/command>`を :ref:`categories <reference/frontend/odoo_editor/powerbox/category>`にまとめたユーザーインターフェイスです。 エディタに `/ を入力すると表示されます。ユーザーがテキストを入力し、矢印キーで移動すると、コマンドをフィルタリングできます。

「/」と入力すると、Powerboxが開きます。

Powerboxの変更

その時点で Powerbox を 1 つだけインスタンス化し、そのジョブはエディタ自身によって実行されます。 Powerbox インスタンスは powerbox インスタンス変数にあります。 Powerboxの内容とオプションを変更するには、インスタンス化される前にエディタに渡されるオプションを変更します。

重要

Powerboxをインスタンス化しないでください。常に現在のエディタ自身のインスタンスを代わりに使用してください。

Example

たとえば、mass_mailing`モジュールだけのために、新しいコマンド `Document をPowerboxに追加します。 「Documentation」という新しいカテゴリに追加したいので、Powerboxの一番上にずっと追加したいと思います。

mass_mailing extends web_editorWysiwyg class これは、start メソッドでエディタをインスタンス化します。 これを行う前に、独自の _getPowerboxOptions メソッドを呼び出し、新しいコマンドを追加するのに便利にオーバーライドできます。

mass_mailing はすでに`_getPowerboxOptions`を上書きしているので、新しいコマンドを追加しましょう。

_getPowerboxOptions: function () {
    const options = this._super();
    // (existing code before the return statement)
    options.categories.push({
        name: _t('Documentation'),
        priority: 300,
    });
    options.commands.push({
        name: _t('Document'),
        category: _t('Documentation'),
        description: _t("Add this text to your mailing's documentation"),
        fontawesome: 'fa-book',
        priority: 1, // This is the only command in its category anyway.
    });
    return options;
}

重要

コマンドやカテゴリの名前や説明を翻訳できるようにするには、 _t 関数でそれらをラップしてください。

ちなみに

制御不能のエスカレーションを避けるために 優先順位に乱数を使用しないでください。すでにどの優先順位が存在するか見て、それに応じて値を選択してください (z-index のように)。

カスタムPowerboxを開く

すべての既存のものをバイパスし、カテゴリとコマンドのカスタムセットでPowerboxを開くことができます。 これを行うには、Powerboxの「open」メソッドを呼び出し、カスタムコマンドとカテゴリを渡します。

 イメージURLを貼り付けるときに、Powerboxはカスタムカテゴリとコマンドで開きます。

Example

現在のエディタで見つけることができるPowerboxの現在のインスタンスが必要です。 Wysiwyg クラス には、this.odooEditor.powerbox として表示されます。

カスタム "Documentation" カテゴリでカスタム "Document" コマンドを開きます:

this.odooEditor.powerbox.open(
    [{
        name: _t('Document'),
        category: _t('Documentation'),
        description: _t("Add this text to your mailing's documentation"),
        fontawesome: 'fa-book',
        priority: 1, // This is the only command in its category anyway.
    }],
    [{
        name: _t('Documentation'),
        priority: 300,
    }]
);

フィルタリングコマンド

コマンドをフィルタリングするには、次の3つの方法があります。

  1. powerboxFilters :ref:`Powerbox option <reference/frontend/odoo_editor/powerbox/options> ` を介して。

  2. 指定された command <reference/frontend/odoo_editor/powerbox/command>`の `isDisabled エントリを介して実行します。

  3. ユーザーは、Powerboxを開いた後にテキストを入力するだけで、コマンドをフィルタリングできます。 それは、そのテキストとカテゴリとコマンドの名前を曖昧に一致させます。

"head"という言葉を使ってフィルタリングされたコマンドのPowerbox。

リファレンス

カテゴリー

名前(name)

説明

名前

string

カテゴリの名前

priority

number

カテゴリを注文するために使用されます: 優先度が高いカテゴリがPowerboxに高く表示されます (同じ優先度のカテゴリはアルファベット順に並べられます)

注釈

同じ名前を持つ複数のカテゴリが存在する場合、それらは1つにグループ化されます。 その優先度は、最後に宣言されたカテゴリのバージョンで定義されます。

コマンド

名前(name)

説明

名前

string

コマンドの名前

カテゴリー

string

コマンドが属するカテゴリの名前

説明

string

コマンドを説明するための短いテキスト

fontawesome

string

コマンドのアイコンとなる*フォント素晴らしい*の名前

priority

number

コマンドを順序付けるために使用されます: 優先度が高いコマンドは Powerbox に高く表示されます (同じ優先度のコマンドはアルファベット順に並べられます)

callback

function (() => void)

コマンドが選択されたときに実行する関数 (非同期でもかまいません)

isDisabled (任意)

function (() => void)

特定の条件下でコマンドを無効にするために使用される関数 (true を返す場合、コマンドは無効になります)

注釈

コマンドがまだ存在しないカテゴリを指すと、そのカテゴリが作成され、Powerboxの最後に追加されます。

オプション

以下のオプションは、Powerboxのインスタンスに渡されるOdooEditorに渡すことができます。

名前(name)

説明

コマンド

コマンドの配列

コマンドは、エディタで定義されたデフォルトに追加されます。

categores

array of categories

エディタによって定義されたデフォルトに追加するカテゴリ

powerboxFilters

関数の配列 (commands => commands)

Powerbox に表示されるコマンドのフィルタリングに使用される関数

getContextFromParentRect

function (() => DOMRect)

エディタの祖先の DOMRect を返す関数(エディタが iframe 内にいるときに便利です)