Há duas formas de definir algo no painel de controle.
> Frequentemente é necessário também [criar um endpoint](#criando-um-endpoint-para-ser-usado-no-frontend) para acessar o que foi configurado no painel de controle.
Há duas formas de definir algo no painel de controle:
1. Definir interface detalhando os dados do painel de controle
Não consegui achar um projeto com exemplo desta forma, mas é a forma que está explicada na documentação e nos treinamentos.
Checklist típica (os arquivos não precisam ser exatamente esses, é só uma sugestão):
- Criar um schema no arquivo `interfaces.py`, detalhando os campos desejados.
- Incluir uma tag `<configlet>` nos profiles de instalação e desinstalação do item de painel de controle, arquivo `controlpanel.xml`. O atributo `appId` deve coincidir nos dois arquivos.
- Criar um registro no Registry para a configuração, nos profiles de instalação e desinstalação. Arquivo `registry.xml` ou `registry/main.xml`. Usa-se a tag `<records>`.
- Criar uma página pra responder o item, arquivo `controlpanel/configure.zcml` (tag `browser:page`) e `controlpanel/controlpanel.py`.
- Criar um adapter pro Volto conseguir ver o item. Crie a tag `<adapter>`, em geral no arquivo `restapi/configure.zcml`.
[Documentação, Control Panels](https://6.docs.plone.org/backend/control-panels.html)
[Training "Mastering Plone", add custom control panel](https://training.plone.org/mastering-plone/registry.html#controlpanel-label)
[Documentação dos tipos](https://plonerestapi.readthedocs.io/en/latest/usage/types-schema.html)
2. Definir interface apenas com uma string, de forma que os dados sejam guardados como json. Neste caso, define-se um widget no frontend para editar este json. *Esta forma é mais comum nos addons do "Awesome Volto"*.
Checklist típica (os arquivos não precisam ser exatamente esses, é só uma sugestão):
- Criar um schema no arquivo `interfaces.py`. Neste caso, o schema só contém um item, so tipo `SourceText`.
- Incluir uma tag `<configlet>` nos profiles de instalação e desinstalação do item de painel de controle, arquivo `controlpanel.xml`. O atributo `appId` deve coincidir nos dois arquivos.
- Criar um registro no Registry para a configuração, nos profiles de instalação e desinstalação. Arquivo `registry.xml` ou `registry/main.xml`. Usa-se a tag `<records>`.
- Criar uma página pra responder o item, arquivo `controlpanel/configure.zcml` (tag `browser:page`) e `controlpanel/controlpanel.py`.
- Criar um adapter pro Volto conseguir ver o item. Crie a tag `<adapter>`, em geral no arquivo `restapi/configure.zcml`.
Projetos de exemplo:
- [eea.banner](https://github.com/eea/eea.banner) (usado pelo addon de frontend `volto-banner`)