C cenaly.com
Gratis starten

Aangepaste editors

Eigen mini-editors binnen het paneel in een sandbox: voor de eigenaar of externe ontwikkelaar, toegang tot accountgegevens op basis van rechten

14 min read Dit scherm openen in de demo
On this page 14

Aangepaste editors

Soms is er werk dat in geen enkel paneel staat, omdat het alleen van u is: een eigen herberekening van prijzen volgens de formule van uw leverancier, het vergelijken van uw catalogus met een extern boekhoudsysteem, een scherm om „partijkenmerken in één keer in te vullen”. De sectie „Aangepaste editors” laat u zo'n mini-editor zelf schrijven (of laten maken) en binnen de beheeromgeving draaien — in een sandbox, met toegang tot precies de gegevens die u hebt toegestaan.

Openen: Beheerpaneel → Aangepaste editors (admin.cenaly.com/custom-editors). De sectie wordt ingeschakeld via de kaart „Aangepaste editors (SDK)” in de appstore — standaard is deze verborgen. De knop „📌 Naar zijbalk” op de pagina zelf zet hem in het zijmenu voor wanneer u hem vaak nodig hebt.


Wat deze sectie is#

Een plug-in is een gebundeld script (index.js) en de beschrijving ervan (manifest.json). Het paneel laadt het script in een geïsoleerd frame: het heeft geen toegang tot uw sessie, tot de code van de beheeromgeving of tot het netwerk. Met gegevens kan het alleen praten via de Bridge — een reeks toegestane verzoeken, die elk worden gecontroleerd aan de hand van de verleende rechten.

De pagina bestaat uit de volgende blokken:

Blok Wat erin staat
Geïnstalleerde editors een kaart per plug-in: naam, „Versie”, „Rechten”, „Plaatsing”, „Toegestane netwerkhosts”, „Bijgewerkt”, bron (repository en tag als link). Acties: „Openen”, „Inschakelen” / „Uitschakelen”, controleren op updates, „Verwijderen”
Editor installeren installatie vanuit bestanden op schijf
Installatie vanuit GitHub installatie via het adres van een openbare repository en een tag
🤖 Ontwikkeling met AI (vibe-coding) projectsjabloon, prompt voor een AI-agent en een catalogussnapshot als testgegevens
👩‍💻 Toegang voor ontwikkelaar tijdelijke grants aan een onderaannemer voor de ontwikkelaarsmodus
🛠️ Ontwikkelaarsmodus een plug-in rechtstreeks vanaf uw computer draaien, zonder installatie

Een geopende editor vult het hele scherm, en het adres van de pagina krijgt de markering ?app=<identificatie> — zo'n link kunt u delen met iedereen die toegang heeft.


Wat u nodig hebt om te starten#

Wat Waarvoor
De kaart „Aangepaste editors (SDK)” in de appstore de sectie is niche en standaard uitgeschakeld
U bent accounthouder alleen de houder kan plug-ins installeren, inschakelen en verwijderen en grants verlenen; medewerkers zien de lijst alleen-lezen
Een gebundelde plug-in: index.js + manifest.json hetzij van u, hetzij van een ontwikkelaar, hetzij een release in een openbare GitHub-repository
Voor ontwikkeling — een medewerkersaccount voor de ontwikkelaar de ontwikkelaarsmodus wordt verleend op basis van het e-mailadres van zijn werklogn

Stap 1. Bepalen wie de editor schrijft#

Er zijn drie routes, en ze verschillen in wie de code beheert:

Route Voor wie geschikt Hoe
AI-agent volgens ons sjabloon een houder die de taak in woorden kan uitleggen blok „Ontwikkeling met AI”: sjabloon + prompt → de agent bouwt een release → u installeert die
Een eigen of ingehuurde ontwikkelaar er is een onderaannemer of ontwikkelaar in het team verleen hem een grant voor de ontwikkelaarsmodus, hij schrijft en debugt op een live account, u installeert de kant-en-klare release
Een kant-en-klare release van GitHub de plug-in is al geschreven (door u of voor u) „Installatie vanuit GitHub”: repositoryadres en tag

In alle drie de gevallen blijft de installatie bij de houder: zelfs een ontwikkelaar met een grant kan zijn code alleen in de ontwikkelaarsmodus draaien, maar niet in het account installeren.


Stap 2. Ontwikkeling met AI (vibe-coding)#

