plonegovbr / brasil.gov.tiles

Blocos de Conteúdo (Tiles) para sites do Governo Brasileiro
https://plone.org.br/gov/
3 stars 12 forks source link

Tile banner rotativo com problemas #145

Closed claytonc closed 7 years ago

claytonc commented 8 years ago

O tile banner rotativo esta apresentando problemas.

Após ser populado com as imagens não é possível removê-los clicando no "X" ou movê-las, ficando em branco.

idgserpro commented 8 years ago

@claytonc poderia nos informar qual versão do brasil.gov.tiles e do IDG que você está usando?

Você pode obter essa info indo em "Configurações do Site", no canto inferior esquerdo tem a versão do Plone. Para ver a do brasil.gov.tiles, vá em "Complementos". Obrigado!

claytonc commented 8 years ago

A última versão 1.1.3.1 e utilizando o portal.buildout que utiliza a versão.

osandon commented 8 years ago

Também estamos com o mesmo problema no Banner.

osandon commented 8 years ago

Também não estamos conseguindo inserir mais de três notícias no banner.

almeidajeff commented 8 years ago

Mesmo problema aconteceu comigo.

Segue versões

almeidajeff commented 8 years ago

@claytonc @osandon @idgserpro A solução que apliquei aqui foi implementar o método replace_with_objects que não esta presente no banner_rotativo.py

    def replace_with_objects(self, uuids):
        """ Replaces the whole list of items with a new list of items
        :param uuids: The list of objects' UUIDs to be used
        :type uuids: List of strings
        """
        super(BannerRotativoTile, self).replace_with_objects(uuids)  # check permission
        if not self.isAllowedToEdit():
            raise Unauthorized(
                _('You are not allowed to add content to this tile'))
        data_mgr = ITileDataManager(self)
        old_data = data_mgr.get()
        # Clean old data
        old_data['uuids'] = dict()
        data_mgr.set(old_data)
        # Repopulate with clean list
        self.populate_with_uids(uuids)
idgserpro commented 8 years ago

@almeidajeff, na verdade ele herda esse método do brasil.gov.tiles.tiles.list.ListTile. No entanto, talvez essa implementação não seja mais compatível com a nova versão do collective.cover. Temos que verificar. Relacionado com:

https://github.com/plonegovbr/brasil.gov.tiles/issues/132#issuecomment-182498764

smkbarbosa commented 8 years ago

Pra mim, o erro apresentado é o seguinte ao tentar excluir um item do banner rotativo:

HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy
https://paraiso.ifto.edu.br/portal_javascripts/brasil_gov_facetada/resourceplone.app.jquery-cachekey-64ca28e423846a1ff102faf6dacb3a2b.js
Line 14
idgserpro commented 8 years ago

@claytonc, o erro indicado pelo @smkbarbosa é o mesmo do seu? Você também está utilizando o brasil.gov.facetada? Pode informar o seu traceback?

claytonc commented 8 years ago

@idgserpro sim utilizo.

Como tive que entregar o portal no começo do ano eu sobrescrevi o banner rotativo, as mudanças que fiz foi que agora os banners ficam em uma determinada pasta (sugestão dos provedores de conteúdo), ficou mais simples busco os 4 primeiros banners e a ordenação é a da pasta.

O css e o js é o mesmo do banner rotativo sem alterações.

Então não tenho como mais ver o log gerado, mas eu me lembro que o erro também acontece sem a busca facetada.

shogunbr commented 8 years ago

Estamos com o mesmo problema. Ao tentar excluir o item do banner dá o seguinte erro:

2016-08-10 17:31:36 ERROR Zope.SiteErrorLog 1470843096.170.104274255523 http://10.10.12.165:8080/Plone/home/@@removeitemfromlisttile Traceback (innermost last): Module ZPublisher.Publish, line 138, in publish Module ZPublisher.mapply, line 77, in mapply Module ZPublisher.Publish, line 48, in call_object Module grokcore.view.components, line 151, in call Module zope.publisher.publish, line 107, in mapply

hvelarde commented 7 years ago

o código da view está esperando 3 parâmetros: https://github.com/collective/collective.cover/blob/1.1b1/src/collective/cover/browser/cover.py#L332

possivelmente o tile precisa ser atualizado.

almeidajeff commented 7 years ago

Me lembro de ter passado por problemas também ao tentar excluir um Item do Tile. No tempo eu tinha identificado que o uuid sempre estava vindo vazio https://github.com/collective/collective.cover/blob/1.1b1/src/collective/cover/browser/cover.py#L331

