nguyen dung 39b8cb3612 init
2022-02-18 16:43:41 +07:00

338 lines
12 KiB
JavaScript

var EnvatoWizard = (function($){
var t;
// callbacks from form button clicks.
var callbacks = {
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(){
// init button clicks:
$('.button-next').on( 'click', function(e) {
var loading_button = dtbaker_loading_button(this);
if(!loading_button){
return false;
}
if($(this).data('callback') && typeof callbacks[$(this).data('callback')] != 'undefined'){
// we have to process a callback before continue with form submission
callbacks[$(this).data('callback')](this);
return false;
}else{
loading_content();
return true;
}
});
$('.button-upload').on( 'click', function(e) {
e.preventDefault();
renderMediaUploader();
});
$('.theme-presets a').on( 'click', function(e) {
e.preventDefault();
var $ul = $(this).parents('ul').first();
$ul.find('.current').removeClass('current');
var $li = $(this).parents('li').first();
$li.addClass('current');
var newcolor = $(this).data('style');
$('#new_style').val(newcolor);
return false;
});
}
function loading_content(){
$('.envato-setup-content').block({
message: null,
overlayCSS: {
background: '#fff',
opacity: 0.6
}
});
}
function PluginManager(){
var complete;
var items_completed = 0;
var current_item = '';
var $current_node;
var current_item_hash = '';
function ajax_callback(response){
if(typeof response == 'object' && typeof response.message != 'undefined'){
$current_node.find('span').text(response.message);
if(typeof response.url != 'undefined'){
// we have an ajax url action to perform.
if(response.hash == current_item_hash){
$current_node.find('span').text("failed");
find_next();
}else {
current_item_hash = response.hash;
jQuery.post(response.url, response, function(response2) {
process_current();
$current_node.find('span').text(response.message + envato_setup_params.verify_text);
}).fail(ajax_callback);
}
}else if(typeof response.done != 'undefined'){
// finished processing this plugin, move onto next
find_next();
}else{
// error processing this plugin
find_next();
}
}else{
// error - try again with next plugin
$current_node.find('span').text("ajax error");
find_next();
}
}
function process_current(){
if(current_item){
// query our ajax handler to get the ajax to send to TGM
// if we don't get a reply we can assume everything worked and continue onto the next one.
jQuery.post(envato_setup_params.ajaxurl, {
action: 'envato_setup_plugins',
wpnonce: envato_setup_params.wpnonce,
slug: current_item
}, ajax_callback).fail(ajax_callback);
}
}
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 $li = $('.envato-wizard-plugins li');
$li.each(function(){
if(current_item == '' || do_next){
current_item = $(this).data('slug');
$current_node = $(this);
process_current();
do_next = false;
}else if($(this).data('slug') == current_item){
do_next = true;
}
});
if(items_completed >= $li.length){
// finished all plugins!
complete();
}
}
return {
init: function(btn){
$('.envato-wizard-plugins').addClass('installing');
complete = function(){
loading_content();
window.location.href=btn.href;
};
find_next();
}
}
}
function ContentManager(){
var complete;
var items_completed = 0;
var current_item = '';
var $current_node;
var current_item_hash = '';
function ajax_callback(response) {
if(typeof response == 'object' && typeof response.message != 'undefined'){
$current_node.find('span').text(response.message);
if(typeof response.url != 'undefined'){
// we have an ajax url action to perform.
if(response.hash == current_item_hash){
$current_node.find('span').text("failed");
find_next();
}else {
current_item_hash = response.hash;
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{
// error - try again with next plugin
$current_node.find('span').text("ajax error");
find_next();
}
}
function process_current(){
if(current_item){
var $check = $current_node.find('input:checkbox');
if($check.is(':checked')) {
console.log("Doing 2 "+current_item);
// process htis one!
jQuery.post(envato_setup_params.ajaxurl, {
action: 'envato_setup_content',
wpnonce: envato_setup_params.wpnonce,
content: current_item
}, ajax_callback).fail(ajax_callback);
}else{
$current_node.find('span').text("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 = $('tr.envato_default_content');
var $enabled_items = $('tr.envato_default_content 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){
// finished all items!
complete();
}
}
return {
init: function(btn){
$('.envato-setup-pages').addClass('installing');
$('.envato-setup-pages').find('input').prop("disabled", true);
complete = function(){
loading_content();
window.location.href=btn.href;
};
find_next();
}
}
}
/**
* Callback function for the 'click' event of the 'Set Footer Image'
* anchor in its meta box.
*
* Displays the media uploader for selecting an image.
*
* @since 0.1.0
*/
function renderMediaUploader() {
'use strict';
var file_frame, attachment;
if ( undefined !== file_frame ) {
file_frame.open();
return;
}
file_frame = wp.media.frames.file_frame = wp.media({
title: 'Upload Logo',//jQuery( this ).data( 'uploader_title' ),
button: {
text: 'Select Logo' //jQuery( this ).data( 'uploader_button_text' )
},
multiple: false // Set to true to allow multiple files to be selected
});
// When an image is selected, run a callback.
file_frame.on( 'select', function() {
// We set multiple to false so only get one image from the uploader
attachment = file_frame.state().get('selection').first().toJSON();
jQuery('.site-logo').attr('src',attachment.url);
jQuery('#new_logo_id').val(attachment.id);
// Do something with attachment.id and/or attachment.url here
});
// Now display the actual file_frame
file_frame.open();
}
function dtbaker_loading_button(btn){
var $button = jQuery(btn);
if($button.data('done-loading') == 'yes')return false;
var existing_text = $button.text();
var existing_width = $button.outerWidth();
var loading_text = '⡀⡀⡀⡀⡀⡀⡀⡀⡀⡀⠄⠂⠁⠁⠂⠄';
var completed = false;
$button.css('width',existing_width);
$button.addClass('dtbaker_loading_button_current');
var _modifier = $button.is('input') || $button.is('button') ? 'val' : 'text';
$button[_modifier](loading_text);
//$button.attr('disabled',true);
$button.data('done-loading','yes');
var anim_index = [0,1,2];
// animate the text indent
function moo() {
if (completed)return;
var current_text = '';
// increase each index up to the loading length
for(var i = 0; i < anim_index.length; i++){
anim_index[i] = anim_index[i]+1;
if(anim_index[i] >= loading_text.length)anim_index[i] = 0;
current_text += loading_text.charAt(anim_index[i]);
}
$button[_modifier](current_text);
setTimeout(function(){ moo();},60);
}
moo();
return {
done: function(){
completed = true;
$button[_modifier](existing_text);
$button.removeClass('dtbaker_loading_button_current');
$button.attr('disabled',false);
}
}
}
return {
init: function(){
t = this;
$(window_loaded);
},
callback: function(func){
console.log(func);
console.log(this);
}
}
})(jQuery);
EnvatoWizard.init();