212 lines
9.2 KiB
JavaScript
212 lines
9.2 KiB
JavaScript
(function ($) {
|
|
$(document).ready(function () {
|
|
|
|
$('[data-vue]').each(function () {
|
|
|
|
let $this = $(this);
|
|
|
|
let data_var = $this.attr('data-vue');
|
|
let data_source = $this.attr('data-source');
|
|
|
|
new Vue({
|
|
el: $(this)[0],
|
|
data: function () {
|
|
return {
|
|
loading: false,
|
|
data: '',
|
|
settings_alert: {
|
|
status: false,
|
|
success: true
|
|
},
|
|
}
|
|
},
|
|
mounted: function () {
|
|
this.getSettings();
|
|
this.clearEmptyGroups();
|
|
},
|
|
methods: {
|
|
initSubmenu: function () {
|
|
Vue.nextTick()
|
|
.then(function () {
|
|
(function ($) {
|
|
|
|
/*Hide all fields in submenu*/
|
|
var submenu_tab_fields = $('.wpcfto-tab.has-submenu-items [data-field], .wpcfto-tab.has-submenu-items .wpcfto_group_started');
|
|
submenu_tab_fields.css({
|
|
display: 'none'
|
|
});
|
|
|
|
var $sub_menu = $('.wpcfto-submenus .active');
|
|
var sub_menu_section = $sub_menu.attr('data-submenu');
|
|
let $submenu_section = $('.' + sub_menu_section);
|
|
|
|
$submenu_section.removeAttr('style');
|
|
|
|
|
|
submenu_tab_fields.parents('.wpcfto_group_started').css({
|
|
display: 'none'
|
|
});
|
|
|
|
$submenu_section.parents('.wpcfto_group_started').removeAttr('style');
|
|
|
|
})(jQuery);
|
|
});
|
|
},
|
|
changeTabFromAnchor: function () {
|
|
var _this = this;
|
|
var hash = window.location.hash;
|
|
var hashParts = hash.split('#');
|
|
if (typeof hashParts[1] !== 'undefined') {
|
|
Vue.nextTick(function () {
|
|
_this.changeTab(hashParts[1]);
|
|
});
|
|
}
|
|
},
|
|
changeTab: function (tab) {
|
|
let $tab = $('#' + tab);
|
|
$tab.closest('.stm_metaboxes_grid__inner').find('.wpcfto-tab').removeClass('active');
|
|
$tab.addClass('active');
|
|
|
|
let $section = $('div[data-section="' + tab + '"]');
|
|
$tab.closest('.wpcfto-settings').find('.wpcfto-nav').removeClass('active');
|
|
$tab.closest('.stm_metaboxes_grid__inner').find('.wpcfto-nav').removeClass('active');
|
|
$section.closest('.wpcfto-nav').addClass('active');
|
|
|
|
history.pushState(null, null, '#' + tab);
|
|
|
|
/*if has submenu*/
|
|
if ($section.closest('.wpcfto-nav').hasClass('has-submenu')) {
|
|
let $submenu = $section.closest('.wpcfto-nav').find('.wpcfto-submenus [data-submenu]').eq(0);
|
|
const urlParams = new URLSearchParams(window.location.search);
|
|
const submenuParam = urlParams.get('submenu');
|
|
|
|
if (submenuParam) {
|
|
const navSubmenu = $section.closest('.wpcfto-nav').find(`.wpcfto-submenus [data-submenu=${tab}_${submenuParam}]`);
|
|
$submenu = navSubmenu !== undefined && navSubmenu.length > 0 ? navSubmenu : $submenu;
|
|
}
|
|
this.changeSubMenu($submenu.attr('data-submenu'));
|
|
}
|
|
|
|
/*Scroll top*/
|
|
$("html, body").animate(
|
|
{
|
|
scrollTop: $tab.closest('.stm_metaboxes_grid__inner').offset().top - 100
|
|
},
|
|
"fast");
|
|
|
|
},
|
|
changeSubMenu(sub_menu) {
|
|
let $submenu = $('[data-submenu="' + sub_menu + '"]');
|
|
$('[data-submenu]').removeClass('active');
|
|
$submenu.addClass('active');
|
|
this.initSubmenu();
|
|
},
|
|
getSettings: function () {
|
|
var _this = this;
|
|
_this.loading = true;
|
|
|
|
this.$http.get(stm_wpcfto_ajaxurl + '?action=stm_wpcfto_get_settings&source=' + data_source + '&name=' + data_var + '&nonce=' + wpcfto_global_settings['nonce']).then(function (r) {
|
|
_this.$set(_this, 'data', r.body);
|
|
_this.loading = false;
|
|
|
|
this.changeTabFromAnchor();
|
|
|
|
this.initSubmenu();
|
|
});
|
|
|
|
},
|
|
saveSettings: function (id) {
|
|
var vm = this;
|
|
vm.loading = true;
|
|
this.$http.post(stm_wpcfto_ajaxurl + '?action=wpcfto_save_settings&nonce=' + stm_wpcfto_nonces['wpcfto_save_settings'] + '&name=' + id, JSON.stringify(vm.data)).then(function (response) {
|
|
vm.loading = false;
|
|
vm.settings_alert = {
|
|
success: response.status === 200,
|
|
status: true
|
|
};
|
|
|
|
setTimeout(() => {
|
|
vm.settings_alert.status = false;
|
|
}, 1500)
|
|
|
|
// if(response.body?.reload === true) location.reload();
|
|
location.reload();
|
|
});
|
|
},
|
|
initOpen(field) {
|
|
if (typeof field.opened === 'undefined') {
|
|
this.$set(field, 'opened', !!(field.value));
|
|
}
|
|
},
|
|
openField(field) {
|
|
|
|
var opened = !field.opened;
|
|
|
|
|
|
this.$set(field, 'opened', opened);
|
|
|
|
if (!field.opened) {
|
|
this.$set(field, 'value', '');
|
|
}
|
|
},
|
|
enableAddon($event, option) {
|
|
var _this = this;
|
|
Vue.nextTick(function () {
|
|
(function ($) {
|
|
|
|
var currentItem = $($event.target);
|
|
|
|
currentItem.addClass('loading');
|
|
|
|
var url = stm_wpcfto_ajaxurl + '?action=stm_lms_enable_addon&addon=' + option;
|
|
|
|
_this.$http.get(url).then(function (response) {
|
|
currentItem.removeClass('loading');
|
|
var $container = $('.stm_lms_addon_group_settings_' + option);
|
|
$container.each(function () {
|
|
var $this = $(this);
|
|
$this.removeClass('is_pro is_pro_in_addon');
|
|
$this.find('.field_overlay').remove();
|
|
$this.find('.pro-notice').remove();
|
|
});
|
|
});
|
|
|
|
})(jQuery);
|
|
});
|
|
},
|
|
clearEmptyGroups() {
|
|
Vue.nextTick()
|
|
.then(function () {
|
|
(function ($) {
|
|
$('.wpcfto_group_started').each(function () {
|
|
let $group = $(this);
|
|
let $childs = $group.find('.wpcfto-box-child');
|
|
if (!$childs.length) {
|
|
$group.addClass('no-childs-visible');
|
|
} else {
|
|
$group.removeClass('no-childs-visible');
|
|
}
|
|
})
|
|
})(jQuery);
|
|
});
|
|
}
|
|
},
|
|
watch: {
|
|
data: {
|
|
deep: true,
|
|
handler: function () {
|
|
let _this = this;
|
|
setTimeout(function () {
|
|
_this.clearEmptyGroups();
|
|
_this.initSubmenu();
|
|
}, 100);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
})(jQuery);
|