Feature/MAW-846 sharethis * MAW-846: ShareThis social button plugin * MAW-846: ShareThis social buttons update * Merged develop into feature/MAW-846-sharethis
313 lines
6.7 KiB
JavaScript
313 lines
6.7 KiB
JavaScript
/**
|
|
* Credentials
|
|
*
|
|
* @package ShareThisShareButtons
|
|
*/
|
|
|
|
/* exported Credentials */
|
|
var Credentials = ( function( $, wp ) {
|
|
'use strict';
|
|
|
|
return {
|
|
/**
|
|
* Holds data.
|
|
*/
|
|
data: {},
|
|
|
|
/**
|
|
* Boot plugin.
|
|
*
|
|
* @param data
|
|
*/
|
|
boot: function( data ) {
|
|
this.data = data;
|
|
|
|
$( document ).ready(
|
|
function() {
|
|
this.init();
|
|
}.bind( this )
|
|
);
|
|
},
|
|
|
|
/**
|
|
* Initialize plugin.
|
|
*/
|
|
init: function() {
|
|
const self = this;
|
|
|
|
// Set default WP config.
|
|
wp.ajax.post(
|
|
'set_default_settings',
|
|
{
|
|
type: 'both',
|
|
nonce: self.data.nonce
|
|
}
|
|
).always(
|
|
function( link ) {
|
|
self.registerAccount( self.data.email, Math.random() + '1_stsb_PW!' );
|
|
}.bind( self )
|
|
);
|
|
},
|
|
|
|
/**
|
|
* Send hash data to credential setting.
|
|
*
|
|
* @param secret
|
|
* @param propertyid
|
|
* @param token
|
|
* @param type
|
|
*/
|
|
|
|
setCredentials: function( secret, propertyid, token, type ) {
|
|
var propSecret = propertyid + '-' + secret;
|
|
const self = this;
|
|
|
|
// If hash exists send it to credential setting.
|
|
wp.ajax.post(
|
|
'set_credentials',
|
|
{
|
|
data: propSecret,
|
|
token: token,
|
|
nonce: this.data.nonce
|
|
}
|
|
).always(
|
|
function( link ) {
|
|
// Set default product configs.
|
|
const iconfig = {
|
|
alignment: 'center',
|
|
color: 'social',
|
|
enabled: false,
|
|
font_size: 11,
|
|
labels: 'cta',
|
|
min_count: 10,
|
|
padding: 8,
|
|
radius: 4,
|
|
networks: ['facebook', 'twitter', 'email', 'sms', 'sharethis'],
|
|
show_total: true,
|
|
size: 32,
|
|
spacing: 8,
|
|
language: 'en',
|
|
};
|
|
|
|
const sconfig = {
|
|
alignment: 'left',
|
|
color: 'social',
|
|
enabled: false,
|
|
labels: 'cta',
|
|
min_count: 10,
|
|
radius: 4,
|
|
networks: ['facebook', 'twitter', 'email', 'sms', 'sharethis'],
|
|
top: 200,
|
|
show_mobile: true,
|
|
show_total: true,
|
|
show_desktop: true,
|
|
show_mobile_buttons: true,
|
|
mobile_breakpoint: 1024,
|
|
spacing: 0,
|
|
language: 'en'
|
|
}
|
|
|
|
const gconfig = {
|
|
color: '#2e7d32',
|
|
display: 'always',
|
|
enabled: false,
|
|
language: 'en',
|
|
publisher_name: '',
|
|
publisher_purposes: [],
|
|
scope: 'global'
|
|
}
|
|
|
|
let theiData = {
|
|
'token' : token,
|
|
'id': propertyid,
|
|
'product': 'inline-share-buttons',
|
|
'config': iconfig
|
|
};
|
|
|
|
theiData = JSON.stringify( theiData );
|
|
|
|
// Send new button status value.
|
|
$.ajax(
|
|
{
|
|
url: 'https://platform-api.sharethis.com/v1.0/property/product',
|
|
method: 'POST',
|
|
async: false,
|
|
contentType: 'application/json; charset=utf-8',
|
|
data: theiData,
|
|
success: function () {
|
|
wp.ajax.post(
|
|
'set_button_config',
|
|
{
|
|
button: 'inline',
|
|
config: iconfig,
|
|
first: true,
|
|
nonce: self.data.nonce
|
|
}
|
|
).always(
|
|
function ( results ) {
|
|
let thesData = {
|
|
'token' : token,
|
|
'id': propertyid,
|
|
'product': 'sticky-share-buttons',
|
|
'config': sconfig
|
|
};
|
|
|
|
thesData = JSON.stringify( thesData );
|
|
|
|
// Send new button status value.
|
|
$.ajax(
|
|
{
|
|
url: 'https://platform-api.sharethis.com/v1.0/property/product',
|
|
method: 'POST',
|
|
async: false,
|
|
contentType: 'application/json; charset=utf-8',
|
|
data: thesData,
|
|
success: function () {
|
|
wp.ajax.post(
|
|
'set_button_config',
|
|
{
|
|
button: 'sticky',
|
|
config: sconfig,
|
|
nonce: self.data.nonce
|
|
}
|
|
).always(
|
|
function ( results ) {
|
|
let thegData = {
|
|
'token' : token,
|
|
'id': propertyid,
|
|
'product': 'gdpr-compliance-tool-v2',
|
|
'config': gconfig
|
|
};
|
|
|
|
thegData = JSON.stringify( thegData );
|
|
|
|
// Send new button status value.
|
|
$.ajax(
|
|
{
|
|
url: 'https://platform-api.sharethis.com/v1.0/property/product',
|
|
method: 'POST',
|
|
async: false,
|
|
contentType: 'application/json; charset=utf-8',
|
|
data: thegData,
|
|
success: function () {
|
|
wp.ajax.post(
|
|
'set_button_config',
|
|
{
|
|
button: 'gdpr',
|
|
config: gconfig,
|
|
nonce: self.data.nonce
|
|
}
|
|
).always(
|
|
function ( results ) {
|
|
window.location.reload();
|
|
}
|
|
);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
);
|
|
}.bind( this )
|
|
);
|
|
},
|
|
|
|
/**
|
|
* Register new account.
|
|
*
|
|
* @param email
|
|
* @param pw
|
|
*/
|
|
registerAccount: function( email, pw ) {
|
|
var result = null,
|
|
self = this,
|
|
url = this.data.url,
|
|
randomNumber = Math.floor(
|
|
(
|
|
Math.random() * 10000000000000000
|
|
) + 1
|
|
),
|
|
randomNumber2 = Math.floor(
|
|
(
|
|
Math.random() * 10000000000000000
|
|
) + 1
|
|
),
|
|
theData = JSON.stringify(
|
|
{
|
|
email: randomNumber + '@' + randomNumber2 + '.com',
|
|
password: pw,
|
|
custom: {
|
|
onboarding_product: 'inline-share-buttons',
|
|
onboarding_domain: url,
|
|
is_wordpress: true,
|
|
wordpress_email: email,
|
|
}
|
|
}
|
|
);
|
|
|
|
$.ajax(
|
|
{
|
|
url: 'https://sso.sharethis.com/register',
|
|
method: 'POST',
|
|
async: false,
|
|
contentType: 'application/json; charset=utf-8',
|
|
data: theData,
|
|
success: function( results ) {
|
|
result = results;
|
|
|
|
// Create property.
|
|
self.createProperty( result, url, '' );
|
|
},
|
|
}
|
|
);
|
|
},
|
|
|
|
/**
|
|
* Create property for new account.
|
|
*
|
|
* @param accountInfo
|
|
* @param url
|
|
*/
|
|
createProperty: function( accountInfo, url, type ) {
|
|
var result = null,
|
|
self = this,
|
|
token = accountInfo.token,
|
|
theData;
|
|
|
|
if ( 'string' === typeof accountInfo ) {
|
|
token = accountInfo;
|
|
}
|
|
|
|
theData = JSON.stringify(
|
|
{
|
|
token: token,
|
|
product: 'inline-share-buttons',
|
|
domain: url,
|
|
is_wordpress: true
|
|
}
|
|
);
|
|
|
|
$.ajax(
|
|
{
|
|
url: 'https://platform-api.sharethis.com/v1.0/property',
|
|
method: 'POST',
|
|
async: false,
|
|
contentType: 'application/json; charset=utf-8',
|
|
data: theData,
|
|
success: function( results ) {
|
|
result = results;
|
|
self.setCredentials( result.secret, result._id, token, type );
|
|
}
|
|
}
|
|
);
|
|
}
|
|
};
|
|
} )( window.jQuery, window.wp );
|