: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
api.ModuleOptin = class extends api.Module {
img: 'optin_inline_block',
value: 'tb_optin_inline_block',
value: 'tb_optin_horizontal',
recaptcha : 'on' /* option key for reCaptcha */
selector: '.tb_optin_fname_text'
selector: '.tb_option_lastname_text'
selector: '.tb_option_email_text'
selector: '.tb_option_submit button'
wrap_class: 'tb_group_element_s1'
wrap_class: 'tb_group_element_s2'
label_firstname: i18n.fname,
label_lastname: i18n.lname,
label_submit: i18n.sbscrbe,
layout: 'tb_optin_inline_block',
gdpr_label: i18n.gdpr_opt_msg
static builderSave(settings) {
layout: 'tb_optin_inline_block',
if (settings[key] === def[key]) {
if (settings.fname_hide && settings.fname_hide!=='|' && settings.fname_hide!=='false') {
delete settings.label_firstname;
delete settings.fn_placeholder;
delete settings.fname_hide;
delete settings.default_fname;
if (settings.lname_hide && settings.lname_hide!=='|' && settings.lname_hide!=='false') {
delete settings.label_lastname;
delete settings.ln_placeholder;
delete settings.lname_hide;
delete settings.default_lname;
delete settings.gdpr_label;
if(settings.success_action){
if(settings.success_action!=='s1'){
delete settings.redirect_to;
super.builderSave(settings);
const module = createElement(),
form = createElement('form','tb_optin_form'),
submitWrap = createElement('','tb_optin_submit'),
submit = createElement('button'),
classes = ['module', 'module-optin'],
constructor=this.constructor;
classes.push(data.layout);
module.className = classes.join(' ');
inputs.set('fname', {k: 'label_firstname', pl: 'fn_placeholder'});
inputs.set('lname', {k: 'label_lastname', pl: 'ln_placeholder'});
inputs.set('email', {k: 'label_email', pl: 'email_placeholder'});
if (data.gdpr === 'on') {
inputs.set('gdpr', {k: 'gdpr_label'});
for (let [k, inp] of inputs) {
let opt = createElement('','tb_optin_' + k),
label = constructor._setEditableContent(createElement('label','tb_optin_' + k + '_text'),inp.k,data[inp.k] ),
input = createElement('input',{type:k === 'email' ? k : (k === 'gdpr' ? 'checkbox' : 'text'),name:'tb_optin_' + k,required:1});
if (inp.pl && data[inp.pl]) {
input.placeholder = data[inp.pl];
input.className = 'tb_optin_input';
label.appendChild(input);
const em = createElement('em');
em.appendChild(api.Helper.getIcon(data.button_icon));
submit.appendChild(constructor._setEditableContent(createElement('span'),'label_submit',data.label_submit));
submitWrap.appendChild(submit);
form.appendChild(submitWrap);
module.appendChild(constructor.getModuleTitle(data.mod_title, 'mod_title'));
module.appendChild(form);