Files
freepress-map/fp-geo-content/assets/js/admin.js
2026-02-13 13:14:41 +01:00

89 lines
2.9 KiB
JavaScript

/**
* Scripts del admin - FP Geo Content
*/
(function($) {
'use strict';
$(document).ready(function() {
// Copiar shortcode al portapapeles
$('.fp-geo-shortcode').on('click', function() {
const text = $(this).text();
navigator.clipboard.writeText(text).then(function() {
alert('Shortcode copiado al portapapeles');
});
}).css('cursor', 'pointer').attr('title', 'Clic para copiar');
// Media uploader para icono personalizado
let mediaUploader;
$('.fp-geo-upload-btn').on('click', function(e) {
e.preventDefault();
const targetId = $(this).data('target');
const $input = $('#' + targetId);
const $preview = $('#' + targetId + '_preview');
const $removeBtn = $('.fp-geo-remove-btn[data-target="' + targetId + '"]');
// Si el uploader ya existe, abrirlo
if (mediaUploader) {
mediaUploader.open();
return;
}
// Crear el media uploader
mediaUploader = wp.media({
title: 'Seleccionar icono de marcador',
button: {
text: 'Usar este icono'
},
multiple: false,
library: {
type: 'image'
}
});
// Cuando se selecciona una imagen
mediaUploader.on('select', function() {
const attachment = mediaUploader.state().get('selection').first().toJSON();
// Actualizar input
$input.val(attachment.id);
// Mostrar preview
const imgUrl = attachment.sizes.thumbnail ? attachment.sizes.thumbnail.url : attachment.url;
$preview.html('<img src="' + imgUrl + '" alt="" style="max-width: 60px; height: auto;">').show();
// Mostrar botón eliminar
$removeBtn.show();
});
mediaUploader.open();
});
// Eliminar imagen
$('.fp-geo-remove-btn').on('click', function(e) {
e.preventDefault();
const targetId = $(this).data('target');
const $input = $('#' + targetId);
const $preview = $('#' + targetId + '_preview');
$input.val('');
$preview.html('').hide();
$(this).hide();
});
// Toggle opciones de color por categoría
$('input[name="fp_geo_content_options[use_category_colors]"]').on('change', function() {
const $options = $('.fp-geo-category-color-options');
if ($(this).is(':checked')) {
$options.slideDown();
} else {
$options.slideUp();
}
}).trigger('change');
});
})(jQuery);