oont-contents/plugins/astra-addon/addons/advanced-headers/assets/js/unminified/astra-advanced-headers-admin.js
2025-02-08 15:10:23 +01:00

493 lines
14 KiB
JavaScript

( function( $ ) {
/**
* Handles logic for the theme layout admin edit interface.
*
* @class AstraPageTitleBarAdminEdit
* @since 1.0
*/
AstraPageTitleBarAdmin = {
/**
* Initializes the theme layout admin edit interface.
*
* @since 1.0
* @access private
* @method _init
*/
_init: function()
{
this._bind();
this._initLayoutSettings();
this._inputFileInit();
},
/**
* Binds events for the theme layout admin edit interface.
*
* @since 1.0
* @access private
* @method _bind
*/
_bind: function()
{
// Instead of updating PHP globals $parent_file, $submenu_file, used following JS for making Custom Layout menu active while editing any post.
$( 'li#menu-appearance.wp-has-current-submenu, li#menu-appearance.wp-has-current-submenu > a' ).removeClass('wp-has-current-submenu');
$( 'li#toplevel_page_' + astraPageHeaderVars.home_slug + ', li#toplevel_page_' + astraPageHeaderVars.home_slug + ' > a' ).removeClass('wp-not-current-submenu').addClass('wp-has-current-submenu');
$( 'li#toplevel_page_' + astraPageHeaderVars.home_slug + ' a[href="edit.php?post_type=astra_adv_header"]' ).parent().addClass('current');
// Call Tooltip
$('.ast-advanced-headers-heading-help').tooltip({
content: function() {
return $(this).prop('title');
},
tooltipClass: 'ast-advanced-headers-ui-tooltip',
position: {
my: 'center top',
at: 'center bottom+10',
},
hide: {
duration: 200,
},
show: {
duration: 200,
},
});
$('.ast-advanced-headers-heading-img-help').tooltip({
content: function() {
return $(this).prop('title');
},
tooltipClass: 'ast-advanced-headers-ui-img-tooltip',
position: {
my: 'center top',
at: 'center bottom+10',
},
hide: {
duration: 0,
},
show: {
duration: 0,
},
});
// Call color picker
$('.ast-advanced-headers-color-picker').wpColorPicker();
// General events
$( '.ast-advanced-header-layout-radio-button-wrap label' ).on( 'click', this._astraPageTitleRadioImagesClicked );
$( '#ast-advanced-headers-tabs ul li a' ).on( 'click', this._astraPageTitleTabsClicked );
$( '#ast-advanced-header-layout-breadcrumb' ).on( 'change', this._astraBreadcrumbChecked );
$( '#ast-advanced-header-layout-merged' ).on( 'change', this._astrPageTitleMergeChecked );
$( '#ast-advanced-header-design-bg-size' ).on( 'change', this._astrPageTitleBgSizeChecked );
$( '#ast-advanced-header-layout-above-header' ).on( 'change', this._astrAboveHeaderChecked );
$( '#ast-advanced-header-layout-below-header' ).on( 'change', this._astrBelowHeaderChecked );
$( '#ast-advanced-headers-design-custom-menu-item' ).on( 'change', this._astrCustomMenuChanged );
$( '#ast-advanced-headers-design-custom-menu-item' ).trigger('change');
// Force disable transparent header on archive pages.
$('input[name="ast-advanced-headers-layout[force-transparent-disabled]"]').on('change', function() {
$('input[name="ast-advanced-headers-layout[force-transparent-disabled]"]').not(this).prop('checked', false);
});
$( '#ast-advanced-header-diff-header-logo' ).on( 'change', this._astrToggleLogo );
$( '#ast-advanced-header-diff-header-retina-logo' ).on( 'change', this._astrToggleRetinaLogo );
},
/**
* Callback for when click button on image upload
* builder is clicked.
*
* @since 1.0
* @access private
* @method _inputFileInit
*/
_inputFileInit: function() {
var file_frame;
window.inputWrapper = '';
$( document.body ).on('click', '.ast-advanced-headers-bg-image-select', function(e) {
e.preventDefault();
var button = $(this);
window.inputWrapper = $(this).closest('.ast-advanced-headers-row-content');
if ( file_frame ) {
file_frame.open();
return;
}
// Create the media frame.
file_frame = wp.media( {
multiple: false
} );
// When an image is selected, run a callback.
file_frame.on( 'select', function() {
var attachment = file_frame.state().get( 'selection' ).first().toJSON();
// place first attachment in field
window.inputWrapper.find( '#ast-advanced-headers-preview-img' ).children('.saved-image').remove();
window.inputWrapper.find( '#ast-advanced-headers-preview-img' ).append('<img src="' + attachment.url + '" width="150" class="saved-image" style="margin-bottom:12px;" />');
window.inputWrapper.find( '.ast-advanced-headers-bg-image-id' ).val( attachment.id );
window.inputWrapper.find( '.ast-advanced-headers-bg-image' ).val( attachment.url );
$('.ast-advanced-headers-bg-image-remove').show();
});
// Finally, open the modal
file_frame.open();
});
$( '.ast-advanced-headers-bg-image-remove' ).on( 'click', function( e ) {
e.preventDefault();
var button = $(this),
closeRow = $(this).closest('.ast-advanced-headers-row-content');
closeRow.find( '#ast-advanced-headers-preview-img img' ).hide();
closeRow.find( '.ast-advanced-headers-bg-image-id' ).val('');
closeRow.find( '.ast-advanced-headers-bg-image' ).val('');
button.hide();
});
// Logo Upload.
$( document.body ).on('click', '.ast-advanced-header-logo-select', function(e) {
e.preventDefault();
var button = $(this);
window.inputWrapper = $(this).closest('.ast-advanced-headers-row-content');
if ( file_frame ) {
file_frame.open();
return;
}
// Create the media frame.
file_frame = wp.media( {
multiple: false
} );
// When an image is selected, run a callback.
file_frame.on( 'select', function() {
var attachment = file_frame.state().get( 'selection' ).first().toJSON();
// place first attachment in field
window.inputWrapper.find( '#ast-advanced-headers-preview-logo' ).children('.saved-image').remove();
window.inputWrapper.find( '#ast-advanced-headers-preview-logo' ).append('<img src="' + attachment.url + '" class="saved-image" style="margin-bottom:12px;max-width:150px;" />');
window.inputWrapper.find( '.ast-advanced-headers-logo-id' ).val( attachment.id );
window.inputWrapper.find( '.ast-advanced-headers-logo' ).val( attachment.url );
window.inputWrapper.find('.ast-advanced-headers-logo-remove').show();
});
// Finally, open the modal
file_frame.open();
});
$( '.ast-advanced-headers-logo-remove' ).on( 'click', function( e ) {
e.preventDefault();
var button = $(this),
closeRow = $(this).closest('.ast-advanced-headers-row-content');
closeRow.find( '#ast-advanced-headers-preview-logo img' ).hide();
closeRow.find( '.ast-advanced-headers-logo-id' ).val('');
closeRow.find( '.ast-advanced-headers-logo' ).val('');
button.hide();
});
},
/**
* Callback for when the button to launch the
* builder is clicked.
*
* @since 1.0
* @access private
* @method _astraBreadcrumbChecked
*/
_astraBreadcrumbChecked: function( e )
{
if( $(this).is(':checked') ){
$('.ast-advanced-headers-row.breadcrumb-row').show();
}
else{
$('.ast-advanced-headers-row.breadcrumb-row').hide();
}
},
/**
* Callback for when the button to launch the
* builder is clicked.
*
* @since 1.0
* @access private
* @method _astrPageTitleBgSizeChecked
*/
_astrPageTitleBgSizeChecked: function( e )
{
if( 'custom-bg-size' == $(this).val() ){
$('.ast-advanced-haeders-design-bg-custom-size-wrap').show();
}
else{
$('.ast-advanced-haeders-design-bg-custom-size-wrap').hide();
}
},
/**
* Callback for when the above header is checked
*
* @since 1.0
* @access private
* @method _astrAboveHeaderChecked
*/
_astrAboveHeaderChecked: function( e )
{
if( $(this).is(':checked') ) {
$('.ast-advanced-headers-row.ast-above-header-required').show();
}
else{
$('.ast-advanced-headers-row.ast-above-header-required').hide();
}
},
/**
* Callback for when the Below header is checked
*
* @since 1.0
* @access private
* @method _astrBelowHeaderChecked
*/
_astrBelowHeaderChecked: function( e )
{
if( $(this).is(':checked') ) {
$('.ast-advanced-headers-row.ast-below-header-required').show();
}
else{
$('.ast-advanced-headers-row.ast-below-header-required').hide();
}
},
/**
* Callback for when the Below header is checked
*
* @since 1.0
* @access private
* @method _astrCustomMenuChanged
*/
_astrCustomMenuChanged: function( e )
{
var custom_menu = $(this).val();
if( 'default' != custom_menu && 'none' != custom_menu ) {
$('.ast-advanced-headers-row.ast-custom-menu-item-enabled').show();
}
else{
$('.ast-advanced-headers-row.ast-custom-menu-item-enabled').hide();
}
if( 'text-html' == custom_menu ) {
$('.ast-advanced-headers-row.ast-custom-menu-item-text-enabled').show();
}
else{
$('.ast-advanced-headers-row.ast-custom-menu-item-text-enabled').hide();
}
if( 'search' == custom_menu ) {
$('#ast-advanced-headers-design-search-style').parents('.ast-advanced-headers-row').show();
}
else{
$('#ast-advanced-headers-design-search-style').parents('.ast-advanced-headers-row').hide();
}
},
/**
* Callback for when the button to launch the
* builder is clicked.
*
* @since 1.0
* @access private
* @method _astrPageTitleMergeChecked
*/
_astrPageTitleMergeChecked: function( e )
{
if( $(this).is(':checked') ){
$('.require-merge-ast-advanced-header').show();
}
else{
$('.require-merge-ast-advanced-header').hide();
}
},
/**
* Callback for when the button to launch the
* builder is clicked.
*
* @since 1.0
* @access private
* @method _astraPageTitleTabsClicked
*/
_astraPageTitleTabsClicked: function( e )
{
e.preventDefault();
var current = $(this),
href = current.attr('href');
//custom ui tabs select
$('#ast-advanced-headers-tabs ul li a').removeClass('nav-tab-active');
$(current).addClass('nav-tab-active');
$('.ast-adv-headers-tabs-section').removeClass('tab-active');
$(href).addClass('tab-active');
tabId = current.attr( 'id' );
$('#advanced-headers-current-tab').val( tabId );
},
/**
* Init the layout settings based on type.
*
* @since 1.0
* @access private
* @method _initLayoutSettings
*/
_initLayoutSettings: function()
{
var type = $( 'input[name="ast-advanced-headers-layout[layout]"]:checked' ).val(),
// all element dependent ti title bar layout.
allStylingWrap = $( '.ast-advanced-header-layout-breadcrumb-wrap, .ast-advanced-headers-table.design-wrap' ),
allNotRequired = $('.ast-required-no-headers'),
breadcrumbCheck = $( '#ast-advanced-header-layout-breadcrumb' ),
mergeHeaderCheck = $ ( '#ast-advanced-header-layout-merged'),
backgroundSizeCheck = $( '#ast-advanced-header-design-bg-size' ).val(),
differentLogoCheck = $( '#ast-advanced-header-diff-header-logo' ),
differentRetinaLogoCheck = $( '#ast-advanced-header-diff-header-retina-logo' );
// If Advanced Headers is desabled.
if ( 'disable' == type ) {
// Hide all dependent element for advanced header layout.
allStylingWrap.hide();
allNotRequired.show();
$('.ast-transparent-notice-wrap').show();
}
else{
allNotRequired.hide();
$('.ast-transparent-notice-wrap').hide();
}
if( ! breadcrumbCheck.is(':checked') ) {
$('.ast-advanced-headers-row.breadcrumb-row').hide();
}
if( ! mergeHeaderCheck.is(':checked') ) {
$('.require-merge-ast-advanced-header').hide();
}
if ( 'custom-bg-size' != backgroundSizeCheck ) {
$('.ast-advanced-haeders-design-bg-custom-size-wrap').hide();
}
if ( ! $( '#ast-advanced-header-layout-above-header' ).is(':checked') ) {
$('.ast-advanced-headers-row.ast-above-header-required').hide();
}
if ( ! $( '#ast-advanced-header-layout-below-header' ).is(':checked') ) {
$('.ast-advanced-headers-row.ast-below-header-required').hide();
}
if( differentLogoCheck.is(':checked') ) {
$('.ast-logo-settings-wrap').show();
$('.ast-diff-header-retina-logo').show();
} else {
$('.ast-logo-settings-wrap').hide();
$('.ast-diff-header-retina-logo').hide();
}
if( differentRetinaLogoCheck.is(':checked') && differentLogoCheck.is(':checked') ) {
$('.ast-retina-logo-settings-wrap').show();
} else {
$('.ast-retina-logo-settings-wrap').hide();
}
},
/**
* Radio button Images clicked.
*
* @since 1.0
* @access private
* @method _astraPageTitleRadioImagesClicked
*/
_astraPageTitleRadioImagesClicked: function()
{
var allRadioLabels = $('.ast-advanced-header-layout-radio-button-wrap label'),
radioButtonWrap = $('.ast-advanced-header-layout-radio-button-wrap'),
allStylingWrap = $('.ast-advanced-header-layout-breadcrumb-wrap, .ast-advanced-headers-table.design-wrap'),
allNotRequired = $('.ast-required-no-headers');
allRadioLabels.attr("checked",false);
$(this).attr("checked", true);
radioButtonWrap.children( "input[type='radio']" ).attr("checked",false);
$(this).children( "input[type='radio']" ).attr("checked",true);
// Disable Breadcrumb for no advanced header layout.
if ( 'disable' == $(this).children( "input[type='radio']" ).val()) {
allStylingWrap.hide();
allNotRequired.show();
$('.ast-transparent-notice-wrap').show();
}
else{
allStylingWrap.show();
allNotRequired.hide();
$('.ast-transparent-notice-wrap').hide();
}
},
_astrToggleLogo: function()
{
if( $(this).is(':checked') ){
$( ".ast-logo-settings-wrap" ).show();
$( ".ast-diff-header-retina-logo" ).show();
if( $(this).is(':checked') && $( '#ast-advanced-header-diff-header-retina-logo' ).is(':checked') ){
$( ".ast-retina-logo-settings-wrap" ).show();
} else {
$( ".ast-retina-logo-settings-wrap" ).hide();
}
} else {
$( ".ast-logo-settings-wrap" ).hide();
$( ".ast-diff-header-retina-logo" ).hide();
if( $(this).is(':checked') && $( '#ast-advanced-header-diff-header-retina-logo' ).is(':checked') ){
$( ".ast-retina-logo-settings-wrap" ).show();
} else {
$( ".ast-retina-logo-settings-wrap" ).hide();
}
}
},
_astrToggleRetinaLogo: function()
{
if( $(this).is(':checked') && $( '#ast-advanced-header-diff-header-logo' ).is(':checked') ){
$( ".ast-retina-logo-settings-wrap" ).show();
} else {
$( ".ast-retina-logo-settings-wrap" ).hide();
}
}
};
$( function() { AstraPageTitleBarAdmin._init(); } );
} )( jQuery );