Odoo szerkesztő

Odoo Editor is Odoo’s own rich text editor. Its sources can be found in the odoo-editor directory.

Powerbox

A Powerbox egy felhasználói felület elem, amely parancsokat tartalmaz, kategóriákba rendezve. Az editorban a / karakter beírásakor jelenik meg. A parancsok szűrhetők, amikor a felhasználó szöveget ír be, és a nyílbillentyűkkel navigálhatók.

The Powerbox opened after typing "/".

A Powerbox módosítása

Egyszerre csak egy Powerbox példányt szabad létrehozni, és ezt a feladatot maga a szerkesztő végzi el. A Powerbox példánya a powerbox példányváltozóban található. A Powerbox tartalmának és beállításainak megváltoztatásához módosítsa a szerkesztőnek átadott beállításokat, mielőtt az példányosítva lenne.

Fontos

Soha ne példányosítsa saját maga a Powerboxot. Mindig használja az aktuális szerkesztő saját példányát.

Example

Tegyük fel, hogy egy új Document parancsot szeretnénk hozzáadni a Powerboxhoz, kizárólag a mass_mailing modulhoz. Ezt egy új Documentation nevű kategóriához szeretnénk hozzáadni, és azt szeretnénk, hogy a Powerbox tetején legyen.

mass_mailing extends web_editor’s Wysiwyg class, which instantiates the editor in its start method. Before doing so, it calls its own _getPowerboxOptions method, which can conveniently be overridden to add our new commands.

Mivel a mass_mailing már felülírja a _getPowerboxOptions-t, csak adjuk hozzá az új parancsunkat:

_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;
}

Fontos

Annak érdekében, hogy a parancsok és kategóriák nevei és leírásai lefordíthatók legyenek, győződjön meg róla, hogy azokat az _t függvénybe csomagolja.

Javaslat

A kontrollálatlan eszkalációk elkerülése érdekében ne használjon véletlenszerű számokat a prioritásokhoz: nézze meg, hogy milyen más prioritások léteznek már, és ennek megfelelően válassza meg az értékét (mint ahogy egy z-index esetében tenné).

Egy egyedi Powerbox megnyitása

Lehetőség van a Powerbox megnyitására egy egyedi kategória- és parancskészlettel, megkerülve az összes előre létezőt. Ehhez hívja meg a Powerbox open metódusát, és adja át neki az egyedi parancsait és kategóriáit.

A Powerbox egyedi kategóriákkal és parancsokkal nyílt meg, amikor egy kép URL-t illesztett be.

Example

We need the current instance of the Powerbox, which can be found in the current editor. In the Wysiwyg class, you will find it as this.odooEditor.powerbox.

Now to open it with our custom „Document” command in a custom „Documentation” category:

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,
    }]
);

Parancsok szűrése

Három módja van a parancsok szűrésének:

  1. A powerboxFilters Powerbox opció segítségével.

  2. Egy adott parancs isDisabled bejegyzésén keresztül.

  3. A felhasználó szűrheti a parancsokat egyszerűen szöveg beírásával a Powerbox megnyitása után. Ez a szöveg homályosan egyezik a kategóriák és parancsok nevével.

The Powerbox with its commands filtered using the word "head".

Hivatkozás

Kategória

Név

Típus

Leírás

name

string

a kategória neve

prioritás

szám

a kategória sorrendjének meghatározására szolgál: egy magasabb prioritású kategória magasabbra kerül a Powerboxban (az azonos prioritású kategóriák ábécé sorrendben jelennek meg)

Megjegyzés

Ha több kategória létezik azonos névvel, akkor egybe lesznek csoportosítva. Prioritása az utoljára deklarált kategória verziójában meghatározott lesz.

Parancs

Név

Típus

Leírás

name

string

a parancs neve

kategória

string

annak a kategóriának a neve, amelyhez a parancs tartozik

leírás

string

rövid szöveg a parancs leírására

fontawesome

string

egy Font Awesome neve, amely a parancs ikonjául szolgál

prioritás

szám

a parancs sorrendjének meghatározására szolgál: egy magasabb prioritású parancs magasabbra kerül a Powerboxban (az azonos prioritású parancsok ábécé sorrendben jelennek meg)

callback

function (() => void)

a parancs kiválasztásakor végrehajtandó függvény (lehet aszinkron is)

isDisabled (opcionális)

function (() => void)

egy függvény, amely bizonyos feltételek mellett letiltja a parancsot (ha true értéket ad vissza, a parancs le lesz tiltva)

Megjegyzés

Ha a parancs egy még nem létező kategóriára mutat, akkor az a kategória létrejön és hozzáadódik a Powerbox végéhez.

Opciók

A következő opciók adhatók át az OdooEditor számára, amelyek aztán továbbítódnak a Powerbox példányához:

Név

Típus

Leírás

commands

parancsok tömbje

parancsok hozzáadása a szerkesztő által meghatározott alapértelmezett értékhez

kategóriák

kategóriák tömbje

kategóriák hozzáadása a szerkesztő által meghatározott alapértelmezett értékhez

powerboxSzűrők

függvények tömbje (parancsok => parancsok)

a Powerboxban megjelenített parancsok szűrésére használt függvények

getContextFromParentRect

függvény (() => DOMRect)

egy függvény, amely visszaadja a szerkesztő egy ősének DOMRect-ját (hasznos lehet, ha a szerkesztő egy iframe-ben van)