This repository has been archived on 2026-10-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
2015-08-12 20:16:07 +02:00

247 lines
7.3 KiB
JavaScript

/* global wpseoAdminL10n */
/* global ajaxurl */
/* global setWPOption */
/* global tb_remove */
/* jshint -W097 */
/* jshint -W003 */
/* jshint unused:false */
'use strict';
jQuery( document ).ready( function() {
/* Fix banner images overlapping help texts */
jQuery( '.screen-meta-toggle a' ).click( function() {
jQuery( '#sidebar-container' ).toggle();
}
);
// events
jQuery( '#enablexmlsitemap' ).change( function() {
jQuery( '#sitemapinfo' ).toggle( jQuery( this ).is( ':checked' ) );
}
).change();
jQuery( '#breadcrumbs-enable' ).change( function() {
jQuery( '#breadcrumbsinfo' ).toggle( jQuery( this ).is( ':checked' ) );
}
).change();
jQuery( '#disable_author_sitemap' ).change( function() {
jQuery( '#xml_user_block' ).toggle( !jQuery( this ).is( ':checked' ) );
}
).change();
jQuery( '#cleanpermalinks' ).change( function() {
jQuery( '#cleanpermalinksdiv' ).toggle( jQuery( this ).is( ':checked' ) );
}
).change();
jQuery( '#wpseo-tabs' ).find( 'a' ).click( function() {
jQuery( '#wpseo-tabs' ).find( 'a' ).removeClass( 'nav-tab-active' );
jQuery( '.wpseotab' ).removeClass( 'active' );
var id = jQuery( this ).attr( 'id' ).replace( '-tab', '' );
jQuery( '#' + id ).addClass( 'active' );
jQuery( this ).addClass( 'nav-tab-active' );
}
);
jQuery( '#company_or_person' ).change( function() {
var companyOrPerson = jQuery( this ).val();
if ( 'company' === companyOrPerson ) {
jQuery( '#knowledge-graph-company' ).show();
jQuery( '#knowledge-graph-person' ).hide();
}
else if ( 'person' === companyOrPerson ) {
jQuery( '#knowledge-graph-company' ).hide();
jQuery( '#knowledge-graph-person' ).show();
}
else {
jQuery( '#knowledge-graph-company' ).hide();
jQuery( '#knowledge-graph-person' ).hide();
}
}
).change();
jQuery( '.template' ).change( function() {
wpseoDetectWrongVariables( jQuery( this ) );
}
).change();
// init
var activeTab = window.location.hash.replace( '#top#', '' );
// default to first tab
if ( activeTab === '' || activeTab === '#_=_' ) {
activeTab = jQuery( '.wpseotab' ).attr( 'id' );
}
jQuery( '#' + activeTab ).addClass( 'active' );
jQuery( '#' + activeTab + '-tab' ).addClass( 'nav-tab-active' );
jQuery( '.nav-tab-active' ).click();
}
);
/**
* Detects the wrong use of variables in title and description templates
*
* @param {element} e
*/
function wpseoDetectWrongVariables( e ) {
var warn = false;
var error_id = '';
var wrongVariables = [];
var authorVariables = [ 'userid', 'name', 'user_description' ];
var dateVariables = [ 'date' ];
var postVariables = [ 'title', 'parent_title', 'excerpt', 'excerpt_only', 'caption', 'focuskw', 'pt_single', 'pt_plural', 'modified', 'id' ];
var specialVariables = [ 'term404', 'searchphrase' ];
var taxonomyVariables = [ 'term_title', 'term_description' ];
var taxonomyPostVariables = [ 'category', 'category_description', 'tag', 'tag_description' ];
if ( e.hasClass( 'posttype-template' ) ) {
wrongVariables = wrongVariables.concat( specialVariables, taxonomyVariables );
}
else if ( e.hasClass( 'homepage-template' ) ) {
wrongVariables = wrongVariables.concat( authorVariables, dateVariables, postVariables, specialVariables, taxonomyVariables, taxonomyPostVariables );
}
else if ( e.hasClass( 'taxonomy-template' ) ) {
wrongVariables = wrongVariables.concat( authorVariables, dateVariables, postVariables, specialVariables );
}
else if ( e.hasClass( 'author-template' ) ) {
wrongVariables = wrongVariables.concat( postVariables, dateVariables, specialVariables, taxonomyVariables, taxonomyPostVariables );
}
else if ( e.hasClass( 'date-template' ) ) {
wrongVariables = wrongVariables.concat( authorVariables, postVariables, specialVariables, taxonomyVariables, taxonomyPostVariables );
}
else if ( e.hasClass( 'search-template' ) ) {
wrongVariables = wrongVariables.concat( authorVariables, dateVariables, postVariables, taxonomyVariables, taxonomyPostVariables, [ 'term404' ] );
}
else if ( e.hasClass( 'error404-template' ) ) {
wrongVariables = wrongVariables.concat( authorVariables, dateVariables, postVariables, taxonomyVariables, taxonomyPostVariables, [ 'searchphrase' ] );
}
jQuery.each( wrongVariables, function( index, variable ) {
error_id = e.attr( 'id' ) + '-' + variable + '-warning';
if ( e.val().search( '%%' + variable + '%%' ) !== -1 ) {
e.addClass( 'wpseo_variable_warning' );
var msg = wpseoAdminL10n.variable_warning.replace( '%s', '%%' + variable + '%%' );
if ( jQuery( '#' + error_id ).length ) {
jQuery( '#' + error_id ).html( msg );
}
else {
e.after( ' <div id="' + error_id + '" class="wpseo_variable_warning"><div class="clear"></div>' + msg + '</div>' );
}
warn = true;
}
else {
if ( jQuery( '#' + error_id ).length ) {
jQuery( '#' + error_id ).remove();
}
}
}
);
if ( warn === false ) {
e.removeClass( 'wpseo_variable_warning' );
}
}
/**
* Sets a specific WP option
*
* @param {string} option The option to update
* @param {string} newval The new value for the option
* @param {string} hide The ID of the element to hide on success
* @param {string} nonce The nonce for the action
*/
function setWPOption( option, newval, hide, nonce ) {
jQuery.post( ajaxurl, {
action: 'wpseo_set_option',
option: option,
newval: newval,
_wpnonce: nonce
}, function( data ) {
if ( data ) {
jQuery( '#' + hide ).hide();
}
}
);
}
/**
* Do the kill blocking files action
*
* @param {string} nonce
*/
function wpseoKillBlockingFiles( nonce ) {
jQuery.post( ajaxurl, {
action: 'wpseo_kill_blocking_files',
_ajax_nonce: nonce
}, function( data ) {
if ( data === 'success' ) {
jQuery( '#blocking_files' ).hide();
}
else {
jQuery( '#block_files' ).html( data );
}
}
);
}
/**
* Copies the meta description for the homepage
*/
function wpseoCopyHomeMeta() {
jQuery( '#og_frontpage_desc' ).val( jQuery( '#meta_description' ).val() );
}
/**
* Makes sure we store the action hash so we can return to the right hash
*/
function wpseoSetTabHash() {
var conf = jQuery( '#wpseo-conf' );
if ( conf.length ) {
var currentUrl = conf.attr( 'action' ).split( '#' )[ 0 ];
conf.attr( 'action', currentUrl + window.location.hash );
}
}
/**
* When the hash changes, get the base url from the action and then add the current hash
*/
jQuery( window ).on( 'hashchange', wpseoSetTabHash );
/**
* When the hash changes, get the base url from the action and then add the current hash
*/
jQuery( document ).on( 'ready', wpseoSetTabHash );
function wpseo_add_fb_admin() {
var target_form = jQuery('#TB_ajaxContent');
jQuery.post(
ajaxurl,
{
_wpnonce: target_form.find('input[name=fb_admin_nonce]').val(),
admin_name: target_form.find('input[name=fb_admin_name]').val(),
admin_id: target_form.find('input[name=fb_admin_id]').val(),
action: 'wpseo_add_fb_admin'
},
function( response ) {
var resp = jQuery.parseJSON( response );
target_form.find('p.notice').remove();
switch( resp.success ) {
case 1:
target_form.find('input[type=text]').val( '' );
jQuery( '#user_admin' ).append( resp.html );
jQuery( '#connected_fb_admins').show();
tb_remove();
break;
case 0 :
jQuery( resp.html ).insertAfter( target_form.find( 'h3' ) );
break;
}
}
);
}