Het blok „🤖 Ontwikkeling met AI (vibe-coding)” biedt vier dingen om de taak aan een AI-agent te geven (Claude Code, Cursor en dergelijke) zonder hem het contract vanaf nul te moeten uitleggen:

  1. „⬇️ Projectsjabloon downloaden (zip)” — een kant-en-klaar skelet van de plug-in: manifest, entrypoint, beschrijving van het contract (GUIDE.en.md) en instructies voor de agent. Het archief wordt rechtstreeks in de browser samengesteld; u hoeft niets externs te downloaden.
  2. „📋 Prompt voor de agent kopiëren” — de opdrachttekst in het Engels: start vanuit het sjabloon, houd de gids aan, waarmee u het resultaat controleert.
  3. Configuratie van de gereedschapsets voor de agent — daarmee bouwt de agent de plug-in, zet hij een lokale stand op: een kopie van de sandbox, maakt hij schermafbeeldingen en statusmomentopnamen, en bouwt hij aan het eind een release: een zip voor handmatige installatie of een release op GitHub.
  4. „⬇️ Catalogussnapshot downloaden (testfixture)” — uw categorieën en artikelen als bestand, zodat de agent op echte gegevens test en niet op verzonnen gegevens.

⚠️ Uit de snapshot worden aangepaste velden van andere plug-ins volledig weggelaten: gegevens die een externe extensie op uw kaarten bewaart, verlaten het account niet samen met de fixture.


Stap 3. De editor installeren#

Vanuit bestanden. Blok „Editor installeren”: kies „Bundel (index.js)” en „Manifest (manifest.json)” → „Controleren en installeren”. Het paneel controleert eerst het manifest — identificatie, gelokaliseerde naam, versie, minimale SDK-versie, plaatsingen, rechten en de lijst met netwerkhosts — en toont daarna de consent: „Deze editor vraagt om:” en de lijst met rechten in gewone taal. Zolang u niet op „Installeren” hebt geklikt, wordt er niets geïnstalleerd.

Vanuit GitHub. Blok „Installatie vanuit GitHub”: veld „Repository (URL of owner/repo)”, veld „Tag (leeg = laatste release)” en de knop „Repository controleren”. De conventie is eenvoudig: manifest.json in de hoofdmap van de repository, de gebundelde dist/index.js in de tag, de tag in de vorm v{versie}. Het manifest en de bundel worden rechtstreeks vanuit uw browser opgehaald. In beide gevallen wordt bij installatie een vingerafdruk van de bundel (sha256) berekend en onthouden: als het bestand later wordt vervangen, wordt het starten geblokkeerd en vraagt het paneel u de editor opnieuw te installeren.


Rechten en plaatsingslocaties#

Rechten (ook wel scopes genoemd) vraagt de plug-in aan in het manifest, en u bevestigt ze bij de installatie. De volledige lijst — hier is hij, meer kan de bridge niet:

Recht Wat er wordt opengesteld
Catalogus lezen categorieën, artikelen, kenmerken en aangepaste velden van kaarten
Catalogusartikelen aanmaken en wijzigen artikelen aanmaken en bewerken, een partij importeren, eigen velden en kenmerkdefinities
Prijzen, beschikbaarheid en stoplijsten per vestiging wijzigen hetzelfde als wat het paneel in het menu van de vestiging doet
Magazijnproductengids lezen de nomenclatuur van het magazijn op alleen-lezen
Eigen instellingen opslaan in uw opslag eigen sleutels van de plug-in in uw account (tot 1 MB per sleutel)
Servergedeelte van de extensie aanroepen van plug-incode op onze server — de enige manier waarop hij het internet op kan

Wat helemaal niet in de lijst staat, krijgt de plug-in met geen enkele instelling: gasten en klanten, bestellingen, bonnen, financiën, medewerkers, berichten en gesprekken geeft de bridge niet vrij.

Plaatsingslocaties (slots) — drie:

Slot Waar het verschijnt
Eigen pagina een item binnen het gedeelte „Aangepaste editors”, opent op het volledige scherm
Knop op de cataloguspagina een hulpmiddel naast de artikelenlijst
Tabblad van het gedeelte „Magazijn” de plug-in wordt getekend als tabblad van het magazijn — zo is onze ingebouwde extensie „ВетИС” verpakt

Ontwikkelaarsmodus en toegang voor een onderaannemer#

De ontwikkelaarsmodus (blok „🛠️ Ontwikkelaarsmodus”) koppelt de plug-in live vanaf uw computer: het veld „URL van de bundel” accepteert alleen adressen localhost / 127.0.0.1, ernaast staat „JSON van het manifest”, en de knop „Dev-sessie starten”. De vingerafdruk wordt hierbij niet vastgezet, en de sessie leeft tot de tab wordt gesloten; „Dev-sessie stoppen” schakelt haar direct uit.

Grants voor de ontwikkelaar (blok „👩‍💻 Toegang voor de ontwikkelaar”) zijn nodig wanneer niet de eigenaar schrijft. Voor de ontwikkelaar wordt een gewone medewerkersaccount aangemaakt, en daarna geeft de eigenaar een grant: „E-mail van de ontwikkelaar (zijn staff-login)”, „Toegestane rechten”, „Geldigheidsduur (dagen)” en een optionele notitie → „Toegang verlenen”. Intrekken kan op elk moment met de knop „Intrekken”.