E percebi que no request o correto era 'uid' e não uuid como informado.

hvelarde commented 7 years ago

@rodfersou nós que quebramos isso, acho que devemos consertar.

rodfersou commented 7 years ago

só mudar de uid para uuid que resolve

almeidajeff commented 7 years ago

Na verdade é o contrario @rodfersou , teria que mudar de uuid = self.request.form.get('uuid')

para uuid = self.request.form.get('uid')

rodfersou commented 7 years ago

@almeidajeff de uma olhada nesse pull request por favor https://github.com/plonegovbr/brasil.gov.tiles/pull/166/files

almeidajeff commented 7 years ago

Massa @rodfersou é isso mesmo, vi que você corrigiu a questão do método replace_with_objects que eu tinha comentado por aqui tbm.

Show de bola :+1:

hvelarde commented 7 years ago

gente, por favor ajudem testar para fazer um release na sequência.

smkbarbosa commented 7 years ago

Testei as alterações propostas pelo @almeidajeff e o pull request do @rodfersou, agora retorna esse erro:

Traceback (innermost last):
  Module ZPublisher.Publish, line 138, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 48, in call_object
  Module grokcore.view.components, line 151, in __call__
  Module zope.publisher.publish, line 107, in mapply
   - __traceback_info__: <bound method RemoveItemFromListTile.render of <collective.cover.browser.cover.RemoveItemFromListTile object at 0x7f6b886541d0>>
  Module zope.publisher.publish, line 113, in debug_call
  Module collective.cover.browser.cover, line 274, in render
BadRequest: Invalid parameters
smkbarbosa commented 7 years ago

