103 lines
3.5 KiB
JavaScript
103 lines
3.5 KiB
JavaScript
|
jQuery(document).ready(function($) {
|
||
|
|
||
|
/***** Colour picker *****/
|
||
|
$('.colorpicker').hide();
|
||
|
$('.colorpicker').each( function() {
|
||
|
if( jQuery().farbtastic ) {
|
||
|
$(this).farbtastic( $(this).closest('.color-picker').find('.color') );
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$('.color').click(function() {
|
||
|
$(this).closest('.color-picker').find('.colorpicker').fadeIn();
|
||
|
});
|
||
|
|
||
|
$(document).mousedown(function() {
|
||
|
$('.colorpicker').each(function() {
|
||
|
var display = $(this).css('display');
|
||
|
if ( display == 'block' )
|
||
|
$(this).fadeOut();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
/***** Uploading images *****/
|
||
|
|
||
|
var file_frame;
|
||
|
|
||
|
jQuery.fn.uploadMediaFile = function( button, preview_media ) {
|
||
|
var button_id = button.attr('id');
|
||
|
var field_id = button_id.replace( '_button', '' );
|
||
|
var preview_id = button_id.replace( '_button', '_preview' );
|
||
|
|
||
|
// 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: jQuery( this ).data( 'uploader_title' ),
|
||
|
button: {
|
||
|
text: jQuery( this ).data( 'uploader_button_text' ),
|
||
|
},
|
||
|
multiple: false
|
||
|
});
|
||
|
|
||
|
// When an image is selected, run a callback.
|
||
|
file_frame.on( 'select', function() {
|
||
|
attachment = file_frame.state().get('selection').first().toJSON();
|
||
|
jQuery("#"+field_id).val(attachment.id);
|
||
|
if( preview_media ) {
|
||
|
jQuery("#"+preview_id).attr('src',attachment.sizes.thumbnail.url);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Finally, open the modal
|
||
|
file_frame.open();
|
||
|
}
|
||
|
|
||
|
jQuery('.image_upload_button').click(function() {
|
||
|
jQuery.fn.uploadMediaFile( jQuery(this), true );
|
||
|
});
|
||
|
|
||
|
jQuery('.image_delete_button').click(function() {
|
||
|
jQuery(this).closest('td').find( '.image_data_field' ).val( '' );
|
||
|
jQuery( '.image_preview' ).remove();
|
||
|
return false;
|
||
|
});
|
||
|
|
||
|
|
||
|
/***** Navigation for settings page *****/
|
||
|
|
||
|
// Make sure each heading has a unique ID.
|
||
|
jQuery( 'ul#settings-sections.subsubsub' ).find( 'a' ).each( function ( i ) {
|
||
|
var id_value = jQuery( this ).attr( 'href' ).replace( '#', '' );
|
||
|
jQuery( 'h3:contains("' + jQuery( this ).text() + '")' ).attr( 'id', id_value ).addClass( 'section-heading' );
|
||
|
});
|
||
|
|
||
|
// Create nav links for settings page
|
||
|
jQuery( '#plugin_settings .subsubsub a.tab' ).click( function ( e ) {
|
||
|
// Move the "current" CSS class.
|
||
|
jQuery( this ).parents( '.subsubsub' ).find( '.current' ).removeClass( 'current' );
|
||
|
jQuery( this ).addClass( 'current' );
|
||
|
|
||
|
// If "All" is clicked, show all.
|
||
|
if ( jQuery( this ).hasClass( 'all' ) ) {
|
||
|
jQuery( '#plugin_settings h3, #plugin_settings form p, #plugin_settings table.form-table, p.submit' ).show();
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// If the link is a tab, show only the specified tab.
|
||
|
var toShow = jQuery( this ).attr( 'href' );
|
||
|
|
||
|
// Remove the first occurance of # from the selected string (will be added manually below).
|
||
|
toShow = toShow.replace( '#', '', toShow );
|
||
|
|
||
|
jQuery( '#plugin_settings h3, #plugin_settings form > p:not(".submit"), #plugin_settings table' ).hide();
|
||
|
jQuery( 'h3#' + toShow ).show().nextUntil( 'h3.section-heading', 'p, table, table p' ).show();
|
||
|
|
||
|
return false;
|
||
|
});
|
||
|
});
|