"use strict";
var tyche={
version: '1.2',
constructor: tyche,
extend: function(){
let target=arguments[ 0 ]||{},
length=arguments.length,
self=this,
option;
for(let i=0; i < length; i++){
let args=[];
if(0===i){
if(1!==length){
continue;
}
target=self;
args=arguments[ 0 ];
}
if(0===args.length){
args=arguments[ i ];
}
for(option in args){
target[ option ]=args[ option ];
}}
return target;
},
init: function(){
if(typeof String.prototype.replaceAll=="undefined"){
String.prototype.replaceAll=function(match, replace){
return this.replace(new RegExp(match, 'g'), ()=> replace);
}}
},
wcap: {},
orddd: {},
bkap: {},
ac: {},
pdd: {},
pif: {},
cos: {},
con: {},
dw: {},
pur: {},
pgf: {},
cfp: {},
cpp: {},
dm_1: {},
dm_2: {},
dm_3: {},
dm_4: {},
dm_5: {},
dm_6: {},
dm_7: {},
dm_8: {},
dm_9: {},
dm_10: {},
dm_11: {},
dm_12: {},
dm_13: {},
dm_14: {},
dm_15: {},
plugin_deactivation: {
fn: {
return: function(data, index, return_value=''){
return 'undefined'!==typeof data[ index ]&&''!==data[ index ] ?(''!==return_value ? return_value:data[ index ]):''
}},
modal: function($plugin, $data){
if(''===tyche.plugin_deactivation.fn.return($data, 'deactivation_data')||''===tyche.plugin_deactivation.fn.return($data, 'nonce')||''===tyche.plugin_deactivation.fn.return($data, 'deactivation_req_msg') ){
return '';
}
let data=$data.deactivation_data,
nonce=$data.nonce,
deactivation_req_msg=$data.deactivation_req_msg;
if('undefined'===typeof data.template||'undefined'===typeof data.reasons){
return '';
}
let template=data.template,
reasons=data.reasons,
html='';
if(Array.isArray(reasons)&&reasons.length > 0){
reasons.forEach(function(item){
html +=`
<li
class="reason${tyche.plugin_deactivation.fn.return(item,'input_type',' has-input')}${tyche.plugin_deactivation.fn.return(item,'html',' has-html')}"
data-input-type="${tyche.plugin_deactivation.fn.return(item,'input_type')}"
data-input-placeholder="${tyche.plugin_deactivation.fn.return(item,'input_placeholder')}">
<label>
<span>
<input type="radio" name="selected-reason" value="${tyche.plugin_deactivation.fn.return(item,'id')}" />
</span>
<span>
${tyche.plugin_deactivation.fn.return(item,'text')}
</span>
</label>
${''!==tyche.plugin_deactivation.fn.return(item,'html') ? '<div class="reason_html">' + tyche.plugin_deactivation.fn.return(item,'html') + '</div>':''}
</li>`;
});
html +=`<input type="hidden" name="nonce" value="${nonce}" />`;
let modal=jQuery(template.replace('{PLUGIN}', $plugin).replace('{HTML}', html).replace('{DEACTIVATION_REQ_MSG}', deactivation_req_msg) );
modal.appendTo(jQuery('body') );
return modal;
}},
show_modal: function(modal){
modal.find('.button').removeClass('disabled');
let btn_deactivate=modal.find('.button-deactivate');
if(btn_deactivate.length > 0&&modal.hasClass('no-confirmation-message')&&!btn_deactivate.hasClass('allow-deactivate') ){
btn_deactivate.addClass('allow-deactivate');
modal.find('.button-skip-deactivate').addClass('allow-deactivate');
modal.find('.ts-modal-panel').removeClass('active ');
modal.find('[data-panel-id="reasons"]').addClass('active');
}
modal.addClass('active');
jQuery('body').addClass('has-ts-modal');
},
close_modal: function(modal){
modal.removeClass('active');
jQuery('body').removeClass('has-ts-modal');
},
events: {
listeners: function(data, modal, plugin){
if(0!==jQuery(`.${plugin}.ts-slug`).prev('a') ){
jQuery(`.${plugin}.ts-slug`).prev('a').on('click', function(e){
e.preventDefault();
tyche.plugin_deactivation.show_modal(modal);
});
}
modal.on('click', '.button-skip-deactivate', function(e){
e.preventDefault();
jQuery('.ts-modal-footer p').hide();
tyche.plugin_deactivation.events.button_submit(this, data, plugin, true);
});
modal.on('click', '.button-deactivate', function(e){
e.preventDefault();
jQuery('.ts-modal-footer p').hide();
tyche.plugin_deactivation.events.button_submit(this, data, plugin);
});
modal.on('click', 'input[type="radio"]', function(){
jQuery('.ts-modal-footer p').hide();
tyche.plugin_deactivation.events.button_option_selection(this, modal);
});
modal.on('click', function(e){
tyche.plugin_deactivation.events.button_click_outside_window(e, modal);
});
},
button_submit: function($this, $data, plugin, skip=false){
if(jQuery($this).hasClass('disabled')||!jQuery($this).hasClass('allow-deactivate') ){
return;
}
let modal=jQuery($this).parents(`.${plugin}.ts-modal`),
option=jQuery('input[type="radio"]:checked'),
reason=option.parents('li:first'),
response=reason.find('textarea, input[type="text"]'),
reason_id=skip ? 0:option.val(),
reason_text=skip ? 'Deactivation Reason Skipped':reason.text().trim();
if(0===option.length&&! skip){
jQuery('.ts-modal-footer p').css('display', 'inline-block');
return;
}
let	data={
'action': 'tyche_plugin_deactivation_submit_action',
'reason_id': reason_id,
'reason_text': reason_text,
'reason_info': 0!==response.length ? response.val().trim():'',
'plugin_short_name': plugin,
'plugin_name': jQuery(`.${plugin}.ts-slug`).attr('data-plugin'),
'nonce': jQuery('input[name="nonce"]').val()
};
let ajax_url=tyche.plugin_deactivation.fn.return($data, 'ajax_url'),
href=jQuery(`.${plugin}.ts-slug`).prev().prop('href');
if(''!==ajax_url&&''!==href){
jQuery.ajax({
url: ajax_url,
method: 'POST',
data,
beforeSend: function(){
modal.find('.button-deactivate').addClass('disabled');
modal.find('.button-skip-deactivate').addClass('disabled');
},
complete: function(){
window.location.href=href;
}});
}},
button_click_outside_window: function(e, modal){
let target=jQuery(e.target);
if(target.hasClass('ts-modal-body')||target.hasClass('ts-modal-footer') ){
return;
}
if(!target.hasClass('button-close')&&(target.parents('.ts-modal-body').length > 0||target.parents('.ts-modal-footer').length > 0) ){
return;
}
tyche.plugin_deactivation.close_modal(modal);
},
button_option_selection: function($this, modal){
modal.find('.reason-input').remove();
jQuery($this).parents('ul#reasons-list').children("li.li-active").removeClass("li-active");
let parent=jQuery($this).parents('li:first');
if(parent.hasClass('has_html') ){
parent.addClass('li-active');
}
if(parent.hasClass('has-input') ){
parent.append(jQuery(`<div class="reason-input">${'textfield'===parent.data('input-type') ? '<input type="text" />':'<textarea rows="5"></textarea>'}</div>`) );
parent.find('input, textarea').attr('placeholder', parent.data('input-placeholder') ).focus();
}}
}}
}
tyche.init();