/home/bonphmya/topcontenedor.com/wp-content/themes/digitaz/inc/merlin/assets/js/merlin.js
var Merlin = (function ($) {
var t;
// callbacks from form button clicks.
var callbacks = {
install_child: function (btn) {
var installer = new ChildTheme();
installer.init(btn);
},
activate_license: function (btn) {
var license = new ActivateLicense();
license.init(btn);
},
install_plugins: function (btn) {
var plugins = new PluginManager();
plugins.init(btn);
},
install_content: function (btn) {
var content = new ContentManager();
content.init(btn);
}
};
function window_loaded() {
var
body = $('.merlin__body'),
body_loading = $('.merlin__body--loading'),
body_exiting = $('.merlin__body--exiting'),
drawer_trigger = $('#merlin__drawer-trigger'),
drawer_opening = 'merlin__drawer--opening';
drawer_opened = 'merlin__drawer--open';
setTimeout(function () {
body.addClass('loaded');
}, 100);
drawer_trigger.on('click', function () {
body.toggleClass(drawer_opened);
});
$('.merlin__button--proceed:not(.merlin__button--closer)').click(function (e) {
e.preventDefault();
var goTo = this.getAttribute("href");
body.addClass('exiting');
setTimeout(function () {
window.location = goTo;
}, 400);
});
$(".merlin__button--closer").on('click', function (e) {
body.removeClass(drawer_opened);
e.preventDefault();
var goTo = this.getAttribute("href");
setTimeout(function () {
body.addClass('exiting');
}, 600);
setTimeout(function () {
window.location = goTo;
}, 1100);
});
$(".button-next").on("click", function (e) {
e.preventDefault();
var loading_button = merlin_loading_button(this);
if (!loading_button) {
return false;
}
var data_callback = $(this).data("callback");
if (data_callback && typeof callbacks[data_callback] !== "undefined") {
// We have to process a callback before continue with form submission.
callbacks[data_callback](this);
return false;
} else {
return true;
}
});
$(document).on('change', '.js-merlin-demo-import-select', function () {
var selectedIndex = $(this).val();
$('.js-merlin-select-spinner').show();
$('.merlin-image-preview').attr('src', $('.js-merlin-demo-import-select').find(':selected').data('image'));
$.post(merlin_params.ajaxurl, {
action: 'merlin_update_selected_import_data_info',
wpnonce: merlin_params.wpnonce,
selected_index: selectedIndex,
}, function (response) {
if (response.success) {
$('.js-merlin-drawer-import-content').html(response.data);
}
else {
alert(merlin_params.texts.something_went_wrong);
}
$('.js-merlin-select-spinner').hide();
})
.fail(function () {
$('.js-merlin-select-spinner').hide();
alert(merlin_params.texts.something_went_wrong)
});
});
}
function ChildTheme() {
var body = $('.merlin__body');
var complete, notice = $("#child-theme-text");
function ajax_callback(r) {
if (typeof r.done !== "undefined") {
setTimeout(function () {
notice.addClass("lead");
}, 0);
setTimeout(function () {
notice.addClass("success");
notice.html(r.message);
}, 600);
complete();
} else {
notice.addClass("lead error");
notice.html(r.error);
}
}
function do_ajax() {
jQuery.post(merlin_params.ajaxurl, {
action: "merlin_child_theme",
wpnonce: merlin_params.wpnonce,
}, ajax_callback).fail(ajax_callback);
}
return {
init: function (btn) {
complete = function () {
setTimeout(function () {
$(".merlin__body").addClass('js--finished');
}, 1500);
body.removeClass(drawer_opened);
setTimeout(function () {
$('.merlin__body').addClass('exiting');
}, 3500);
setTimeout(function () {
window.location.href = btn.href;
}, 4000);
};
do_ajax();
}
}
}
function ActivateLicense() {
var body = $('.merlin__body');
var wrapper = $('.merlin__content--license-key');
var complete, notice = $('#license-text');
function ajax_callback(r) {
if (typeof r.success !== "undefined" && r.success) {
notice.siblings('.error-message').remove();
setTimeout(function () {
notice.addClass("lead");
}, 0);
setTimeout(function () {
notice.addClass("success");
notice.html(r.message);
}, 600);
complete();
} else {
$('.js-merlin-license-activate-button').removeClass('merlin__button--loading').data('done-loading', 'no');
notice.siblings('.error-message').remove();
wrapper.addClass('has-error');
notice.html(r.message);
notice.siblings('.error-message').addClass("lead error");
}
}
function do_ajax() {
wrapper.removeClass('has-error');
jQuery.post(merlin_params.ajaxurl, {
action: "merlin_activate_license",
wpnonce: merlin_params.wpnonce,
license_key: $('.js-license-key').val()
}, ajax_callback).fail(ajax_callback);
}
return {
init: function (btn) {
complete = function () {
setTimeout(function () {
$(".merlin__body").addClass('js--finished');
}, 1500);
body.removeClass(drawer_opened);
setTimeout(function () {
$('.merlin__body').addClass('exiting');
}, 3500);
setTimeout(function () {
window.location.href = btn.href;
}, 4000);
};
do_ajax();
}
}
}
function PluginManager() {
var body = $('.merlin__body');
var complete;
var items_completed = 0;
var current_item = "";
var $current_node;
var current_item_hash = "";
var isSuccess = true;
function ajax_callback(response) {
var currentSpan = $current_node.find("label");
if (typeof response === "object" && typeof response.message !== "undefined") {
currentSpan.removeClass('installing success error').addClass(response.message.toLowerCase());
// The plugin is done (installed, updated and activated).
if (typeof response.done != "undefined" && response.done) {
find_next();
} else if (typeof response.url != "undefined") {
// we have an ajax url action to perform.
if (response.hash == current_item_hash) {
currentSpan.removeClass('installing success').addClass("error");
isSuccess = false;
find_next();
} else {
current_item_hash = response.hash;
jQuery.post(response.url, response, ajax_callback).fail(ajax_callback);
}
} else {
// error processing this plugin
find_next();
}
} else {
// The TGMPA returns a whole page as response, so check, if this plugin is done.
process_current();
}
}
function process_current() {
if (current_item) {
var $check = $current_node.find("input:checkbox");
if ($check.is(":checked")) {
jQuery.post(merlin_params.ajaxurl, {
action: "merlin_plugins",
wpnonce: merlin_params.wpnonce,
slug: current_item,
}, ajax_callback).fail(ajax_callback);
} else {
$current_node.addClass("skipping");
setTimeout(find_next, 300);
}
}
}
function find_next() {
if ($current_node) {
if (!$current_node.data("done_item")) {
items_completed++;
$current_node.data("done_item", 1);
}
$current_node.find(".spinner").css("visibility", "hidden");
}
var $li = $(".merlin__drawer--install-plugins li");
$li.each(function () {
var $item = $(this);
if ($item.data("done_item")) {
return true;
}
current_item = $item.data("slug");
$current_node = $item;
process_current();
return false;
});
if (items_completed >= $li.length) {
// finished all plugins!
complete();
}
}
return {
init: function (btn) {
$(".merlin__drawer--install-plugins").addClass("installing");
$(".merlin__drawer--install-plugins").find("input").prop("disabled", true);
complete = function () {
setTimeout(function () {
$(".merlin__body").addClass('js--finished');
}, 1000);
body.removeClass(drawer_opened);
setTimeout(function () {
$('.merlin__body').addClass('exiting');
}, 3000);
setTimeout(function () {
if(isSuccess){
window.location.href = btn.href;
}else{
window.location.reload();
}
}, 3500);
};
find_next();
}
}
}
function ContentManager() {
var body = $('.merlin__body');
var complete;
var items_completed = 0;
var current_item = "";
var $current_node;
var current_item_hash = "";
var current_content_import_items = 1;
var total_content_import_items = 0;
var progress_bar_interval;
function ajax_callback(response) {
var currentSpan = $current_node.find("label");
if (typeof response == "object" && typeof response.message !== "undefined") {
currentSpan.addClass(response.message.toLowerCase());
if (typeof response.num_of_imported_posts !== "undefined" && 0 < total_content_import_items) {
current_content_import_items = 'all' === response.num_of_imported_posts ? total_content_import_items : response.num_of_imported_posts;
update_progress_bar();
}
if (typeof response.url !== "undefined") {
// we have an ajax url action to perform.
if (response.hash === current_item_hash) {
currentSpan.addClass("status--failed");
find_next();
} else {
current_item_hash = response.hash;
// Fix the undefined selected_index issue on new AJAX calls.
if (typeof response.selected_index === "undefined") {
response.selected_index = $('.js-merlin-demo-import-select').val() || 0;
}
jQuery.post(response.url, response, ajax_callback).fail(ajax_callback); // recuurrssionnnnn
}
} else if (typeof response.done !== "undefined") {
// finished processing this plugin, move onto next
find_next();
} else {
// error processing this plugin
find_next();
}
} else {
console.log(response);
// error - try again with next plugin
currentSpan.addClass("status--error");
find_next();
}
}
function process_current() {
if (current_item) {
var $check = $current_node.find("input:checkbox");
if ($check.is(":checked")) {
jQuery.post(merlin_params.ajaxurl, {
action: "merlin_content",
wpnonce: merlin_params.wpnonce,
content: current_item,
selected_index: $('.js-merlin-demo-import-select').val() || 0
}, ajax_callback).fail(ajax_callback);
} else {
$current_node.addClass("skipping");
setTimeout(find_next, 300);
}
}
}
function find_next() {
var do_next = false;
if ($current_node) {
if (!$current_node.data("done_item")) {
items_completed++;
$current_node.data("done_item", 1);
}
$current_node.find(".spinner").css("visibility", "hidden");
}
var $items = $(".merlin__drawer--import-content__list-item");
var $enabled_items = $(".merlin__drawer--import-content__list-item input:checked");
$items.each(function () {
if (current_item == "" || do_next) {
current_item = $(this).data("content");
$current_node = $(this);
process_current();
do_next = false;
} else if ($(this).data("content") == current_item) {
do_next = true;
}
});
if (items_completed >= $items.length) {
complete();
}
}
function init_content_import_progress_bar() {
if (!$(".merlin__drawer--import-content__list-item .checkbox-content").is(':checked')) {
return false;
}
jQuery.post(merlin_params.ajaxurl, {
action: "merlin_get_total_content_import_items",
wpnonce: merlin_params.wpnonce,
selected_index: $('.js-merlin-demo-import-select').val() || 0
}, function (response) {
total_content_import_items = response.data;
if (0 < total_content_import_items) {
update_progress_bar();
// Change the value of the progress bar constantly for a small amount (0,2% per sec), to improve UX.
progress_bar_interval = setInterval(function () {
current_content_import_items = current_content_import_items + total_content_import_items / 500;
update_progress_bar();
}, 1000);
}
});
}
function valBetween(v, min, max) {
return (Math.min(max, Math.max(min, v)));
}
function update_progress_bar() {
$('.js-merlin-progress-bar').css('width', (current_content_import_items / total_content_import_items) * 100 + '%');
var $percentage = valBetween(((current_content_import_items / total_content_import_items) * 100), 0, 99);
$('.js-merlin-progress-bar-percentage').html(Math.round($percentage) + '%');
if (1 === current_content_import_items / total_content_import_items) {
clearInterval(progress_bar_interval);
}
}
return {
init: function (btn) {
$(".merlin__drawer--import-content").addClass("installing");
$(".merlin__drawer--import-content").find("input").prop("disabled", true);
complete = function () {
$.post(merlin_params.ajaxurl, {
action: "merlin_import_finished",
wpnonce: merlin_params.wpnonce,
selected_index: $('.js-merlin-demo-import-select').val() || 0
});
setTimeout(function () {
$('.js-merlin-progress-bar-percentage').html('100%');
}, 100);
setTimeout(function () {
body.removeClass(drawer_opened);
}, 500);
setTimeout(function () {
$(".merlin__body").addClass('js--finished');
}, 1500);
setTimeout(function () {
$('.merlin__body').addClass('exiting');
}, 3400);
setTimeout(function () {
window.location.href = btn.href;
}, 4000);
};
init_content_import_progress_bar();
find_next();
}
}
}
function merlin_loading_button(btn) {
var $button = jQuery(btn);
if ($button.data("done-loading") == "yes") {
return false;
}
var completed = false;
var _modifier = $button.is("input") || $button.is("button") ? "val" : "text";
$button.data("done-loading", "yes");
$button.addClass("merlin__button--loading");
return {
done: function () {
completed = true;
$button.attr("disabled", false);
}
}
}
return {
init: function () {
t = this;
$(window_loaded);
},
callback: function (func) {
console.log(func);
console.log(this);
}
}
})(jQuery);
Merlin.init();