plonegovbr / brasil.gov.portal

Implementação em Plone do Portal Padrão da Identidade Digital de Governo
https://plone.org.br/gov/
36 stars 32 forks source link

Adaptar tipo Infográfico padrão tipo Imagem: permitir edição a partir do folder_contents e demais funcionalidades #578

Open idgserpro opened 5 years ago

idgserpro commented 5 years ago

Qual versão do produto você está usando e em qual sistema operacional?

Portal Padrão 2.1.1 Plone 4.3.18 (4320) CMF 2.2.10 Zope 2.13.28

Possui plugins adicionados além dos definidos numa instalação padrão do Portal Padrão?

Não

Está utilizando o buildout padrão como o usado em https://github.com/plonegovbr/portal.buildout?

Não

Está utilizando o arquivo de versões de pinagens das dependências como definido em https://github.com/plonegovbr/portalpadrao.release e https://github.com/plonegovbr/brasil.gov.portal#requisitos?

Sim. É uma instalação brasil.gov.portal que aponta para a versão https://github.com/plonegovbr/portalpadrao.release

Quais são os passos para reproduzir o problema?

Crie um tipo "Infográfico" normal. Depois, acesse /folder_contents do pai do Infográfico. Na listagem de objetos, clique no objeto Infográfico recém criado.

Qual é o retorno esperado? O que você vê ao contrário do esperado?

A tela de edição do Infográfico, com as opções padrão do Plone (Visão, Edição). Ao invés disso, abre a imagem cadastrada no infográfico, em tela cheia no navegador, impedindo a edição do objeto.

idgserpro commented 5 years ago

O infográfico é baseado no Tipo Imagem. Comparando os dois em plone.app.contenttypes:

https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/browser/templates/image.pt https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/schema/image.xml https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/profiles/default/types/Image.xml https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/profiles/default/diff_tool.xml#L16 https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/profiles/default/rolemap.xml#L37 https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/permissions.zcml#L28 https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/subscribers.py#L5 https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/browser/configure.zcml#L174 https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/content.py#L88 https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/indexers.py https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/indexers.zcml https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/permissions.py https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/permissions.zcml https://github.com/plone/plone.app.contenttypes/blob/1.1.6/plone/app/contenttypes/subscribers.zcml

Percebemos que o infográfico não definiu o diff_tool, o indexer e o subscriber. ~Apesar disso ser realmente necessário ser revisto (provavelmente em outro relato), não é exatamente o escopo desse relato, que impede a edição do objeto.~

Para o problema de não conseguir editar no folder_contents, no caso, após debugar a template table.pt, descobrimos que para um objeto imagem, o view_url vinha diferente:

Infográfico

{'brain': <Products.ZCatalog.Catalog.mybrains object at 0x7fc3c7a24a78>,
  'checked': None,
  'folderish': False,
  'icon': u'<img width="16" height="16" src="http://localhost:8080/Plone/image_icon.png" alt="Infogr\xe1fico PNG image" />',
  'view_url': 'http://localhost:8080/Plone/pnggrad16rgb.png',
  'wf_state': Missing.Value},

Imagem

 {'brain': <Products.ZCatalog.Catalog.mybrains object at 0x7fc3c7507460>,
  'checked': None,
  'folderish': False,
  'icon': u'<img width="16" height="16" src="http://localhost:8080/Plone/image.png" alt="Imagem JPEG image" />',
  'view_url': 'http://localhost:8080/Plone/dsc.jpg/view',
  'wf_state': Missing.Value}]

Analisando quem monta essa lista, em plone/app/content/browser/foldercontents.py, descobrimos que é necessário editar a propriedade typesUseViewActionInListings em http://localhost:8080/Plone/portal_properties/site_properties/manage_propertiesForm, adicionando o tipo Infographic. ~Dessa forma corrige o problema descrito nesse relato.~ Para esse erro, a correção envolve setar essa propriedade e na sequência fazer um upgradeStep.