338 lines
12 KiB
JavaScript
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(); |