File: /home/wbwebdes/domains/portal.wb-webdesign.com/public_html/assets/js/whmcs/client.js
/**
* WHMCS client module
*
* @copyright Copyright (c) WHMCS Limited 2005-2017
* @license http://www.whmcs.com/license/ WHMCS Eula
*/
(function(module) {
if (!WHMCS.hasModule('client')) {
WHMCS.loadModule('client', module);
}
})({
registration: function () {
this.prefillPassword = function (params) {
params = params || {};
if (typeof params.hideContainer === 'undefined') {
var id = (jQuery('#inputSecurityQId').attr('id')) ? '#containerPassword' : '#containerNewUserSecurity';
params.hideContainer = jQuery(id);
params.hideInputs = true;
} else if (typeof params.hideContainer === 'string' && params.hideContainer.length) {
params.hideContainer = jQuery(params.hideContainer);
}
if (typeof params.form === 'undefined') {
params.form = {
password: [
{id: 'inputNewPassword1'},
{id: 'inputNewPassword2'}
]
};
}
var prefillFunc = function () {
var $randomPasswd = WHMCS.utils.simpleRNG();
for (var i = 0, len = params.form.password.length; i < len; i++) {
jQuery('#' + params.form.password[i].id)
.val($randomPasswd).trigger('keyup');
}
};
if (params.hideInputs) {
params.hideContainer.slideUp('fast', prefillFunc);
} else {
prefillFunc();
}
};
return this;
},
tokenProcessor: function () {
this.hostOrigin = window.location.origin;
this.postForm = null;
/**
* @return Object A jQuery instance of auto-POST form
*/
this.getAutoPostForm = function () {
if (!this.postForm) {
this.postForm = jQuery('<form>')
.attr('id', 'whmcsAutoPostForm')
.attr('target', '_self')
.attr('method', 'POST')
.append(
jQuery('<input>')
.attr('type', 'hidden')
.attr('name', 'token')
.attr('value', csrfToken)
);
jQuery('body').append(this.postForm);
}
return this.postForm;
},
/**
* @param {URL} url
* @return boolean
*/
this.isSameOrigin = function (url) {
return url.origin && (url.origin === this.hostOrigin);
},
/**
* @param {URL} url
* @return boolean
*/
this.isClientModopCustom = function (url) {
if (!url.pathname || !url.pathname.match(/\/clientarea.php$/)) {
return false;
}
if (!url.searchParams || (url.searchParams.get('modop') !== 'custom')) {
return false;
}
return true;
},
/**
* Normalizes a string URL by converting it to a URL object and appending origin as necessary
*
* @param {string} urlString
* @return URL
*/
this.getFqUrl = function(urlString) {
try {
if (!urlString.match(/[a-z]+:\/\//i)) {
// URLs without origin will not parse
if (urlString.indexOf('/') !== 0) {
const whmcsPath = window.location.pathname.split('/').slice(0, -1).join('/');
urlString = `${whmcsPath}/${urlString}`;
}
urlString = `${this.hostOrigin}${urlString}`;
}
return url = new URL(urlString);
} catch (e) {
return null;
}
}
/**
* @param {URL|string} url
* @return boolean
*/
this.isUrlEligibleForToken = function (url) {
if (typeof url === 'string') {
url = this.getFqUrl(url);
if (!url) {
return false;
}
}
if ((typeof url !== 'object')) {
return false;
}
if (!this.isSameOrigin(url)) {
return false;
}
return this.isClientModopCustom(url);
},
/**
* @param {string} urlString
* @param {string|null} target
* @return void
*/
this.submitUrlViaPost = function (urlString, target) {
jQuery(this.getAutoPostForm())
.attr('target', target || '_self')
.attr('action', urlString)
.submit();
};
/**
* @return void
*/
this.processTokenSubmitters = function () {
jQuery('a').each((index, link) => {
const urlString = jQuery(link).attr('href');
if (!urlString) {
return;
}
if (!this.isUrlEligibleForToken(urlString)) {
return;
}
if (!jQuery(link).data('whmcs-tokenized')) {
jQuery(link).data('whmcs-tokenized', true);
jQuery(link).attr('href', '#');
jQuery(link).on('click', (e) => {
let target = jQuery(link).attr('target');
if (e.metaKey || e.ctrlKey) {
target = '_blank';
}
e.preventDefault();
this.submitUrlViaPost(urlString, target);
});
jQuery(link).on('contextmenu', (e) => {
e.preventDefault();
return false;
});
}
});
}
}
});