', { 'class' : 'ls-popup' })
.append( jQuery('
', { 'class' : 'inner ls-transition-preview' }))
);
// Get popup
var popup = jQuery('.ls-popup');
// Get viewport dimensions
var v_w = jQuery(window).width();
// Get element dimensions
var e_w = jQuery(el).width();
// Get element position
var e_l = jQuery(el).offset().left;
var e_t = jQuery(el).offset().top;
// Get toolip dimensions
var t_w = popup.outerWidth();
var t_h = popup.outerHeight();
// Position tooltip
popup.css({ top : e_t - t_h - 60, left : e_l - (t_w - e_w) / 2 });
// Fix top
if(popup.offset().top < 20) {
popup.css('top', e_t + 75);
}
// Fix left
if(popup.offset().left < 20) {
popup.css('left', 20);
}
// Get transition class
var trclass = jQuery(el).closest('tbody').attr('class');
// Built-in 3D
if(trclass == '3d_transitions') {
var trtype = '3d';
var trObj = layerSliderTransitions['t'+trtype+''][index];
// Built-in 2D
} else if(trclass == '2d_transitions') {
var trtype = '2d';
var trObj = layerSliderTransitions['t'+trtype+''][index];
// Custom 3D
} else if(trclass == 'custom_3d_transitions') {
var trtype = '3d';
var trObj = layerSliderCustomTransitions['t'+trtype+''][index];
// Custom 3D
} else if(trclass == 'custom_2d_transitions') {
var trtype = '2d';
var trObj = layerSliderCustomTransitions['t'+trtype+''][index];
}
// Init transition
popup.find('.inner').transitionGallery({
type : trtype,
transition : trObj,
delay : 1500,
path : lsTrImgPath
});
},
hideTransition : function(el) {
// Stop transition
jQuery('.ls-popup').find('.inner').transitionGallery('destroy');
// Remove transition
jQuery('.ls-popup').remove();
},
save : function(el) {
// Temporary disable submit button
jQuery('.ls-publish button').text('Saving ...').addClass('saving').attr('disabled', true);
jQuery('.ls-saving-warning').text('Please do not navigate away from this page while LayerSlider WP saving your layers!');
// Iterate over the settings
jQuery('.ls-settings input:not(.nochange), .ls-settings select').each(function() {
// Save original name attr to element's data
jQuery(this).data('name', jQuery(this).attr('name') );
// Rewrite the name attr
jQuery(this).attr('name', 'layerslider-slides[properties]['+jQuery(this).attr('name')+']');
});
// Iterate over the layers
jQuery('#ls-layers .ls-layer-box').each(function(layer) {
// Iterate over layer settings
jQuery(this).find('.ls-slide-options input, .ls-slide-options select').each(function() {
// Save original name attr to element's data
jQuery(this).data('name', jQuery(this).attr('name') );
// Rewrite the name attr
jQuery(this).attr('name', 'layerslider-slides[layers]['+layer+'][properties]['+jQuery(this).attr('name')+']');
});
// Iterate over the sublayers
jQuery(this).find('.ls-sublayers > tr').each(function(sublayer) {
// JSON object for styles
var styles = {};
// Iterate over the sublayer properties
jQuery(this).find('input.auto').each(function() {
if(jQuery(this).val() != '') {
styles[jQuery(this).attr('name')] = jQuery(this).val();
}
// Save original name attr to element's data
jQuery(this).data('name', jQuery(this).attr('name') );
// Remove name
jQuery(this).attr('name', '');
});
// Generate styles object
jQuery(this).find('.ls-sublayer-style input[name="styles"]').val( JSON.stringify(styles) );
// Iterate over the sublayer properties
jQuery(this).find('input:not(.auto), select, textarea').each(function() {
// Save original name attr to element's data
jQuery(this).data('name', jQuery(this).attr('name') );
// Rewrite the name attr
jQuery(this).attr('name', 'layerslider-slides[layers]['+layer+'][sublayers]['+sublayer+']['+jQuery(this).attr('name')+']');
});
});
});
// Iterate over the callback functions
jQuery('.ls-callback-page textarea').each(function() {
// Save original name attr to element's data
jQuery(this).data('name', jQuery(this).attr('name') );
// Rewrite the name attr
jQuery(this).attr('name', 'layerslider-slides[properties]['+jQuery(this).attr('name')+']');
});
// Reset layer counter
LayerSlider.counter = 0;
setTimeout(function() {
// Iterate over the layers
jQuery('#ls-layers .ls-layer-box').each(function(layer) {
// Reindex layerkey
jQuery(this).find('input[name="layerkey"]').val(layer);
// Data to send
$data = jQuery('#ls-layers .ls-layer-box').eq(layer).find('input, textarea, select');
$data = $data.add( jQuery('#ls-slider-form > input') );
$data = $data.add( jQuery('.ls-settings').find('input, textarea, select') );
$data = $data.add( jQuery('.ls-callback-page textarea') );
// Post layer
jQuery.ajax(jQuery(el).attr('action'), {
type : 'POST',
data : $data.serialize(),
async : false,
success : function(id) {
LayerSlider.counter += 1;
if(jQuery('#ls-layers .ls-layer-box').length == LayerSlider.counter) {
// Give feedback
jQuery('.ls-publish button').text('Saved').removeClass('saving').addClass('saved');
jQuery('.ls-saving-warning').text('');
// Re-enable the button
setTimeout(function() {
jQuery('.ls-publish button').text('Save changes').attr('disabled', false).removeClass('saved');
}, 2000);
// Rewrote original name attr
// Global settings
jQuery('.ls-settings input, .ls-settings select').each(function() {
jQuery(this).attr('name', jQuery(this).data('name'));
});
// Layers
jQuery('#ls-layers .ls-layer-box').each(function(layer) {
// Layer settings
jQuery(this).find('.ls-slide-options input, .ls-slide-options select').each(function() {
jQuery(this).attr('name', jQuery(this).data('name'));
});
// Sublayers
jQuery(this).find('.ls-sublayers > tr').each(function(sublayer) {
jQuery(this).find('input, select, textarea').each(function() {
jQuery(this).attr('name', jQuery(this).data('name'));
});
});
});
// Iterate over the callback functions
jQuery('.ls-callback-page textarea').each(function() {
jQuery(this).attr('name', jQuery(this).data('name'));
});
// Redirect the edit page when adding new slider
if(document.location.href.indexOf('layerslider_add_new') != -1) {
// Redirect
document.location.href = 'admin.php?page=layerslider&action=edit&id='+id+'';
}
}
}
});
});
}, 500);
},
cloneFix : function() {
jQuery('textarea').each(function() {
jQuery(this).text( jQuery(this).val() );
});
// Select clone fix
jQuery('select').each(function() {
// Get selected index
var index = jQuery(this).find('option:selected').index();
// Deselect old options
jQuery(this).find('option').attr('selected', false);
// Select the new one
jQuery(this).find('option').eq( index ).attr('selected', true);
});
}
};
jQuery(document).ready(function() {
// List view
if(
document.location.href.indexOf('page=layerslider') != -1 &&
document.location.href.indexOf('layerslider_add_new') == -1 &&
document.location.href.indexOf('action=edit') == -1 &&
document.location.href.indexOf('layerslider_skin_editor') == -1 &&
document.location.href.indexOf('layerslider_style_editor') == -1 &&
document.location.href.indexOf('layerslider_transition_builder') == -1
) {
// Slider remove
jQuery('.ls-slider-list a.remove').click(function(e) {
e.preventDefault();
if(confirm('Are you sure you want to remove this slider?')){
document.location.href = jQuery(this).attr('href');
}
});
// Auto-update
jQuery('.ls-auto-update').submit(function(e) {
// Prevent browser default submission
e.preventDefault();
// Set progress text
jQuery('.ls-auto-update tfoot span').text('Validating ...').css('color', '#333');
// Post it
jQuery.post( ajaxurl, jQuery(this).serialize(), function(data) {
// Parse data
data = jQuery.parseJSON(data);
// Check success
jQuery('.ls-auto-update tfoot span').text(data['message']);
// Check success
if(data['success'] == true) {
jQuery('.ls-auto-update tfoot span').css('color', '#4b982f');
} else {
jQuery('.ls-auto-update tfoot span').css('color', '#c33219');
}
});
});
// Permission form
jQuery('#ls-permission-form').submit(function(e) {
e.preventDefault();
if(confirm('WARNING: This option controls who can access to this plugin, you can easily lock out yourself by accident. Please, make sure that you have entered a valid capability without whitespaces or other invalid characters. Do you want to proceed?')) {
this.submit();
}
});
// Skin editor
} else if(
document.location.href.indexOf('layerslider_skin_editor') != -1 ||
document.location.href.indexOf('layerslider_style_editor') != -1
) {
// Select
jQuery('select[name="skin"]').change(function() {
document.location.href = 'admin.php?page=layerslider_skin_editor&skin=' + jQuery(this).children(':selected').val();
});
// Editor tab
jQuery('#editor').keydown(function(e) {
// Get button keycode
var keyCode = e.keyCode || e.which;
// Tab only
if (keyCode == 9) {
e.preventDefault();
var start = jQuery(this).get(0).selectionStart;
var end = jQuery(this).get(0).selectionEnd;
// set textarea value to: text before caret + tab + text after caret
jQuery(this).val(jQuery(this).val().substring(0, start)
+ "\t"
+ jQuery(this).val().substring(end));
// put caret at right position again
jQuery(this).get(0).selectionStart =
jQuery(this).get(0).selectionEnd = start + 1;
}
});
// Skin editor
} else if(document.location.href.indexOf('layerslider_transition_builder') != -1) {
// Tooltips
if(lsScreenOptions['showTooltips'] == 'true') {
lsTooltip.init();
}
// Screen options
jQuery('#ls-screen-options').children().first().appendTo('#screen-meta');
jQuery('#ls-screen-options').children().last().appendTo('#screen-meta-links');
// Screen option actions
lsScreenOptionsActions.init();
// Editor view
} else {
// Screen options
jQuery('#ls-screen-options').children().first().appendTo('#screen-meta');
jQuery('#ls-screen-options').children().last().appendTo('#screen-meta-links');
// Screen option actions
lsScreenOptionsActions.init();
// Main tab bar page select
jQuery('#ls-main-nav-bar a:not(.unselectable)').click(function(e) {
e.preventDefault();
LayerSlider.selectMainTab( this );
});
// Generate preview if user resizes the browser
jQuery(window).resize(function(){
LayerSlider.willGeneratePreview( jQuery('.ls-box.active').index() );
});
// Support menu
jQuery('#ls-main-nav-bar a.support').click(function(e) {
e.preventDefault();
jQuery('#contextual-help-link').click();
});
// Settings: checkboxes
jQuery('.ls-settings :checkbox, .ls-layer-box :checkbox:not(.noreplace)').customCheckbox();
// Checkbox event
jQuery(document).on('click', '.ls-checkbox', function(e){
// Prevent browers default submission
e.preventDefault();
// Get checkbox
var el = jQuery(this).prev()[0];
if( jQuery(el).is(':checked') ) {
jQuery(el).prop('checked', false);
jQuery(this).removeClass('on').addClass('off');
} else {
jQuery(el).prop('checked', true);
jQuery(this).removeClass('off').addClass('on');
}
// Trigger events
jQuery('#ls-layers').trigger( jQuery.Event('click', { target : el } ) );
jQuery(document).trigger( jQuery.Event('click', { target : el } ) );
});
if(lsScreenOptions['showTooltips'] == 'true') {
lsTooltip.init();
}
// Generate preview
jQuery(window).load(function() {
LayerSlider.generatePreview( jQuery('.ls-box.active').index() );
});
// Uploads
LayerSlider.openMediaLibrary();
LayerSlider.massUpload();
LayerSlider.insertUpload();
// Settings: width, height
jQuery('.ls-settings').find('input[name="width"], input[name="height"], input[name="sublayercontainer"]').keyup(function() {
LayerSlider.willGeneratePreview( jQuery('.ls-box.active').index() );
});
// Settings: backgroundColor
jQuery('.ls-settings input[name="backgroundcolor"]').keyup(function() {
LayerSlider.willGeneratePreview( jQuery('.ls-box.active').index() );
});
// Settings: reset button
jQuery(document).on('click', '.ls-reset', function() {
// Empty field
jQuery(this).prev().val('');
// Generate preview
LayerSlider.generatePreview( jQuery('.ls-box.active').index() );
});
// Settings: yourLogoStyle
jQuery('.ls-settings input[name="yourlogostyle"]').keyup(function() {
LayerSlider.willGeneratePreview( jQuery('.ls-box.active').index() );
});
// Add layer
jQuery('#ls-add-layer').click(function(e) {
e.preventDefault();
LayerSlider.addLayer();
});
// Select layer
jQuery('#ls-layer-tabs').on('click', 'a:not(.unsortable)', function(e) {
e.preventDefault();
LayerSlider.selectLayer(this);
});
// Duplicate layer
jQuery('#ls-layers').on('click', '.ls-layer-options-thead a.duplicate', function(e){
e.preventDefault();
LayerSlider.duplicateLayer(this);
});
// Toggle transitions
jQuery('#ls-layers').on('click', 'input[name="new_transitions"]', function() {
LayerSlider.toggleTransitions(this);
});
// Open Transition gallery
jQuery('#ls-layers').on('click', '.ls-select-transitions', function(e) {
e.preventDefault();
LayerSlider.openTransitionGallery();
});
// Close transition gallery
jQuery(document).on('click', '#ls-transition-overlay, #ls-transition-window h1 a', function(e) {
e.preventDefault();
LayerSlider.closeTransitionGallery();
});
// Add/Remove layer transitions
jQuery(document).on('click', '#ls-transition-window tbody a:not(.ls-checkbox)', function(e) {
e.preventDefault();
LayerSlider.toggleTransition(this);
});
// Add/Remove layer transitions
jQuery(document).on('click', '#ls-transition-window .ls-checkbox', function(e) {
e.preventDefault();
LayerSlider.selectAllTransition( jQuery(this).closest('tbody').index() );
});
// Show transition
jQuery(document).on('mouseenter', '#ls-transition-window table a:not(.ls-checkbox)', function() {
LayerSlider.showTransition(this);
});
// Hide transition
jQuery(document).on('mouseleave', '#ls-transition-window table a:not(.ls-checkbox)', function() {
LayerSlider.hideTransition(this);
});
// Add sublayer
jQuery('#ls-layers').on('click', '.ls-add-sublayer', function(e) {
e.preventDefault();
LayerSlider.addSublayer(this);
});
// Remove layer
jQuery('#ls-layer-tabs').on('click', 'a span', function(e) {
e.preventDefault();
e.stopPropagation();
LayerSlider.removeLayer(this);
});
// Select sublayer
jQuery('#ls-layers').on('click', '.ls-sublayers tr', function() {
LayerSlider.selectSubLayer(this);
});
// Sublayer pages
jQuery('#ls-layers').on('click', '.ls-sublayer-nav a:not(:last-child)', function(e) {
e.preventDefault();
LayerSlider.selectSublayerPage(this);
});
// Remove sublayer
jQuery('#ls-layers').on('click', '.ls-sublayer-nav a:last-child', function(e) {
e.preventDefault();
LayerSlider.removeSublayer(this);
});
// Duplicate sublayer
jQuery('#ls-layers').on('click', '.ls-sublayer-options button.duplicate', function(e) {
e.preventDefault();
LayerSlider.duplicateSublayer(this);
});
// Highlight sublayer
jQuery('#ls-layers').on('click', '.ls-highlight input', function(e) {
e.stopPropagation();
LayerSlider.highlightSublayer(this);
});
// Sublayer media type
jQuery('#ls-layers').on('click', '.ls-sublayer-types > span', function(e) {
e.preventDefault();
LayerSlider.didSelectMediaType(this);
});
// Restore sublayer media type
jQuery('.ls-sublayer-basic select').each(function() {
// Get selected element
var index = jQuery(this).find('option:selected').index();
// Restore
LayerSlider.selectMediaType(jQuery(this).parent().find('.ls-sublayer-types > span').eq(index));
});
// Sublayer: Style
jQuery('#ls-layers').on('keyup', '.ls-sublayer-style input, .ls-sublayer-style select, .ls-sublayer-style textarea', function() {
LayerSlider.willGeneratePreview( jQuery(this).closest('.ls-layer-box').index() );
});
// Sublayer: WordWrap
jQuery('#ls-layers').on('click', '.ls-sublayers input[name="wordwrap"]', function() {
LayerSlider.generatePreview( jQuery(this).closest('.ls-layer-box').index() );
});
// Sublayer: HTML
jQuery('#ls-layers').on('keyup', '.ls-sublayers textarea[name="html"]', function() {
LayerSlider.willGeneratePreview( jQuery(this).closest('.ls-layer-box').index() );
});
// Sublayer: sortables, draggable, etc
LayerSlider.addSortables();
LayerSlider.addDraggable();
LayerSlider.addLayerSortables();
// Sublayer: skip
jQuery('#ls-layers').on('click', '.ls-sublayer-options input[name="skip"]', function() {
LayerSlider.skipSublayer(this);
});
// Preview
jQuery('#ls-layers').on('click', '.ls-preview-button', function(e) {
e.preventDefault();
LayerSlider.play( jQuery(this).closest('.ls-layer-box').index() );
});
// Preview drag element select
jQuery('#ls-layers').on('click', '.draggable > *', function() {
LayerSlider.selectDragElement(this);
});
// Save changes
jQuery('#ls-slider-form').submit(function(e) {
e.preventDefault();
LayerSlider.save(this);
});
// Callback boxes
LayerSlider.setCallbackBoxesWidth();
jQuery(window).resize(function() {
LayerSlider.setCallbackBoxesWidth();
});
// Color picker
if(typeof jQuery.fn.wpColorPicker != "undefined") {
jQuery('#ls-slider-form .ls-colorpicker').wpColorPicker({
width : 150,
change : function() {
LayerSlider.willGeneratePreview( jQuery('.ls-box.active').index() );
},
clear : function() {
LayerSlider.willGeneratePreview( jQuery('.ls-box.active').index() );
}
});
}
// Show color picker on focus
jQuery('.color').focus(function() {
jQuery(this).next().slideDown();
});
// Show color picker on blur
jQuery('.color').blur(function() {
jQuery(this).next().slideUp();
});
// Eye icon for layers
jQuery('#ls-layers').on('click', '.ls-icon-eye', function(e) {
e.stopPropagation();
LayerSlider.eyeSublayer(this);
});
// Lock icon for layers
jQuery('#ls-layers').on('click', '.ls-icon-lock', function(e) {
e.stopPropagation();
LayerSlider.lockSublayer(this);
});
}
});