Durante a validação visual e de fluxo do módulo publisher-highlights, foram identificados problemas de consistência no preenchimento de dropdowns, ausência de atualização no visualizador iframe, falha na simulação de variáveis, problemas de espaçamento no mapeamento de variáveis, um erro conceitual na exposição dos campos do publicador e a necessidade de suportar um bloco de exibição alternativa (fallback) caso nenhuma publicação atenda aos critérios.
Detalhes das Correções e Melhorias Solicitadas
1. Dropdown de "Itens selecionados (ordem)" Vazio na Regra Manual
-
Problema: O dropdown
.ui.multiple.search.selection.dropdownpara a regra de alimentaçãoManualexibe uma lista vazia, impedindo a seleção de páginas do publicador selecionado, mesmo quando há registros ativos correspondentes no banco de dados. -
Ajuste:
-
Em
gestor/modulos/publisher-highlights/publisher-highlights.php, nas funções de AJAXpublisher_highlights_ajax_publisher_pages_searchepublisher_highlights_ajax_publisher_pages_fetch, ajustar a consulta SQL. -
Em vez de fazer uma seleção isolada na tabela
paginas(onde opublisher_idpode não estar preenchido ou estar desalinhado), realizar umINNER JOINcom a tabelapublisher_pagesusando a correlaçãopp.page_id = p.id AND pp.language = p.language. -
Filtrar no
WHEREusandopp.publisher_idpara garantir o vínculo correto da página ao publicador e verificar o status ativo (p.status = 'A') na linguagem atual.
-
2. Atualização Automática do Visualizador Iframe ao Mudar o Modelo (Recurso)
-
Problema: Ao selecionar um novo modelo no select
template_id, o editor de código carrega o HTML e o CSS corretos nos editores CodeMirror, mas o visualizador (iframe) correspondente não atualiza a renderização de forma automática. -
Ajuste:
-
Investigar os gatilhos no arquivo
gestor/assets/interface/html-editor-interface.js. -
Garantir que, após o CodeMirror atualizar seu valor a partir da resposta do AJAX de carregamento de template (
template-load), a função de atualização do visualizador (previewHtml()) seja chamada imediatamente.
-
3. Simulação de Variáveis no Visualizador para Destaques (publisher-highlights)
-
Problema: Ao acionar a aba/botão "Simulação" no editor de HTML, as variáveis do tipo loop de destaques (
@[[item#VAR_NAME]]@) não são preenchidas com dados fictícios. A lógica de simulação atual foi feita estritamente para o alvopublisher(com sintaxe[[publisher#TIPO#ID]]). -
Ajuste:
-
Em
gestor/assets/interface/html-editor-interface.js, na funçãopublisherVariablesOrSimulation(ou criando um método auxiliar), estender a lógica para dar suporte ao alvopublisher-highlights. -
Se a simulação estiver ativa e o alvo for destaques:
-
Localizar o bloco de loop
<!-- item < --> ... <!-- item > -->. Se existir, replicá-lo dinamicamentecountvezes (valor do campo de quantidade máxima ou padrão de 3). -
Acessar o mapeamento de variáveis ativo (
variable_mapping), que pode ser lido do input ocultofields_schema. -
Para cada variável
@[[item#VAR_NAME]]@encontrada no template repetido, buscar o campo do publicador correspondente (fieldId). -
Obter o tipo do campo do publicador no schema carregado (
publisher_fields_schema.fields) e extrair uma massa de dados fictícia aleatória (ex:.hep-simulation-${tipo} .item). Caso o tipo não seja encontrado ou a variável não esteja mapeada, fazer uma detecção baseada no nome (ex: nomes comimageusam.hep-simulation-image, nomes comtitulousam.hep-simulation-text, etc.).
-
-
4. Segmento Fomantic UI e Espaçamento no Mapeamento de Variáveis
-
Problema: O container onde as variáveis e botões de mapeamento são exibidos não possui fundo branco (diferindo de outros componentes do painel), e os botões dinâmicos (
.item-vare.publisher-field) aparecem sem margens, colados uns aos outros. -
Ajuste:
-
No arquivo HTML/PHP que define a interface (ver
PaginasData.json), alterar as classes do container.template-options-wrapperdeui segment basic fittedparaui segment(removendobasicefitted) para dar borda e fundo branco coerentes. -
No JavaScript do mapeamento (
gestor/modulos/publisher-highlights/publisher-highlights.js), aplicar margens inferiores e laterais (ex: classe adicional do Fomantic UI ou estilo inline dinâmico commargin-bottom: 6px; margin-right: 6px;) aos botões das variáveis e campos do publicador.
-
5. Ajuste de Margens e Espaçamento nos Auxiliares ui label
-
Problema: As etiquetas informativas/descritivas (
ui labelposicionadas logo abaixo dos cabeçalhos dos campos, como em "Itens selecionados (ordem)" e "Modelo (Recurso)") estão visualmente coladas nos selects e títulos adjacentes. -
Ajuste:
-
Adicionar margem superior e inferior nestas etiquetas descritivas para garantir um layout mais limpo e legível (ex: aplicar estilo ou classe com
margin: 8px 0; display: block;).
-
6. Correção Conceitual dos Campos Disponíveis para Mapeamento
-
Problema: O sidebar de Mapeamento exibe todas as variáveis cruas pertencentes ao modelo do publicador. Conceitualmente, deveriam ser exibidos apenas os campos reais do publicador instanciado que estão ativamente mapeados com a flag
linked_template: true(e os campos automáticos sempre disponíveis:titulo,url,data). -
Ajuste:
-
Em
gestor/modulos/publisher-highlights/publisher-highlights.php, na funçãopublisher_highlights_ajax_publisher_load, acessar o JSONfields_schemado publicador de origem. -
Ler o array
template_mape filtrar a coleção de campos disponíveis (fields) de forma a reter apenas os campos cujoidesteja associado notemplate_mapcom a propriedadelinked_templateigual atrue(ou truthy). -
Retornar no JSON de resposta (
campos) apenas esta lista de campos ativamente vinculáveis, além de manter os campos padrão (titulo,url,data).
-
7. Suporte ao Bloco no-item para Mensagem de Fallback
-
Problema: Quando dinamicamente não houver nenhuma publicação correspondente às regras configuradas (ex: publicador de notas sem nenhum registro ativo), o widget deve exibir um conteúdo amigável definido no editor em vez de renderizar um bloco em branco ou quebrar o layout.
-
Ajuste:
-
Suportar no engine de renderização uma marcação delimitadora específica:
<!-- no-item < --> HTML Alternativo <!-- no-item > -->.
-
8. Atualização dos 12 Templates Físicos de Destaques
-
Problema: Com a adição do suporte a mensagens de fallback para blocos sem itens, é necessário incluir um layout padrão de fallback nos templates físicos do sistema.
-
Ajuste:
-
Atualizar todos os 12 templates físicos (6 em
gestor/modulos/publisher-highlights/resources/pt-br/templates/e suas 6 cópias em inglês emgestor/modulos/publisher-highlights/resources/en/templates/). -
Inserir o bloco
<!-- no-item < -->...<!-- no-item > -->contendo uma mensagem de fallback adequada (ex:<h3>Nenhuma publicação encontrada</h3>/<h3>No publications found</h3>) e estilizada de acordo com o design do template correspondente. -
Atualizar o arquivo de metadados
publisher-highlights.json, limpando os checksums das chaveshtml,cssecombineddos templates alterados para permitir a regeneração/compilação dos hashes e deploy atualizado.
-
9. Processamento do Bloco no-item no Engine do Widget
-
Problema: O arquivo de renderização do widget precisa identificar se existem ou não publicações para decidir qual bloco exibir e qual remover da saída final.
-
Ajuste:
-
No arquivo
gestor/modulos/publisher-highlights/publisher-highlights.widget.php: -
Caso a busca por publicações retorne vazia (
empty($publicacoes)):-
Verificar a existência do bloco
no-itemno template usando regex. -
Se existir, remover completamente o bloco delimitador de loop
itemdo template. -
Extrair o conteúdo interno de
no-iteme substituir a marcação por este conteúdo (removendo as tags de comentário delimitadoras). -
Retornar este HTML resultante junto do CSS correspondente.
-
Se não existir o bloco
no-item, retornar string vazia''.
-
-
Caso existam publicações:
-
Remover inteiramente o bloco
no-item(incluindo as tags delimitadoras de comentário) do template. -
Executar a repetição e substituição de variáveis no bloco
itemnormalmente como já implementado.
-
-