Esta especificação detalha os ajustes finos necessários para corrigir o salvamento do template_id no banco de dados, solucionar o bug de dados vazios nos campos customizados do preview do widget, garantir fallbacks robustos na simulação Javascript, forçar a atualização da aba de preview ao trocar de modelo, e concluir a limpeza visual de arrobas (@@) em todos os textos explicativos das telas do administrador.
Detalhes das Correções e Ajustes Solicitados
1. Persistência de template_id no fields_schema (Banco de Dados)
-
Problema: O
template_id(o identificador do modelo selecionado pelo usuário) não está sendo persistido no backend, pois a tabelapublisher_highlightsnão possui essa coluna no banco de dados. -
Ajuste:
-
No Frontend (
publisher-highlights.js): -
Ao interceptar o submit do formulário (
#_gestor-interface-edit-dadose#_gestor-interface-insert-dados), adicionar a propriedadetemplate_idao objetoschemaserializado no input hiddenfields_schema:schema.template_id = $('#template_id').val() || ''; -
Na inicialização da página (hidratar UI), restaurar o valor do select do template a partir do schema:
$('#template_id').val(schema.template_id || '');$('#template_id').dropdown('set selected', schema.template_id || ''); -
No Backend (
publisher-highlights.php): -
Na definição do
$schema_inicial(açãoadicionar) e no re-preenchimento (açõeseditareclonar), garantir o valor padrão'template_id' => ''na mesclagem de chaves de$fields_schema_decoded. -
Chamar a função de carregamento das opções do template passando o valor recuperado:
publisher_highlights_template_options($fields_schema_decoded['template_id'] ?? null);
-
2. Correção de Dados Vazios nos Campos Customizados do Preview do Widget
-
Problema: Ao mapear variáveis a campos do publicador, os campos customizados/dinâmicos (como
subtitulo,conteudo, etc.) renderizam vazios no preview do widget. Isso ocorre porque o backend nopublisher-highlights.widget.phpdecodifica$row['pp.fields_values'](que no banco de dados é um array de objetos[{"id": "campo", "value": "valor"}]) e executaarray_mergediretamente nele, resultando em chaves numéricas no array de publicação, falhando ao buscar chaves associativas no mapeamento. -
Ajuste:
-
Em
gestor/modulos/publisher-highlights/publisher-highlights.widget.php, dentro da funçãopublisher_highlights_widget_buscar_publicacoes: -
Antes de mesclar os campos com os dados da página (linhas 218–227), converter a lista de objetos do
fields_valuesem um dicionário associativo no formato['id_do_campo' => 'valor_do_campo']:$campos_originais = json_decode($row['pp.fields_values'] ?? '[]', true); $campos_publisher = []; if(is_array($campos_originais)){ foreach($campos_originais as $item_field){ if(isset($item_field['id']) && isset($item_field['value'])){ $campos_publisher[$item_field['id']] = $item_field['value']; } } } -
Realizar o
array_mergeusando o array$campos_publisherassociativo normalizado.
-
3. Fallbacks Robustos de Simulação no Editor HTML (Simulação Completa)
-
Problema: Ao clicar no botão de Simulação do editor HTML, as variáveis
[[item#titulo]]e[[item#resumo]]continuam aparecendo textualmente sem substituição se as divs de simulação correspondentes no DOM não forem encontradas (por exemplo, se o deploy do componente de simulação simplificada ainda não ocorreu no Docker). -
Ajuste:
-
Em
gestor/assets/interface/html-editor-interface.js, na função de simulaçãopublisherVariablesOrSimulation(dentro da substituição das variáveis de item parapublisher-highlights): -
Garantir fallbacks de texto estático diretamente no Javascript para todos os tipos se a lista
simulItemsretornar vazia (length 0):-
Se
fieldType === 'image', retornar uma URL de imagem picsum padrão:'https://picsum.photos/seed/highlights/800/450'. -
Se
fieldType === 'url', retornar'#'ou'javascript:void(0);'. -
Se
fieldType === 'date', retornar uma data simulada'27/05/2026'. -
Para outros tipos (como
textoutextarea), retornar um texto simulado apropriado (ex:'Título Simulado de Destaque'ou'Resumo simulado curto e direto do bloco de destaques.') em vez domatchbruto da variável.
-
-
Isso garante que a simulação sempre funcione 100% no preview interno, independentemente do estado do DOM.
-
4. Forçar Atualização do Preview ao Alterar o template_id
-
Problema: Ao selecionar ou alterar o modelo visual de destaque (
#template_id) na interface de edição, o preview interno não recarrega automaticamente se a aba "Pré-Visualização" estiver ativa. -
Ajuste:
-
Em
publisher-highlights.js, no tratador do eventochangedo elemento$template(#template_id): -
Invocar a função global de atualização do editor HTML para recarregar o estado do editor e do preview:
if (typeof window.html_editor_refresh_preview === 'function') { window.html_editor_refresh_preview(); }
-
5. Limpeza Final de Arrobas (@@) em Textos Explicativos do Admin
-
Problema: Títulos e explicações estáticas nas páginas do admin continuam exibindo o formato
@[[item#...]]@. -
Ajuste:
-
Remover os arrobas de todas as variáveis e placeholders de exibição em textos estáticos, explicações e títulos nos arquivos HTML das páginas de
adicionar,editareclonar(idiomaspt-breen) do módulopublisher-highlights: -
Mudar
Mapeamento de Variáveis @[[item#...]]@->Mapeamento de Variáveis [[item#...]] -
Mudar
Variáveis do Modelo @[[item#...]]@->Variáveis do Modelo [[item#...]] -
Mudar
placeholders @[[item#nome_da_variavel]]@->placeholders [[item#nome_da_variavel]] -
Executar a compilação do Core após os ajustes nos HTMLs físicos para atualizar as sementes em
gestor/db/data/PaginasData.jsone o banco de dados.
-