/**
* Admin UI JavaScript
*
* @summary Admin JavaScript / jQuery for UI design and conditional logic.
*
* @since 0.4.0
* @package APL_Admin
* @requires jQuery
* @requires jQuery UI
* @requires jQuery UI Multiselect
*/
( function($) {
var post_tax = apl_admin_ui_local.post_tax;
var tax_terms = apl_admin_ui_local.tax_terms;
var trans = apl_admin_ui_local.trans;
init_chkbox_post_type_toggle_tabs();
init_tabs_post_type_taxonomies();
init_multiselect_post_type_taxonomies();
init_chkbox_terms();
init_spinner_amount();
init_slider_amount();
init_selectmenu_order_by();
init_selectmenu_order();
init_selectmenu_author_operator();
init_multiselect_author_ids();
init_multiselect_post_status_1();
init_multiselect_post_status_2();
init_selectmenu_perm();
init_spinner_offset();
init_slider_offset();
init_textarea_empty_message();
apl_init_tooltips();
apl_init_dialogs();
/**
* Initialize Toggling Tabs with Checkbox
*
* @since 0.4.0
* @returns {undefined}
*/
function init_chkbox_post_type_toggle_tabs() {
$.each( post_tax, function( k_post_type_slug, v_taxonomy_arr ) {
// On Change/Click Hide or unhide sections
$( '#apl-toggle-' + k_post_type_slug ).change( function() {
if ( $( this ).is( ':checked' ) ) {
if ( 'any' !== k_post_type_slug ) {
$( '#apl-filter-' + k_post_type_slug ).show();
$.each( v_taxonomy_arr.tax_arr, function( k2_tax_index, v2_tax_slug ) {
var target_div = '#apl-t-div-' + k_post_type_slug + '-' + v2_tax_slug;
$( target_div ).show();
return false;
});
if ( $( '#apl-toggle-any' ).is( ':checked' ) ) {
$( '#apl-toggle-any' ).prop( 'checked', false );
$( '#apl-filter-any' ).hide();
}
} else {
$( this ).prop( 'checked', false );
}
} else { // Unchecked
$( '#apl-filter-' + k_post_type_slug ).hide();
$( '#apl-toggle-any' ).prop( 'checked', true );
$( '#apl-filter-any' ).show();
$.each( post_tax, function( k2_post_type_slug, v2_taxonomy_arr ) {
if ( 'any' !== k2_post_type_slug && $( '#apl-toggle-' + k2_post_type_slug ).is( ':checked' ) ) {
$( '#apl-toggle-any' ).prop( 'checked', false );
$( '#apl-filter-any' ).hide();
}
});
}
$( '#apl-tabs-any-type' ).tabs( 'refresh' );
$( '#apl-tabs-any-taxonomies' ).tabs( 'refresh' );
$( '#apl-tabs-' + k_post_type_slug + '-type' ).tabs( 'refresh' );
$( '#apl-tabs-' + k_post_type_slug + '-taxonomies' ).tabs( 'refresh' );
});// End of .change().
});// End of .each().
}
/**
* Initialize Post Type Taxonomy Tabs
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_tabs_post_type_taxonomies () {
$.each( post_tax, function( k_post_type_slug, v_taxonomy_arr ) {
$( '#apl-tabs-' + k_post_type_slug + '-taxonomies' ).tabs({
heightStyle: "fill",
create: function(event, ui) {
// MANUALLY HIDE ALL AND SHOW SELECTED.
var opts = $( '#apl-multiselect-' + k_post_type_slug ).children();
$.each( opts, function( k_tax_index, v_tax_ele ) {
// Hide panel.
var opt_tax = $( v_tax_ele ).val();
if ( 'require' !== opt_tax ) {
$( '#apl-t-div-' + k_post_type_slug + '-' + opt_tax ).hide();
// If selected, unhide.
var selected = $( v_tax_ele ).prop( 'selected' );
if ( selected ) {
$( '#apl-t-div-' + k_post_type_slug + '-' + opt_tax ).show();
}
}
});
var option_index = $( '#apl-multiselect-' + k_post_type_slug + ' option:selected' ).index();
if ( 0 === option_index ) {
option_index = $( '#apl-multiselect-' + k_post_type_slug + ' option' ).next( ':selected' ).index();
}
if ( -1 !== option_index ) {
// -1 since req checkbox isn't a tab.
$( '#apl-tabs-' + k_post_type_slug + '-taxonomies' ).tabs( 'option', 'active', ( option_index - 1 ) );
}
$( '#apl-tabs-' + k_post_type_slug + '-taxonomies' ).tabs( 'refresh' );
}
});
$( '#apl-tabs-' + k_post_type_slug + '-type' ).tabs({
heightStyle: "fill",
create: function(event, ui) {
//console.log('foobar');
}
});
});// End of .each().
}
/**
* Initialize Multiselect with Post Type Taxonomy Selector
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_multiselect_post_type_taxonomies() {
$.each( post_tax, function( k_pt_slug, v_tax_arr ) {
//var elem = '#apl_chk_req_taxonomies-' + k_pt_slug;
//var help_attr_title1 = $( elem ).attr('title');
//elem = 'option.apl-chk-req-taxonomies';
//var help_attr_title2 = $( elem ).attr( 'title' );
$( '#apl-multiselect-' + k_pt_slug ).multiselect({
header: false,
noneSelectedText: trans.tax_noneSelectedText,
selectedText: trans.tax_selectedText,
selectedList: 2,
height: 150,
minWidth:333,
menuWidth:333,
click: function( event, ui ) {
if ( 'require' === ui.value ) {
return;
}
var target_tab = '#apl-t-li-' + k_pt_slug + '-' + ui.value;
var target_div = '#apl-t-div-' + k_pt_slug + '-' + ui.value;
var option_index = $( '#apl-multiselect-' + k_pt_slug + ' > option[value="' + ui.value + '"]' ).index();
if ( true == ui.checked ) {
$( '#apl-multiselect-' + k_pt_slug + ' option[value="' + ui.value + '"]' ).prop( 'selected', true );
$( target_tab ).show();
$( target_div ).show();
// TODO - ADD FOCUS / ACTIVE.
// -1 since req checkbox isn't a tab.
$( '#apl-tabs-' + k_pt_slug + '-taxonomies' ).tabs( 'option', 'active', ( option_index - 1 ) );
$( '#apl-tabs-' + k_pt_slug + '-taxonomies' ).tabs( 'refresh' );
} else {
$( '#apl-multiselect-' + k_pt_slug + ' option[value="' + ui.value + '"]' ).prop( 'selected', false );
$( target_tab ).hide();
$( target_div ).hide();
// TODO - CHANGE FOCUS / ACTIVE.
option_index = $( '#apl-multiselect-' + k_pt_slug + ' option:selected' ).index();
if ( 0 === option_index ) {
option_index = $( '#apl-multiselect-' + k_pt_slug + ' option' ).next( ':selected' ).index();
}
if ( -1 !== option_index ) {
// -1 since req checkbox isn't a tab.
$( '#apl-tabs-' + k_pt_slug + '-taxonomies' ).tabs( 'option', 'active', ( option_index - 1 ) );
}
$( '#apl-tabs-' + k_pt_slug + '-taxonomies' ).tabs( 'refresh' );
$( target_div ).hide();
}
}
});
//$( 'li.apl-chk-req-taxonomies' ).attr( 'title', help_attr_title2 );
$( '#apl-multiselect-' + k_pt_slug ).multiselect( 'refresh' );
});
}
/**
* Initialized Checkbox Term Events
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_chkbox_terms() {
$.each( post_tax, function( k1_pt_slug, v1_pt_value ) {
$.each( v1_pt_value.tax_arr, function( k2_index, v2_tax_slug ) {
//apl_chk_terms_req-XXX-YYY
$( '#apl_chk_terms_req-' + k1_pt_slug + '-' + v2_tax_slug ).change( function( event ) {
// There may be no need.
});
//apl_chk_terms_dynamic-XXX-YYY
$( '#apl_chk_terms_dynamic-' + k1_pt_slug + '-' + v2_tax_slug ).change( function( event ) {
if ( this.checked ) {
if ( $( '#term-' + k1_pt_slug + '-' + v2_tax_slug + '-any' ).prop( 'checked' ) ) {
$( this ).prop( 'checked', false );
}
} else {
// Nothing
}
});
//term-any-category-any
// 'Any' TERM CHANGE.
$( '#term-' + k1_pt_slug + '-' + v2_tax_slug + '-any' ).change( function( event ) {
if ( this.checked ) {
$( '#apl_chk_terms_dynamic-' + k1_pt_slug + '-' + v2_tax_slug ).prop( 'checked', false );
$.each( tax_terms[ v2_tax_slug ], function( k3_index, v3_term_id ) {
var t1_input = '#term-' + k1_pt_slug + '-' + v2_tax_slug + '-' + v3_term_id;
$( t1_input ).prop( 'checked', false );
});
} else {
$( this ).prop( 'checked', true );
}
});
var init_term_checked = false;
$.each( tax_terms[ v2_tax_slug ], function( k3_index, v3_term_id ) {
//term-XX-YY-ZZ
var t1_input = '#term-' + k1_pt_slug + '-' + v2_tax_slug + '-' + v3_term_id;
if ( $( t1_input ).prop( 'checked' ) ) {
init_term_checked = true;
}
// TERMS CHANGE.
// term-any-category-TERM_ID.
$( t1_input ).change( function( event ) {
if ( this.checked ) {
$( '#term-' + k1_pt_slug + '-' + v2_tax_slug + '-any' ).prop( 'checked', false );
} else { // unchecked
var other_checked = false;
$.each( tax_terms[ v2_tax_slug ], function( k4_index, v4_term_id ) {
var t2_input = '#term-' + k1_pt_slug + '-' + v2_tax_slug + '-' + v4_term_id;
if ( $( t2_input ).prop( 'checked' ) && t1_input !== t2_input ) {
other_checked = true;
}
});
// Add checked to 'any'
if ( ! other_checked ) {
var t2_input_any = '#term-' + k1_pt_slug + '-' + v2_tax_slug + '-any';
$( t2_input_any ).prop( 'checked', true );
}
}
});// End terms .change().
});// End tax_terms[post_type].
if ( ! init_term_checked ) {
$( '#term-' + k1_pt_slug + '-' + v2_tax_slug + '-any' ).prop( 'checked', true );
}
});
});
}
/**
* Initialize List Amount Spinner
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_spinner_amount() {
$( '#apl_spinner_posts_per_page' ).spinner({
disabled: false,
min: -1,
max:9999,
change: function( event, ui ) {
$( '#apl_slider_handle_posts_per_page' ).text( ui.value );
$( '#apl_slider_posts_per_page' ).val( ui.value );
},
spin: function( event, ui ) {
$( '#apl_slider_handle_posts_per_page' ).text( ui.value );
$( '#apl_slider_posts_per_page' ).slider( 'value', ui.value );
}
});
}
/**
* Initialize List Amount Slider
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_slider_amount() {
$( '#apl_slider_posts_per_page' ).slider({
value: $( '#apl_spinner_posts_per_page' ).spinner( 'value' ),
min: -1,
max: 100,
create: function() {
$( '#apl_slider_handle_posts_per_page' ).text( $( this ).slider( 'value' ) );
},
slide: function( event, ui ) {
$( '#apl_slider_handle_posts_per_page' ).text( ui.value );
$( '#apl_spinner_posts_per_page' ).val( ui.value );
}
});
}
/**
* Initialize Order By Selectmenu
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_selectmenu_order_by() {
$( '#apl_selectmenu_order_by' ).selectmenu({
create: function( event, ui ) {
$( '#' + this.id + '-button' ).addClass( 'apl-ui-ms-filter-2-row' );
},
change: function( event, ui ) {
if ( 'none' === ui.item.value ) {
$( '#apl_selectmenu_order' ).selectmenu( 'option', 'disabled', true );
} else {
$( '#apl_selectmenu_order' ).selectmenu( 'option', 'disabled', false );
}
}
});
}
/**
* Initialize Order Selectmenu
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_selectmenu_order() {
$( '#apl_selectmenu_order' ).selectmenu({
create: function( event, ui ) {
$( '#' + this.id + '-button' ).addClass( 'apl-ui-ms-filter-2-row' );
if ( 'none' === $( '#apl_selectmenu_order_by' ).find( ':selected' ).val() ) {
$( this ).selectmenu( 'disable' );
}
}
});
}
/**
* Initialize Author Operators Selectmenu
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_selectmenu_author_operator() {
$( '#apl_selectmenu_author__bool' ).selectmenu({
create: function( event, ui ) {
$( '#' + this.id + '-button' ).addClass( 'apl-ui-ms-filter-2-row' );
},
change: function( event, ui ) {
if ( 'none' === ui.item.value ) {
$( '#apl_multiselect_author__in' ).multiselect( 'uncheckAll' );
$( '#apl_multiselect_author__in' ).multiselect( 'disable' );
} else {
$( '#apl_multiselect_author__in' ).multiselect( 'enable' );
}
}
});
}
/**
* Initialize Author IDs Multiselect
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_multiselect_author_ids() {
$( '#apl_multiselect_author__in' ).multiselect({
classes: 'apl-ui-ms apl-ui-ms-filter-2-row',
disable: true,
header: false,
noneSelectedText: trans.author_ids_noneSelectedText,
selectedText: trans.author_ids_selectedText,
selectedList: 1,
height: 300,
//minWidth:100,
menuWidth:'auto',
create: function( event, ui ) {
if ( 'none' === $( '#apl_selectmenu_author__bool' ).find( ':selected' ).val() ) {
$( this ).multiselect( 'disable' );
}
},
click: function( event, ui ) {}
});
}
/**
* Initialize Post Status 1 Multiselect
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_multiselect_post_status_1() {
$( '#apl_multiselect_post_status_1' ).multiselect({
classes: 'apl-ui-ms apl-ui-ms-filter-2-row',
header: false,
noneSelectedText: trans.post_status_1_noneSelectedText,
selectedText: trans.post_status_1_selectedText,
selectedList: 1,
height: 300,
/* minWidth:'45%', // admin.css button.apl-ui-ms-filter-2-row */
menuWidth:150,
click: function( event, ui ) {
// Manually update element for logical operations.
$( '#apl_multiselect_post_status_1 option[value="' + ui.value + '"]' ).prop( 'selected', ui.checked );
var opts = $( this ).children();
// If clicked is 'Any'.
if ( 'none' === ui.value ) {
if ( true === ui.checked ) {
$( opts[ '1' ] ).prop( 'selected', false );
$( opts[ '2' ] ).prop( 'selected', false );
$( opts[ '3' ] ).prop( 'selected', false );
$( '#apl_multiselect_post_status_2' ).multiselect( 'uncheckAll' );
$( '#apl_multiselect_post_status_2' ).multiselect( 'disable' );
} else {
$( opts[ '0' ] ).prop( 'selected', true );
}
} else if ( 'any' === ui.value ) {
if ( true === ui.checked ) {
$( opts[ '0' ] ).prop( 'selected', false );
$( opts[ '2' ] ).prop( 'selected', false );
$( opts[ '3' ] ).prop( 'selected', false );
$( '#apl_multiselect_post_status_2' ).multiselect( 'uncheckAll' );
$( '#apl_multiselect_post_status_2' ).multiselect( 'disable' );
} else {
$( opts[ '0' ] ).prop( 'selected', true );
}
} else {
// If others are checked, then uncheck 'Any' and enable Post_Status_2.
if ( true === ui.checked ) {
var opt2_val = $( opts[ '2' ] ).prop( 'selected' );
var opt3_val = $( opts[ '3' ] ).prop( 'selected' );
if ( ! opt2_val || ! opt3_val ) {
$( '#apl_multiselect_post_status_2' ).find( 'option[value="publish"]' ).prop( 'selected', true );
$( '#apl_multiselect_post_status_2' ).multiselect( 'enable' );
}
$( opts[ '0' ] ).prop( 'selected', false );
$( opts[ '1' ] ).prop( 'selected', false );
} else {
// If both are unchecked, then check 'Any' and disable Post_Status_2.
var opt2_val = $( opts[ '2' ] ).prop( 'selected' );
var opt3_val = $( opts[ '3' ] ).prop( 'selected' );
if ( ! opt2_val && ! opt3_val ) {
$( opts[ '0' ] ).prop( 'selected', true );
$( '#apl_multiselect_post_status_2' ).multiselect( 'uncheckAll' );
$( '#apl_multiselect_post_status_2' ).multiselect( 'disable' );
}
}
}// End if().
$( '#apl_multiselect_post_status_1' ).multiselect( 'refresh' );
$( '#apl_multiselect_post_status_2' ).multiselect( 'refresh' );
}
});
}
/**
* Initialize Post Status 2 Multiselect
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_multiselect_post_status_2() {
$( '#apl_multiselect_post_status_2' ).multiselect({
classes: 'apl-ui-ms apl-ui-ms-filter-2-row',
disabled: true,
header: false,
noneSelectedText: trans.post_status_2_noneSelectedText,
selectedText: trans.post_status_2_selectedText,
selectedList: 1,
height: 300,
minWidth:'45%',
menuWidth:150,
create: function ( event, ui ) {
$( '#apl_multiselect_post_status_1' ).find( ':selected' ).each( function( index, element ) {
if ( 'none' === $( element ).val() || 'any' === $( element ).val() ) {
$( '#apl_multiselect_post_status_2' ).multiselect( 'disable' );
$( '#apl_multiselect_post_status_2' ).multiselect( 'refresh' );
}
});
},
click: function( event, ui ) {}
});
}
/**
* Initialize Perms Selectmenu
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_selectmenu_perm() {
$( '#apl_selectmenu_perm' ).selectmenu({
create: function( event, ui ) {
$( '#' + this.id + '-button' ).addClass( 'apl-ui-ms-filter-2-row' );
}
});
}
/**
* Initialize Offset Spinner
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_spinner_offset() {
$( '#apl_spinner_offset' ).spinner({
disabled: false,
min: 0,
max:9999,
change: function( event, ui ) {
$( '#apl_slider_handle_offset' ).text( ui.value );
$( '#apl_slider_offset' ).val( ui.value );
},
spin: function( event, ui ) {
$( '#apl_slider_handle_offset' ).text( ui.value );
$( '#apl_slider_offset' ).slider( 'value', ui.value );
}
});
}
/**
* Initialize Offset Slider
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_slider_offset() {
$( '#apl_slider_offset' ).slider({
value: $( '#apl_spinner_offset' ).spinner( 'value' ),
min: 0,
max: 100,
create: function() {
$( '#apl_slider_handle_offset' ).text( $( this ).slider( 'value' ) );
},
slide: function( event, ui ) {
$( '#apl_slider_handle_offset' ).text( ui.value );
$( '#apl_spinner_offset' ).val( ui.value );
}
});
}
/**
* Initialize Empty Message Textacrea
*
* @since 0.4.0
*
* @returns {undefined}
*/
function init_textarea_empty_message() {
$( '#apl_empty_message_enable' ).change( function( event, ui ) {
if ( this.checked ) {
$( '#apl_textarea_empty_message' ).show();
} else {
$( '#apl_textarea_empty_message' ).hide();
}
});
}
/**
* Initialize Tooltips
*
* @since 0.4.0
*
* @returns {undefined}
*/
function apl_init_tooltips() {
$( '.apl-tooltip' ).tooltip({
// content: function( callback ) {
// //callback( $( this ).prop('title').replace( '(
)', '
' ) );
// }
content: function( callback ) {
callback( $( this ).prop( 'title' ) );
}
});
}
/**
* Initialize Dialogs
*
* @since 0.4.0
*
* @returns {undefined}
*/
function apl_init_dialogs() {
$( '#info-shortcodes' ).click( function() {
$( '#d-shortcodes' ).dialog({
width: '32%',
height: 450,
open: function () {
$( this ).scrollTop(0);
}
});
});
}
})(jQuery);