// Blogsy Metabox Media Uploader
jQuery(document).ready(function($){
// Single image
$(document).on('click', '.blogsy-upload-image', function(e){
e.preventDefault();
var button = $(this);
var target = $('#' + button.data('target'));
var preview = button.siblings('.blogsy-image-preview');
var frame = wp.media({
title: 'Select Image',
multiple: false,
library: { type: 'image' }
});
frame.on('select', function(){
var attachment = frame.state().get('selection').first().toJSON();
target.val(attachment.id);
preview.html('
');
});
frame.open();
});
// Gallery (multiple images)
$(document).on('click', '.blogsy-upload-gallery', function(e){
e.preventDefault();
var button = $(this);
var target = $('#' + button.data('target'));
var preview = button.siblings('.blogsy-gallery-preview');
var frame = wp.media({
title: 'Select Images',
multiple: true,
library: { type: 'image' }
});
frame.on('select', function(){
var selection = frame.state().get('selection');
var ids = [];
var html = '';
selection.each(function(attachment){
attachment = attachment.toJSON();
ids.push(attachment.id);
html += '
';
});
target.val(ids.join(','));
preview.html(html);
});
frame.open();
});
});
(function($){
let lastFormat = null;
function updateBlogsyMetaboxFieldsByFormat(selectedFormat) {
selectedFormat = selectedFormat || 'standard';
console.log('Post format changed to:', selectedFormat);
$('.blogsy-metabox-field').each(function(){
const $field = $(this);
const requireFormat = $field.data('require-post_format');
if (!requireFormat || requireFormat === selectedFormat) {
$field.show();
} else {
$field.hide();
}
});
}
function initForGutenberg() {
wp.domReady(function() {
// Run once on load
updateBlogsyMetaboxFieldsByFormat(
wp.data.select('core/editor').getEditedPostAttribute('format')
);
// Subscribe to format changes only
wp.data.subscribe(function() {
const currentFormat = wp.data.select('core/editor').getEditedPostAttribute('format') || 'standard';
if (currentFormat !== lastFormat) {
lastFormat = currentFormat;
updateBlogsyMetaboxFieldsByFormat(currentFormat);
}
});
});
}
function initForClassic() {
function getFormatFromDOM() {
return $("input[name^='post-format-']:checked").val() || 'standard';
}
// Run once on load
$(document).ready(function() {
updateBlogsyMetaboxFieldsByFormat(getFormatFromDOM());
});
// Watch for format change
$(document).on('change', "input[name^='post-format-']", function(){
updateBlogsyMetaboxFieldsByFormat(getFormatFromDOM());
});
}
// Decide which editor is active
if (typeof wp !== 'undefined' && wp.data && wp.data.select('core/editor')) {
initForGutenberg();
} else {
initForClassic();
}
})(jQuery);