Wat een grant wel en niet geeft:

  • geeft — alleen de ontwikkelaarsmodus met de rechten die u hebt aangevinkt (standaard een termijn van 14 dagen, maximaal 90);
  • rechten worden gesneden door de doorsnede: wat het manifest vraagt en wat door de grant is verleend; meer krijgt de plug-in niet, zelfs als hij er in het manifest om vraagt;
  • geeft niet — het installeren, inschakelen en verwijderen van plug-ins: dat blijft bij de eigenaar.

Bijwerken, inschakelen en verwijderen#

Actie Hoe
Openen de knop „Openen” op de kaart (of een link met ?app=…)
Tijdelijk uitschakelen „Uitschakelen” — de plug-in blijft geïnstalleerd, maar wordt niet uitgevoerd en niet getoond op zijn plaatsen
Bijwerken bij plug-ins van GitHub — „Op updates controleren” en daarna „Bijwerken naar …”; als de versie recent is, zegt het paneel „De nieuwste versie is geïnstalleerd”. Plug-ins uit bestanden worden bijgewerkt door ze opnieuw te installeren
Verwijderen „Verwijderen” met bevestiging: instellingen en het item worden weggehaald, gedownloade releases blijven in de opslag

Automatisch bijwerken is er bewust niet: een nieuwe versie van andermans code is een nieuwe vingerafdruk en mogelijk nieuwe rechten, daarom is bijwerken altijd een bewuste actie van de eigenaar.


Ingebouwde extensies#

Een deel van onze eigen modules is in hetzelfde formaat verpakt — dat is te zien aan het gedrag, maar u hoeft ze niet te installeren: ze komen mee met het paneel en worden ingeschakeld via een kaart in de appstore, niet in dit gedeelte.

Op dit moment is er één zo’n module — „Меркурий/ВетИС” voor Rusland: hij leeft als tabblad van het gedeelte „Magazijn”, wordt uitgevoerd in dezelfde sandbox en met dezelfde vingerafdrukcontroles. Ingebouwde extensies komen niet in de lijst met geïnstalleerde editors.


Wat de editor wel en niet kan#

Kan Kan niet
De catalogus lezen en wijzigen binnen de verleende rechten uw wachtwoord achterhalen of uw sessie gebruiken
Zijn eigen interface, meldingen en bevestigingsverzoeken tonen de code of gegevens van de adminomgeving om zich heen openen
De eigen editor van een artikel van het paneel openen rechtstreeks het internet op gaan vanuit het venster van de plug-in
Zijn eigen instellingen in uw account opslaan de gegevens van een andere plug-in op uw kaarten zien
Het internet op gaan via het servergedeelte — en alleen naar de https-adressen die in het manifest staan (maximaal acht) worden uitgevoerd na het vervangen van een bestand: een niet-overeenkomende vingerafdruk blokkeert de start

Plug-ins van derden krijgen op de kaart een waarschuwing: „App van derden in een sandbox — hij vraagt nooit om een wachtwoord.” Als een plug-in om de login van het paneel, betaalgegevens of een sms-code vraagt, is dat fraude en geen werking van de extensie.


Beperkingen#

  • Het gedeelte staat standaard uit en is bedoeld voor wie code schrijft (of laat schrijven): een gewone eigenaar heeft hier niets te zoeken.
  • Alles behalve bekijken is alleen voor de eigenaar van het account. Een medewerker ziet de hub read-only; de ontwikkelaarsmodus alleen met een actieve grant.
  • Privé-GitHub-repositories worden niet ondersteund — de repository moet openbaar zijn, de installatie gebeurt op basis van de tag.
  • Geen automatische updates: het bijwerken van een plugin start altijd de eigenaar.
  • Er is geen winkel voor andermans plugins. Kant-en-klare extensies worden niet gepubliceerd of verkocht via het paneel — de enige bron is uw bestand of uw repository.
  • Er zijn drie slots (eigen pagina, knop in de catalogus, tabblad van het magazijn) — een plugin kan zich niet in een willekeurig scherm van het paneel nestelen.
  • De bridge geeft geen gasten, bestellingen, financiën, medewerkers en gesprekken vrij — dit is niet met rechten te omzeilen, zulke verzoeken bestaan simpelweg niet.
  • Er is geen apart logboek „plugin heeft dat en dat gedaan”. Rechten staan op de kaart en aanpassingen in de catalogus komen in de gewone artikelenhistorie; wilt u controle, begin dan met een plugin die alleen leesrechten heeft.
  • Technische plafonds: bundel tot 4 MB, tot 8 netwerkadressen in het manifest, tot 1 MB per opslagsleutel; een serverrun duurt tot 30 seconden en doet tot 50 internetverzoeken per keer.
  • De gegevens van de plugin blijven in de cloud van uw merk: bij een account op cenaly.ru staat de status van het servergedeelte in het Russische circuit.

