ui/js/settings.js
/* globals jQuery, wp_stream */
jQuery(
function( $ ) {
var network_affix;
if ( 'wp_stream_network' === $( 'input[name="option_page"]' ).val() ) {
network_affix = '_network_affix';
} else {
network_affix = '';
}
var keepRecordsIndefinitely = $( '#wp_stream' + network_affix + '\\[general_keep_records_indefinitely\\]' ),
keepRecordsFor = $( '#wp_stream' + network_affix + '_general_records_ttl' ),
keepRecordsForRow = keepRecordsFor.closest( 'tr' );
function toggleKeepRecordsFor() {
if ( keepRecordsIndefinitely.is( ':checked' ) ) {
keepRecordsForRow.addClass( 'hidden' );
keepRecordsFor.addClass( 'hidden' );
} else {
keepRecordsForRow.removeClass( 'hidden' );
keepRecordsFor.removeClass( 'hidden' );
}
}
keepRecordsIndefinitely.on(
'change', function() {
toggleKeepRecordsFor();
}
);
toggleKeepRecordsFor();
// Confirmation on some important actions
$( '#wp_stream_general_reset_site_settings' ).click(
function( e ) {
if ( ! confirm( wp_stream.i18n.confirm_defaults ) ) {
e.preventDefault();
}
}
);
// Settings page tabs
var $tabs = $( '.nav-tab-wrapper' ),
$panels = $( '.nav-tab-content table.form-table' ),
$activeTab = $tabs.find( '.nav-tab-active' ),
defaultIndex = $activeTab.length > 0 ? $tabs.find( 'a' ).index( $activeTab ) : 0,
hashIndexStart = window.location.hash.match( /^#(\d+)$/ ),
currentHash = ( null !== hashIndexStart ? hashIndexStart[ 1 ] : defaultIndex ),
syncFormAction = function( index ) {
var $optionsForm = $( 'input[name="option_page"][value^="wp_stream"]' ).closest( 'form' );
if ( $optionsForm.length === 0 ) {
return;
}
var currentAction = $optionsForm.attr( 'action' );
$optionsForm.prop( 'action', currentAction.replace( /(^[^#]*).*$/, '$1#' + index ) );
};
$tabs.on(
'click', 'a', function() {
var index = $tabs.find( 'a' ).index( $( this ) ),
hashIndex = window.location.hash.match( /^#(\d+)$/ );
$panels.hide().eq( index ).show();
$tabs
.find( 'a' )
.removeClass( 'nav-tab-active' )
.filter( $( this ) )
.addClass( 'nav-tab-active' );
if ( '' === window.location.hash || null !== hashIndex ) {
window.location.hash = index;
}
syncFormAction( index );
return false;
}
);
$tabs.children().eq( currentHash ).trigger( 'click' );
}
);