laipower/wp-content/plugins/easy-digital-downloads/includes/blocks/assets/js/term-image.js

100 lines
2.8 KiB
JavaScript

; ( function ( document, $, undefined ) {
'use strict';
var custom_uploader,
targetInputClass = '.upload-image-id',
previewClass = 'upload-image-preview',
target_input,
TermImage = {};
TermImage.upload = function () {
$( '.upload-image' ).on( 'click.upload', _uploadMedia );
$( '.delete-image' ).on( 'click.delete', _deleteMedia );
$( '#addtag #submit' ).on( 'click.term', _termImages );
function _uploadMedia ( e ) {
e.preventDefault();
target_input = $( this ).prev( targetInputClass );
//If the uploader object has already been created, reopen the dialog
if ( custom_uploader ) {
custom_uploader.reset();
}
//Extend the wp.media object
custom_uploader = wp.media.frames.file_frame = wp.media( {
title: ( [ TermImage.params.text ] ),
button: {
text: ( [ TermImage.params.text ] )
},
multiple: false,
library: { type: 'image' }
} );
//When a file is selected, grab the URL and set it as the text field's value
custom_uploader.on( 'select', function () {
var attachment = custom_uploader.state().get( 'selection' ).first().toJSON(),
preview = $( target_input ).prevAll( '.' + previewClass ),
deleteButton = $( target_input ).siblings( '.delete-image' ),
previewImage = $( '<div />', {
class: previewClass
} ).append( $( '<img/>', {
style: 'max-width:300px;',
src: _getImageURL( attachment ),
alt: ''
} ) );
$( target_input ).val( attachment.id );
if ( preview.length ) {
preview.remove();
}
$( target_input ).before( previewImage );
$( deleteButton ).show();
} );
//Open the uploader dialog
custom_uploader.open();
}
/**
* Get the medium size image, if it exists.
* @param image
* @return {*}
* @private
*/
function _getImageURL ( image ) {
return image.sizes.medium ? image.sizes.medium.url : image.url;
}
function _deleteMedia ( e ) {
e.preventDefault();
target_input = $( this ).prevAll( targetInputClass );
var previewView = $( this ).prevAll( '.' + previewClass );
$( target_input ).val( '' );
$( previewView ).remove();
$( this ).hide();
}
function _termImages ( e ) {
e.preventDefault();
var submitButton = $( this ).parentsUntil( '#addtag' ),
previewView = submitButton.siblings( '.term-image-wrap' ).children( '.' + previewClass ),
clearInput = submitButton.siblings( '.term-image-wrap' ).children( targetInputClass );
if ( $( previewView ).length && $( submitButton ).length ) {
$( previewView ).delay( 1000 ).fadeOut( 200, function () {
$( this ).remove();
$( clearInput ).val( '' );
} );
}
}
};
TermImage.params = typeof EDDTermImages === 'undefined' ? '' : EDDTermImages;
if ( typeof TermImage.params !== 'undefined' ) {
TermImage.upload();
}
} )( document, jQuery );