Problemen oplossen#

Symptoom Controleer
Het gedeelte staat niet in het menu of de kaart „Aangepaste editors (SDK)” is ingeschakeld in de appstore; of het gedeelte met de knop „📌 Naar zijbalk” is toegevoegd
Een medewerker ziet geen installatieknoppen dat is de bedoeling: installeren, verwijderen en grants zijn alleen voor de eigenaar van het account
„De bundel in de opslag komt niet overeen met de geïnstalleerde vingerafdruk. Start geblokkeerd” het pluginbestand is na de installatie vervangen — installeer de editor opnieuw om een nieuwe vingerafdruk vast te leggen
„De editor is niet op tijd gestart (geen connect() binnen 10 s)” de plugin heeft geen verbinding gemaakt: een fout in de code of het verkeerde bestand is gebouwd
„De bundel van de editor kon niet worden geladen” de release is niet beschikbaar of het bestand is beschadigd — installeer opnieuw
„Editor niet gevonden of uitgeschakeld” bij het volgen van de link ?app=… de plugin is verwijderd of uitgeschakeld op de kaart
„De editor kon niet uit GitHub worden opgehaald” de repository is privé, er is geen manifest.json in de hoofdmap, er is geen dist/index.js in de tag of de tag is niet volgens de conventie v{versie} genoemd
„Alleen adressen localhost / 127.0.0.1 zijn toegestaan” de ontwikkelaarsmodus accepteert bewust geen externe adressen — start de build lokaal
De plugin ziet de benodigde gegevens niet vergelijk „Rechten” op de kaart; bij een ontwikkelaar met een grant worden de rechten bovendien beperkt door de doorsnede met de grant
De plugin kan geen externe service bereiken er is geen direct netwerk vanuit de sandbox: het verzoek verloopt via het servergedeelte en het adres moet in het manifest staan
„De editor meldt niet-opgeslagen wijzigingen. Toch sluiten?” de plugin heeft zelf een concept gemeld — sla uw werk erin op voordat u sluit

Veelgestelde vragen#

Moet u kunnen programmeren?#

Om een kant-en-klare release te installeren — nee. Om de release zelf te krijgen — ja: die schrijft een ontwikkelaar of AI-agent volgens onze template uit het blok „Ontwikkelen met AI”. Het gedeelte is een hulpmiddel voor code, geen builder met „de muis”.

Kan een plugin van iemand anders mijn klanten of omzet zien?#

Nee. De plugin werkt in een sandbox en krijgt gegevens alleen via de bridge, en de bridge kan precies zes dingen: catalogus, prijzen en stoplijsten, het magazijnregister, eigen opslag, het aanroepen van het eigen servergedeelte en interface-elementen. Gasten, bestellingen, bonnen, financiën, medewerkers en gesprekken zitten daar principieel niet in. Wat een specifieke plugin precies mag, is altijd te zien op de kaart in de regel „Rechten”.

Hoe geeft u de ontwikkeling aan een onderaannemer zonder hem volledige toegang tot het account te geven?#

Maak een medewerkersaccount voor hem aan en geef vervolgens een grant in het blok „Toegang voor ontwikkelaars”: vink alleen de benodigde rechten aan en stel een termijn in (standaard 14 dagen, maximaal 90). Hij krijgt de ontwikkelaarsmodus en niets meer; het installeren van de plugin blijft toch bij u. De grant wordt met één knop ingetrokken.

Wordt de plugin automatisch bijgewerkt wanneer de auteur een nieuwe versie uitbrengt?#

Nee. De eigenaar start de update: „Controleren op updates” → „Bijwerken naar …”. Zo verschijnt een nieuwe versie niet zonder medeweten van een persoon in het account — samen met de versie kunnen ook de opgevraagde rechten zijn gewijzigd.

Waar bewaart de plugin zijn instellingen en gegevens?#

In uw account, in een aparte opslag onder zijn identificatie (tot 1 MB per sleutel), plus, als hij die gebruikt, in aangepaste velden van uw kaarten — elke plugin ziet alleen zijn eigen ruimte. Bij een account op cenaly.ru blijven het servergedeelte en zijn status in het Russische circuit.

Hoe verschilt dit van API en MCP?#

API voor ontwikkelaars en MCP van uw eigen telefooncentrale zijn nodig wanneer een programma van buitenaf werkt: uw eigen site, een extern accountsysteem, een AI-agent. Een aangepaste editor is juist een interface binnen het paneel: een medewerker opent hem als een gewone beheerderspagina en verlaat het werkvenster niet.


Gerelateerde gedeelten#

Was this article helpful?