Plugins bloques actualizados
This commit is contained in:
@@ -29,6 +29,128 @@
|
||||
|
||||
// Añadir cursor pointer a los shortcodes
|
||||
$('.bloques-dashboard-shortcodes code').css('cursor', 'pointer').attr('title', 'Clic para copiar');
|
||||
|
||||
// Mostrar/ocultar metaboxes de Iniciativa y Línea de Trabajo en el editor de entradas
|
||||
if (typeof bloquesAdminData !== 'undefined' && bloquesAdminData.isPostEditor) {
|
||||
initConditionalTaxonomyBoxes();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Mostrar metaboxes de Iniciativa y Línea de Trabajo solo cuando
|
||||
* la entrada tiene marcada la categoría "Bloques en Transición".
|
||||
* Compatible con el editor clásico y Gutenberg.
|
||||
*/
|
||||
function initConditionalTaxonomyBoxes() {
|
||||
const catIds = bloquesAdminData.bloquesCatIds || [];
|
||||
|
||||
if (!catIds.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
// ── Editor clásico (metaboxes) ──
|
||||
const $iniciativaBox = $('#iniciativadiv, #taxonomy-iniciativa').closest('.postbox');
|
||||
const $lineaBox = $('#linea_trabajodiv, #taxonomy-linea_trabajo').closest('.postbox');
|
||||
|
||||
if ($iniciativaBox.length || $lineaBox.length) {
|
||||
// Comprobar estado inicial y escuchar cambios en checkboxes de categorías
|
||||
function checkClassicCategories() {
|
||||
let isBloquesChecked = false;
|
||||
|
||||
catIds.forEach(function(catId) {
|
||||
if ($('#in-category-' + catId).is(':checked')) {
|
||||
isBloquesChecked = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (isBloquesChecked) {
|
||||
$iniciativaBox.slideDown(200);
|
||||
$lineaBox.slideDown(200);
|
||||
} else {
|
||||
$iniciativaBox.slideUp(200);
|
||||
$lineaBox.slideUp(200);
|
||||
}
|
||||
}
|
||||
|
||||
// Estado inicial (sin animación)
|
||||
(function() {
|
||||
let isBloquesChecked = false;
|
||||
catIds.forEach(function(catId) {
|
||||
if ($('#in-category-' + catId).is(':checked')) {
|
||||
isBloquesChecked = true;
|
||||
}
|
||||
});
|
||||
if (isBloquesChecked) {
|
||||
$iniciativaBox.show();
|
||||
$lineaBox.show();
|
||||
} else {
|
||||
$iniciativaBox.hide();
|
||||
$lineaBox.hide();
|
||||
}
|
||||
})();
|
||||
|
||||
// Escuchar cambios en categorías
|
||||
$('#categorychecklist').on('change', 'input[type="checkbox"]', checkClassicCategories);
|
||||
}
|
||||
|
||||
// ── Gutenberg (editor de bloques) ──
|
||||
if (typeof wp !== 'undefined' && wp.data && wp.data.select && wp.data.subscribe) {
|
||||
let previousCategories = [];
|
||||
|
||||
// Selectores de los paneles de taxonomías en el sidebar de Gutenberg
|
||||
function toggleGutenbergPanels(show) {
|
||||
// Los metaboxes de taxonomías custom en Gutenberg tienen paneles con
|
||||
// data-taxonomy o clases como .editor-post-taxonomies__hierarchical-terms-list
|
||||
// Usamos un enfoque basado en MutationObserver + selectores
|
||||
const selectors = [
|
||||
'.editor-post-taxonomies__hierarchical-terms-list[data-taxonomy="iniciativa"]',
|
||||
'.editor-post-taxonomies__hierarchical-terms-list[data-taxonomy="linea_trabajo"]',
|
||||
// Paneles en el sidebar del editor
|
||||
'[class*="iniciativa"]',
|
||||
'[class*="linea_trabajo"]',
|
||||
];
|
||||
|
||||
// Buscar los paneles padre (.components-panel__body) que contienen estas taxonomías
|
||||
const panels = document.querySelectorAll('.components-panel__body');
|
||||
panels.forEach(function(panel) {
|
||||
const heading = panel.querySelector('.components-panel__body-title button');
|
||||
if (heading) {
|
||||
const text = heading.textContent.toLowerCase();
|
||||
if (text.includes('iniciativa') || text.includes('línea') || text.includes('linea')) {
|
||||
panel.style.display = show ? '' : 'none';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// También ocultar los metaboxes clásicos que pueda insertar WP en Gutenberg
|
||||
['iniciativadiv', 'linea_trabajodiv'].forEach(function(id) {
|
||||
const el = document.getElementById(id);
|
||||
if (el) {
|
||||
el.style.display = show ? '' : 'none';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
wp.data.subscribe(function() {
|
||||
const editor = wp.data.select('core/editor');
|
||||
if (!editor) return;
|
||||
|
||||
const currentCategories = editor.getEditedPostAttribute('categories') || [];
|
||||
|
||||
// Solo actuar si las categorías cambiaron
|
||||
if (JSON.stringify(currentCategories) === JSON.stringify(previousCategories)) {
|
||||
return;
|
||||
}
|
||||
previousCategories = currentCategories.slice();
|
||||
|
||||
// Comprobar si alguna de las categorías de Bloques está seleccionada
|
||||
const isBloquesChecked = catIds.some(function(catId) {
|
||||
return currentCategories.includes(catId);
|
||||
});
|
||||
|
||||
toggleGutenbergPanels(isBloquesChecked);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
})(jQuery);
|
||||
|
||||
Reference in New Issue
Block a user