/**
* Init widgets uploader fields
*/
(function($){
"use strict";
// Used fields classes
var $classButton = '.predic-widget-img-uploader__select';
var $classInput = '.predic-widget-img-uploader__input';
var $classPreview = '.predic-widget-img-uploader__preview';
var $classWrapper = '.predic-widget-img-uploader__wrapper';
// Handle widget admin screen init
$(document).ready(function(){
$(document).on('click', $classButton, function( event ) {
event.preventDefault();
// Uploading files
var file_frame;
var $clicked = $(this);
var $input = $clicked.parent($classWrapper).find($classInput);
var $preview = $clicked.parent($classWrapper).find($classPreview);
var $attachment;
// If the media frame already exists, reopen it.
if (file_frame) {
file_frame.open();
return;
}
// Create the media frame.
file_frame = wp.media.frames.file_frame = wp.media({
title: predic_widget_uploader_field.uploader_title,
button: {
text: predic_widget_uploader_field.button_text,
},
multiple: false // Set to true to allow multiple files to be selected
});
// When an image is selected, run a callback.
file_frame.on('select', function () {
// We set multiple to false so only get one image from the uploader
$attachment = file_frame.state().get('selection').first().toJSON();
// Get attachement id and set preview
$input.val($attachment.id);
$input.trigger('change'); // Fix for widget not registering change for admin form
$preview.html('
');
});
// Finally, open the modal
file_frame.open();
});
// Clear preview image and value
$(document).on('click', '.predic-widget-img-uploader__clear', function( event ) {
event.preventDefault();
var $clicked = $(this);
var $input = $clicked.parent($classWrapper).find($classInput);
$input.val('');
$input.trigger('change'); // Fix for widget not registering change for admin form
$clicked.parent($classWrapper).find($classPreview).html('');
});
// Default value preview and value
$(document).on('click', '.predic-widget-img-uploader__default', function( event ) {
event.preventDefault();
var $clicked = $(this);
var $url = $clicked.data('url');
var $input = $clicked.parent($classWrapper).find($classInput);
$input.val($url);
$input.trigger('change'); // Fix for widget not registering change for admin form
$clicked.parent($classWrapper).find($classPreview).html('
');
});
});
})(jQuery);