From 2c0965e71f255819c48c5671335259902f16e69f Mon Sep 17 00:00:00 2001 From: Rodrigo Carvalho Benevides Date: Fri, 27 Dec 2024 20:16:40 +0000 Subject: [PATCH] Atualizar 'Dicas de Plone 6 e Volto' --- Dicas-de-Plone-6-e-Volto.md | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Dicas-de-Plone-6-e-Volto.md b/Dicas-de-Plone-6-e-Volto.md index 89625c6..f97fd23 100644 --- a/Dicas-de-Plone-6-e-Volto.md +++ b/Dicas-de-Plone-6-e-Volto.md @@ -143,18 +143,35 @@ Passos: #### Criando item de painel de controle -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 `` 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 ``. + - 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 ``, 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 `` 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 ``. + - 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 ``, 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`) - [collective.volto.subfooter](https://github.com/collective/collective.volto.subfooter) @@ -165,6 +182,12 @@ Há duas formas de definir algo no painel de controle. [Docs, Control Panels (bem limitado)](https://6.docs.plone.org/backend/control-panels.html) +##### Troubleshooting + +- Item aparece no plone clássico e não aparece no Volto. + + O Volto exige os atributos `action_id` e `appId` da tag ``. Além disso, não se esqueça do ``. + #### Criando um endpoint para ser usado no frontend Passos, grosso modo. Veja os exemplos para ter uma ideia melhor. @@ -252,7 +275,7 @@ Passos: ``` const addons = ['', 'volto-ploneconf']; ``` - + > Aparentemente, pode também ser feito no `frontend/package.json`, num item `addons`. > Não sei qual a maneira mais recomendada