This repository has been archived on 2023-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
Omphaloskepsis/plugins/jetpack/modules/publicize/assets/publicize.js
2018-03-21 18:19:20 +00:00

185 lines
6.2 KiB
JavaScript

/* jshint onevar: false, smarttabs: true */
/* global tb_show, tb_pathToImage, ajaxurl, tb_init, tb_remove */
/* global myblogsResponse, publicizeConnTestStart:true, publicizeConnTestComplete:true, publicizeConnRefreshClick:true */
var showOptionsPage;
jQuery( function( $ ) {
showOptionsPage = function( service, nonce, connection, blogId ) {
tb_show( null, null, null );
$('body').append( '<div id=\'TB_load\'><img src=\'' + tb_pathToImage + '\' /></div>' );
$('#TB_load').show();
var query = '';
if ( connection ) {
query += '&connection=' + encodeURIComponent( connection );
}
if ( 'undefined' !== typeof( blogId ) && blogId ) {
query += '&blog_id=' + Number( blogId );
}
$.post( ajaxurl, 'action=publicize_' + service + '_options_page&_wpnonce=' + nonce + query, function( response ) {
$('#TB_load').remove();
try {
var obj = jQuery.parseJSON( response );
if ( obj && 'object' === typeof( obj ) ) {
if ( obj.hasOwnProperty( 'fb_redirect' ) ) {
location.href = obj.fb_redirect + '&redirect_uri=' + encodeURIComponent( location.href );
return;
}
}
} catch (err) {
// Do nothing and move on
}
if ( response ) {
var blogID = $( 'input[name=wpas_ajax_blog_id]' ).val();
var message = $( '<div id="wpas-ajax-' + blogID + '" class="wrap"></div>' ).append( response );
message.append( '<a href="#TB_inline?thickbox&height=420&width=555&inlineId=wpas-ajax-' + blogID + '" id="wpas-click-' + blogID + '" class="new-thickbox" style="display: none;"></a>' );
$('#wpas-message').html( message );
tb_init( 'a.new-thickbox' );
$('#wpas-click-' + blogID).click();
var tb_height = parseInt( $('#TB_ajaxContent').css('height'), 10 );
var content_height = $('#thickbox-content').height();
if ( content_height < tb_height ) {
var new_height = content_height + 15;
$('#TB_ajaxContent').css( 'height', new_height );
var new_margin = parseInt( $('#TB_window').css( 'margin-top'), 10 ) + (tb_height - new_height) / 2 + 'px';
$('#TB_window').css( 'margin-top', new_margin);
}
$('.save-options').unbind('click').click( function() {
var sel = $( 'input[name=\'option\']:checked' );
var global = $( 'input[name=\'global\']:checked' );
var connection = $(this).data('connection');
var token = encodeURIComponent( sel.val() );
var id = encodeURIComponent( sel.attr( 'id' ) );
var type = encodeURIComponent( sel.attr( 'data-type' ) );
var nonce = $(this).attr('rel');
var global_conn = 'off';
var global_nonce = '';
if ( global.length ) {
global_conn = 'on';
global_nonce = global.val();
}
$.post( ajaxurl, 'action=publicize_'+ service + '_options_save&connection=' + connection + '&selected_id=' + id + '&token=' + token + '&type=' + type + '&_wpnonce=' + nonce + '&global=' + global_conn + '&global_nonce=' + global_nonce, function( /*response*/ ) {
var frameNonce;
tb_remove();
frameNonce = document.location.search.match( /frame-nonce=([^&]+)/ );
if ( /inside-newdash=1/.test( document.location.search ) && frameNonce ) {
document.location = 'options-general.php?page=sharing&inside-newdash=1&frame-nonce' + frameNonce[1];
} else {
top.location = 'options-general.php?page=sharing';
}
} );
} );
}
}, 'html' );
};
$( 'body' ).append( '<div id="wpas-message" style="display: none"></div>' );
$( '.wpas-posts' ).change( function() {
var inputs = $(this).parents( 'td:first' ).find( ':input' );
var _this = this;
var blogID = inputs.filter( '[name=wpas_ajax_blog_id]' ).val();
$( '#waiting_' + blogID ).show();
$.post( ajaxurl, inputs.serialize() + '&action=wpas_post', function( response ) { myblogsResponse.call( _this, blogID, response ); }, 'html' );
} );
$( '.options' ).unbind('click').bind( 'click', function(e) {
e.preventDefault();
e.stopPropagation();
var service = $(this).attr('class').replace( 'options ', '' );
var blogId = null;
if ( 'undefined' !== typeof( $(this).attr('id') ) ) {
blogId = parseInt( $(this).attr('id').replace( 'options-', '' ), 10 );
}
var nonce = $(this).attr('href').replace( '#nonce=', '' );
var connection = $(this).data( 'connection' );
showOptionsPage.call( this, service, nonce, connection, blogId );
});
/**
* Kicks off tests for all connections
*/
publicizeConnTestStart = function() {
$( '.pub-connection-test' )
.addClass( 'test-in-progress' );
$.post( ajaxurl, { action: 'test_publicize_conns' }, publicizeConnTestComplete );
};
publicizeConnRefreshClick = function( event ) {
event.preventDefault();
var popupURL = event.currentTarget.href;
var popupTitle = event.currentTarget.title;
// open a popup window
// when it is closed, kick off the tests again
var popupWin = window.open( popupURL, popupTitle, '' );
var popupWinTimer= window.setInterval( function() {
if ( popupWin.closed !== false ) {
window.clearInterval( popupWinTimer );
publicizeConnTestStart();
}
}, 500 );
};
publicizeConnTestComplete = function( response ) {
$( '.pub-connection-test' ).removeClass( 'test-in-progress' );
$.each( response.data, function( index, testResult ) {
// find the li for this connection
var testSelector = '#pub-connection-test-' + testResult.connectionID;
if ( testResult.connectionTestPassed ) {
$( testSelector )
.addClass( 'test-passed' )
.html( '' )
.removeClass( 'test-failed' );
} else {
$( testSelector )
.addClass( 'test-failed' )
.html( '<p><span class="pub-connection-error">' + testResult.connectionTestMessage + '</span></p>' )
.removeClass( 'test-passed' );
if ( testResult.userCanRefresh ) {
$( testSelector )
.append( '<br/>' );
$( '<a/>', {
'class' : 'pub-refresh-button button',
'title' : testResult.refreshText,
'href' : testResult.refreshURL,
'text' : testResult.refreshText,
'target' : '_refresh_' + testResult.serviceName
} )
.appendTo( testSelector )
.click( publicizeConnRefreshClick );
}
}
} );
};
$( document ).ready( function() {
// If we have at least one .pub-connection-test div present, kick off the connection test
if ( $( '.pub-connection-test' ).length ) {
publicizeConnTestStart();
}
} );
} );