Se manter conforme informado pelo @almeidajeff (https://github.com/plonegovbr/brasil.gov.tiles/issues/145#issuecomment-266748433) retorna erro 400 ao tentar excluir.

Se manter

 uuid = self.request.form.get('uuid')

retorna 204.... exclui da tela no momento, sem registro de erro, mais o banner continua ao voltar para visão do site.

smkbarbosa commented 7 years ago

Na console retorna:

HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy  resourceplone.app.jquery-cachekey-f1bb8bf8adf593bd1153aaf869141871.js:14

no element found  @@removeitemfromlisttile:1:1
rodfersou commented 7 years ago

@smkbarbosa parece que voce precisa cozinhar seus javascripts

Por estar com resourceplone.app.jquery-cachekey-f1bb8bf8adf593bd1153aaf869141871.js esse formato de nome significa que o javascript está em modo de produção, não em desenvolvimento, e não deve ter aplicado minhas alterações.

Para resolver isso, voce pode entrar na ZMI no seu plone site, portal_javascript, rolar até o final da página e clicar em salvar sem mexer em nada mais. Isso recria o javascript do plone em produção.

idgserpro commented 7 years ago

@rodfersou eu testei no modo debug e esse erro realmente ocorre.

rodfersou commented 7 years ago

que versão do collective.cover voces estão usando?

$ grep -i cover bin/instance 
  '/home/rodfersou/.projects/cache/eggs/collective.cover-1.1b1-py2.7.egg',

Aqui é 1.1b1 e não consegui ver esse bug.. (se bem que não funcionou a exclusão)

rodfersou commented 7 years ago

aqui o problema acontece nessa linha por que o tile banner não herda do tile list ele não remove o item.

rodfersou commented 7 years ago

o tile banner rotativo herda da própria versão do tile list ao invés do tile list do collective.cover.

Seria bom rever essa dependencia.. por que precisamos de um tile list diferente do do collective.cover? se precisa mesmo de alterações no tile, podemos pelo menos herdar do tile list do cover e depois fazer alterações no brasil.gov.tiles.

idgserpro commented 7 years ago

@rodfersou veja essa comentário: https://github.com/plonegovbr/brasil.gov.tiles/issues/132#issuecomment-182498764

rodfersou commented 7 years ago

@idgserpro se me lembro bem, foi necessário um overrides.zcml por que não estava conseguindo fazer sem o override, as configurações do collective.cover e brasil.gov.tiles estavam entrando em conflito, e fui orientado a trabalhar dessa forma.

Talvez com mais calma e mais tempo seja possível fazer o override somente mudando o layer (como ocorre normalmente em views), mas é bom tomar muito cuidado para não quebrar nada.

A questão de copiar todos os métodos, não estou lembrado se teve algum motivo justificável, o correto seria herdar dos tiles do cover.

Seria bom abrir uma nova issue para tratar somente disso e marcar essa issue como dependência da nova issue.

idgserpro commented 7 years ago

A explicação completa do erro está em https://github.com/plonegovbr/brasil.gov.tiles/pull/166#issuecomment-275732680

A correção não é imediata e ainda são precisos estudos resolver esse relato. O PR acima resolve parcialmente.

Para aqueles que precisam dessa funcionalidade, recomendamos criar um patch usando collective.monkeypatcher, alterando o método

https://github.com/collective/collective.cover/blob/1.1b1/src/collective/cover/browser/cover.py#L327

Trocando

uuid = self.request.form.get('uuid')

por

uuid = self.request.form.get('uid')

e

if IListTile.providedBy(tile):

por

import brasil.gov.tiles.tiles.list.IListTile
if IListTile.providedBy(tile) or brasil.gov.tiles.tiles.list.IListTile.providedBy(tile):

Leia a documentação completa de collective.monkeypatcher, é possível aplicar o patch na versão específica do collective.cover. Recomendo criar um novo pacote (meuportal.brasilgovtilespatch ou algo assim) para que esse workaround seja o mais isolado possível.

idgserpro commented 7 years ago

Restante será feito na branch https://github.com/plonegovbr/brasil.gov.tiles/tree/issue_145_usa_listtile_cover, específica pra remover o tipo lista.

rodfersou commented 7 years ago

@idgserpro não consigo ver esse link

idgserpro commented 7 years ago

Isso é apenas uma branch, você não consegue vê-la em https://github.com/plonegovbr/brasil.gov.tiles/branches?

idgserpro commented 7 years ago

Prezados (as),

Foi lançada hoje a versão 1.2rc1 desse pacote que corrige de forma paliativa esse problema do Banner Rotativo. A forma mais correta envolve uma reformulação completa do brasil.gov.tiles e ainda está em andamento.

Gostaria de pedir a vocês para testarem, se possível, num ambiente de homologação de vocês esse release do brasil.gov.tiles. Não recomendamos em produção ainda porque provavelmente faremos um release do IDG que contemplará esse fix.

Para testar, basta no arquivo de versões de vocês adicionarem brasil.gov.tiles = 1.2rc1.

idgserpro commented 7 years ago

Foi lançado o release https://github.com/plonegovbr/portalpadrao.release/releases/tag/1.1.5.3 contendo essa versão de brasil.gov.tiles.

hvelarde commented 7 years ago

avisem por favor na lista para as pessoas testar.

shogunbr commented 7 years ago

Fiz um teste atualizando um portal existente. Ao clicar no x para remover um item, visualmente todos os itens somem do banner. Mas, ao recarregar a página de compor, apenas o item em que eu cliquei para remover foi excluído (que é o comportamento esperado).

No console aparece 2x o mesmo warning:

2017-06-27T13:30:13 WARNING plone.protect error parsing dom, failure to add csrf token to response for url http://10.10.12.165:8080/Plone/campus/santahelena/home/@@removeitemfromlisttile ------ 2017-06-27T13:30:13 WARNING plone.protect error parsing dom, failure to add csrf token to response for url http://10.10.12.165:8080/Plone/campus/santahelena/home/@@removeitemfromlisttile

idgserpro commented 7 years ago

Sim, como foi afirmado, essa correção é paliativa (via patch), infelizmente ocorre esse efeito colateral de na remoção sumir tudo e ser necessário recarregar.

hvelarde commented 7 years ago

@idgserpro acho que o @rodfersou sabe como corrigir isso; tem que adicionar um header na resposta; @shogunbr tu consegue abrir uma nova issue, por favor?

shogunbr commented 7 years ago

@hvelarde a nova issue seria sobre esse comportamento de sumir tudo ou por causa desse warning do plone.protect? essas duas coisas estão relacionadas, ou são problemas diferentes?

hvelarde commented 7 years ago

@shogunbr são problemas diferentes; seria só sobre isso pois o problema relatado aqui já foi consertado.

idgserpro commented 7 years ago

@hvelarde favor ainda não fechar essa issue porque a solução foi aplicando um patch, ainda iremos corrigir de forma definitiva, mas não nesse release.

hvelarde commented 7 years ago

@idgserpro sinceramente acho que a issue pode ser fechada e a correção definitiva aplciada em um PR; mas vocês que sabem.

idgserpro commented 7 years ago

Como o problema foi resolvido, fecharei o relato porque realmente ficou bem confuso.

O novo relato em https://github.com/plonegovbr/brasil.gov.tiles/issues/181 passa a defender a remoção do patch em definitivo.