405 lines
14 KiB
JavaScript
405 lines
14 KiB
JavaScript
(function($){
|
|
|
|
/**
|
|
* Advanced Hooks
|
|
*
|
|
* @class AstraAdvancedHooks
|
|
* @since 1.0
|
|
*/
|
|
AstraAdvancedHooks = {
|
|
|
|
/**
|
|
* Initializes a Advanced Hooks.
|
|
*
|
|
* @since 1.0
|
|
* @method init
|
|
*/
|
|
init: function()
|
|
{
|
|
// Init backgrounds.
|
|
AstraAdvancedHooks.bind();
|
|
AstraAdvancedHooks.php_snippet_area();
|
|
AstraAdvancedHooks.action_description();
|
|
AstraAdvancedHooks.bind_tooltip();
|
|
AstraAdvancedHooks.initLayoutSettings();
|
|
AstraAdvancedHooks.timeDurationEnabled();
|
|
|
|
if( astraCustomHookVars.is_complete_package && document.body.classList.contains('block-editor-page') ) {
|
|
wp.data.subscribe(function () {
|
|
setTimeout( function () {
|
|
AstraAdvancedHooks.code_editor_switcher();
|
|
}, 1 );
|
|
});
|
|
}
|
|
},
|
|
|
|
timeDurationEnabled: function () {
|
|
|
|
var startDateTime = $('#ast-advanced-time-duration-start-dt');
|
|
var endDateTime = $('#ast-advanced-time-duration-end-dt');
|
|
|
|
var timeDurationEnabledElement = $('#ast-advanced-time-duration-enabled');
|
|
$('.ast-advanced-time-duration-enabled').toggle(timeDurationEnabledElement.is(':checked'));
|
|
timeDurationEnabledElement.change(function () {
|
|
$('.ast-advanced-time-duration-enabled').toggle(this.checked);
|
|
if( ! this.checked ) {
|
|
startDateTime.val('');
|
|
endDateTime.val('');
|
|
}
|
|
});
|
|
|
|
startDateTime.datetimepicker({
|
|
timeFormat: 'HH:mm:ss',
|
|
onClose: function(dateText, inst) {
|
|
if (endDateTime.val() !== '') {
|
|
var testStartDate = startDateTime.datetimepicker('getDate');
|
|
var testEndDate = endDateTime.datetimepicker('getDate');
|
|
if (testStartDate > testEndDate)
|
|
endDateTime.datetimepicker('setDate', testStartDate);
|
|
}
|
|
else {
|
|
endDateTime.val(dateText);
|
|
}
|
|
},
|
|
onSelect: function (selectedDateTime){
|
|
endDateTime.datetimepicker('option', 'minDate', startDateTime.datetimepicker('getDate') );
|
|
}
|
|
});
|
|
endDateTime.datetimepicker({
|
|
timeFormat: 'HH:mm:ss',
|
|
onClose: function(dateText, inst) {
|
|
if (startDateTime.val() !== '') {
|
|
var testStartDate = startDateTime.datetimepicker('getDate');
|
|
var testEndDate = endDateTime.datetimepicker('getDate');
|
|
if (testStartDate > testEndDate)
|
|
startDateTime.datetimepicker('setDate', testEndDate);
|
|
}
|
|
else {
|
|
startDateTime.val(dateText);
|
|
}
|
|
},
|
|
onSelect: function (selectedDateTime){
|
|
startDateTime.datetimepicker('option', 'maxDate', endDateTime.datetimepicker('getDate') );
|
|
}
|
|
});
|
|
|
|
},
|
|
|
|
code_editor_switcher: function()
|
|
{
|
|
if( $('.edit-post-header-toolbar .ast-advanced-hook-enable-php-wrapper').length ) {
|
|
return;
|
|
}
|
|
|
|
var editor = $('#editor'),
|
|
switchMode = $($('#astra-editor-button-switch-mode').html());
|
|
editor.find('.edit-post-header-toolbar').append( switchMode );
|
|
},
|
|
|
|
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#toplevel_page_' + astraCustomHookVars.home_slug + ', li#toplevel_page_' + astraCustomHookVars.home_slug + ' > a' ).removeClass('wp-not-current-submenu').addClass('wp-has-current-submenu');
|
|
$( 'li#toplevel_page_' + astraCustomHookVars.home_slug + ' a[href="edit.php?post_type=astra-advanced-hook"]' ).parent().addClass('current');
|
|
$( 'li#menu-appearance.wp-has-current-submenu, li#menu-appearance.wp-has-current-submenu > a' ).removeClass('wp-has-current-submenu');
|
|
|
|
$( 'input[name="ast-advanced-hook-header[sticky]"]' ).on( 'change', AstraAdvancedHooks.stickyHeaderChanged );
|
|
$( 'input[name="ast-advanced-hook-footer[sticky]"]' ).on( 'change', AstraAdvancedHooks.stickyFooterChanged );
|
|
$( 'select[name="ast-advanced-hook-layout"]' ).on( 'change', AstraAdvancedHooks.layoutChanged );
|
|
$( 'select[name="ast-advanced-hook-content[location]"]' ).on( 'change', AstraAdvancedHooks.contentLocationChanged );
|
|
},
|
|
|
|
bind_tooltip: function() {
|
|
|
|
// Call Tooltip
|
|
$('.ast-advanced-hook-heading-help').tooltip({
|
|
content: function() {
|
|
return $(this).prop('title');
|
|
},
|
|
tooltipClass: 'ast-advanced-hook-ui-tooltip',
|
|
position: {
|
|
my: 'center top',
|
|
at: 'center bottom+10',
|
|
},
|
|
hide: {
|
|
duration: 200,
|
|
},
|
|
show: {
|
|
duration: 200,
|
|
},
|
|
});
|
|
},
|
|
|
|
php_snippet_area: function() {
|
|
var url = window.location.href,
|
|
button = $( '.ast-advanced-hook-enable-php-btn' ),
|
|
button_input = button.children( '.ast-advanced-hook-with-php' );
|
|
|
|
if( url.indexOf( '&code_editor' ) > -1 ) {
|
|
button_input.val('enabled');
|
|
$('body').addClass( 'astra-php-snippt-enabled' );
|
|
} else if( url.indexOf( '&wordpress_editor' ) > -1 ) {
|
|
button_input.val('');
|
|
$('body').removeClass( 'astra-php-snippt-enabled' );
|
|
}
|
|
|
|
$(document).on( 'click', '.ast-advanced-hook-enable-php-btn', function(e) {
|
|
e.preventDefault();
|
|
var editor_type = $( this ).data( 'editor-type' ),
|
|
url = encodeURI( window.location.href );
|
|
|
|
if( url.indexOf( '&code_editor' ) > -1 || 'code_editor' == editor_type ) {
|
|
button_input.val('enabled');
|
|
$('body').addClass( 'astra-php-snippt-enabled' );
|
|
url = url.replace( '&code_editor', '' );
|
|
window.location.replace( url + '&wordpress_editor' );
|
|
} else if( url.indexOf( '&wordpress_editor' ) > -1 || 'wordpress_editor' == editor_type ) {
|
|
button_input.val('');
|
|
$('body').removeClass( 'astra-php-snippt-enabled' );
|
|
url = url.replace( '&wordpress_editor', '' );
|
|
window.location.replace( url + '&code_editor' );
|
|
} else {
|
|
if ( $('body').hasClass( 'block-editor-page' ) ) {
|
|
window.location = url + '&code_editor';
|
|
} else {
|
|
window.location = url + '&wordpress_editor';
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
action_description: function() {
|
|
$('#ast-advanced-hook-action').on('change', function(e) {
|
|
var desc_wrap = $(this).next('.ast-advanced-hook-action-desc'),
|
|
desc_content = $(this).find('option:selected').attr('data-desc'),
|
|
action = $( '#ast-advanced-hook-action' ).val();
|
|
|
|
if( 'custom_hook' === action ) {
|
|
$( '.ast-custom-action-wrap' ).show();
|
|
} else {
|
|
$( '.ast-custom-action-wrap' ).hide();
|
|
}
|
|
|
|
if ( 'undefined' != typeof desc_content && '' != desc_content ) {
|
|
desc_wrap.removeClass('ast-no-desc');
|
|
desc_wrap.text(desc_content);
|
|
} else {
|
|
desc_wrap.addClass('ast-no-desc');
|
|
desc_wrap.text('');
|
|
}
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Init the layout settings based on layout.
|
|
*
|
|
* @since 1.0
|
|
* @method initLayoutSettings
|
|
*/
|
|
initLayoutSettings: function()
|
|
{
|
|
var layout = $( '#ast-advanced-hook-layout' ).val(),
|
|
action = $( '#ast-advanced-hook-action' ).val(),
|
|
sticky_header = $( 'input[name="ast-advanced-hook-header[sticky]"]' ),
|
|
sticky_footer = $( 'input[name="ast-advanced-hook-footer[sticky]"]' ),
|
|
content_location = $( '#ast-advanced-hook-content-location' ).val();
|
|
|
|
$( '.ast-layout-content-after-blocks, .ast-layout-content-before-heading, .ast-layout-content-location-required, .ast-inside-content-notice' ).hide();
|
|
|
|
if( 'header' == layout ){
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-header-required' ).show();
|
|
$( '.ast-layout-required' ).show();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
} else if( 'hooks' == layout ){
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-hooks-required' ).show();
|
|
$( '.ast-layout-required' ).show();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
if( 'custom_hook' === action ) {
|
|
$( '.ast-custom-action-wrap' ).show();
|
|
} else {
|
|
$( '.ast-custom-action-wrap' ).hide();
|
|
}
|
|
} else if( 'footer' == layout ) {
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).show();
|
|
$( '.ast-layout-required' ).show();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
} else if ( '404-page' == layout ) {
|
|
$( '.ast-404-layout-required' ).show();
|
|
$( '.ast-target-rules-user' ).show();
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-target-rules-display' ).hide();
|
|
$( '.ast-target-rules-exclude' ).hide();
|
|
} else if ( 'content' == layout ) {
|
|
$( '.ast-layout-content-required' ).show();
|
|
$( '.ast-target-rules-user' ).show();
|
|
$( '.ast-target-rules-display' ).show();
|
|
$( '.ast-layout-content-location-required' ).show();
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
$( '.ast-inside-content-notice' ).show();
|
|
|
|
if( 'after_blocks' === content_location ) {
|
|
$( '.ast-layout-content-after-blocks' ).show();
|
|
$( '.ast-inside-content-blocks-notice' ).show();
|
|
} else {
|
|
$( '.ast-layout-content-before-heading' ).show();
|
|
$( '.ast-inside-content-heading-notice' ).show();
|
|
}
|
|
} else {
|
|
$( '.ast-layout-content-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-required' ).hide();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
}
|
|
|
|
if( sticky_header.is(':checked') && 'header' == layout ){
|
|
$( '.ast-layout-header-sticky-required' ).show();
|
|
}
|
|
else{
|
|
$( '.ast-layout-header-sticky-required' ).hide();
|
|
}
|
|
|
|
if( sticky_footer.is(':checked') && 'footer' == layout ){
|
|
$( '.ast-layout-footer-sticky-required' ).show();
|
|
}
|
|
else{
|
|
$( '.ast-layout-footer-sticky-required' ).hide();
|
|
}
|
|
},
|
|
|
|
stickyHeaderChanged: function()
|
|
{
|
|
if( $(this).is(':checked') ){
|
|
$( '.ast-layout-header-sticky-required' ).show();
|
|
}
|
|
else{
|
|
$( '.ast-layout-header-sticky-required' ).hide();
|
|
}
|
|
},
|
|
|
|
stickyFooterChanged: function()
|
|
{
|
|
if( $(this).is(':checked') ){
|
|
$( '.ast-layout-footer-sticky-required' ).show();
|
|
}
|
|
else{
|
|
$( '.ast-layout-footer-sticky-required' ).hide();
|
|
}
|
|
},
|
|
|
|
layoutChanged: function()
|
|
{
|
|
var val = $(this).val(),
|
|
content_location = $( '#ast-advanced-hook-content-location' ).val(),
|
|
sticky_header = $( 'input[name="ast-advanced-hook-header[sticky]"]' ),
|
|
sticky_footer = $( 'input[name="ast-advanced-hook-footer[sticky]"]' );
|
|
|
|
$( '.ast-layout-content-after-blocks' ).hide();
|
|
$( '.ast-layout-content-before-heading' ).hide();
|
|
$( '.ast-layout-content-location-required' ).hide();
|
|
$( '.ast-inside-content-notice' ).hide();
|
|
|
|
if( 'header' == val ){
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-layout-header-required' ).show();
|
|
$( '.ast-layout-required' ).show();
|
|
$( '.ast-layout-content-required' ).hide();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
} else if( 'hooks' == val ){
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-layout-hooks-required' ).show();
|
|
$( '.ast-layout-required' ).show();
|
|
$( '.ast-layout-content-required' ).hide();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
} else if( 'footer' == val ) {
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).show();
|
|
$( '.ast-layout-required' ).show();
|
|
$( '.ast-layout-content-required' ).hide();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
} else if ( '404-page' == val ) {
|
|
$( '.ast-404-layout-required' ).show();
|
|
$( '.ast-target-rules-user' ).show();
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-layout-content-required' ).hide();
|
|
$( '.ast-target-rules-display' ).hide();
|
|
$( '.ast-target-rules-exclude' ).hide();
|
|
} else if( 'content' == val ) {
|
|
$( '.ast-layout-content-required' ).show();
|
|
$( '.ast-target-rules-user' ).show();
|
|
$( '.ast-target-rules-display' ).show();
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
$( '.ast-layout-content-location-required' ).show();
|
|
$( '.ast-inside-content-notice' ).show();
|
|
|
|
if( 'after_blocks' === content_location ) {
|
|
$( '.ast-layout-content-after-blocks' ).show();
|
|
} else {
|
|
$( '.ast-layout-content-before-heading' ).show();
|
|
}
|
|
|
|
} else {
|
|
$( '.ast-layout-content-required' ).hide();
|
|
$( '.ast-layout-header-required' ).hide();
|
|
$( '.ast-layout-footer-required' ).hide();
|
|
$( '.ast-layout-hooks-required' ).hide();
|
|
$( '.ast-layout-required' ).hide();
|
|
$( '.ast-404-layout-required' ).hide();
|
|
$( '.ast-layout-content-required' ).hide();
|
|
}
|
|
|
|
if( sticky_header.is(':checked') && 'header' == val ){
|
|
$( '.ast-layout-header-sticky-required' ).show();
|
|
}
|
|
else{
|
|
$( '.ast-layout-header-sticky-required' ).hide();
|
|
}
|
|
|
|
if( sticky_footer.is(':checked') && 'footer' == val ){
|
|
$( '.ast-layout-footer-sticky-required' ).show();
|
|
}
|
|
else{
|
|
$( '.ast-layout-footer-sticky-required' ).hide();
|
|
}
|
|
},
|
|
|
|
contentLocationChanged: function() {
|
|
var location = $(this).val();
|
|
|
|
if( 'before_headings' == location ) {
|
|
$( '.ast-layout-content-after-blocks' ).hide();
|
|
$( '.ast-layout-content-before-heading' ).show();
|
|
} else {
|
|
$( '.ast-layout-content-after-blocks' ).show();
|
|
$( '.ast-layout-content-before-heading' ).hide();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
/* Initializes the Advanced Hooks. */
|
|
$(function(){
|
|
AstraAdvancedHooks.init();
|
|
});
|
|
|
|
})(jQuery);
|