191 lines
4.8 KiB
JavaScript
Executable File
191 lines
4.8 KiB
JavaScript
Executable File
//--------------------------------------------------------------------//
|
|
// Bloglo script that handles our admin functionality.
|
|
//--------------------------------------------------------------------//
|
|
|
|
(function ($) {
|
|
"use strict";
|
|
|
|
/**
|
|
* Holds most important methods that bootstrap the whole admin area.
|
|
*
|
|
* @type {Object}
|
|
*/
|
|
var BlogloAdmin = {
|
|
/**
|
|
* Start the engine.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
init: function () {
|
|
// Document ready
|
|
$(document).ready(BlogloAdmin.ready);
|
|
|
|
// Window load
|
|
$(window).on("load", BlogloAdmin.load);
|
|
|
|
// Bind UI actions
|
|
BlogloAdmin.bindUIActions();
|
|
|
|
// Trigger event when Bloglo fully loaded
|
|
$(document).trigger("blogloReady");
|
|
},
|
|
|
|
//--------------------------------------------------------------------//
|
|
// Events
|
|
//--------------------------------------------------------------------//
|
|
|
|
/**
|
|
* Document ready.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
ready: function () {},
|
|
|
|
/**
|
|
* Window load.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
load: function () {
|
|
// Trigger resize once everything loaded.
|
|
window.dispatchEvent(new Event("resize"));
|
|
},
|
|
|
|
/**
|
|
* Window resize.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
resize: function () {},
|
|
|
|
//--------------------------------------------------------------------//
|
|
// Functions
|
|
//--------------------------------------------------------------------//
|
|
|
|
/**
|
|
* Bind UI actions.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
bindUIActions: function () {
|
|
var $wrap = $("#wpwrap");
|
|
var $body = $("body");
|
|
var $this;
|
|
|
|
$wrap.on("click", ".plugins .hester-btn:not(.active)", function (e) {
|
|
e.preventDefault();
|
|
|
|
if ($wrap.find(".plugins .hester-btn.in-progress").length) {
|
|
return;
|
|
}
|
|
|
|
$this = $(this);
|
|
|
|
BlogloAdmin.pluginAction($this);
|
|
});
|
|
|
|
$(document).on(
|
|
"wp-plugin-install-success",
|
|
BlogloAdmin.pluginInstallSuccess
|
|
);
|
|
$(document).on("wp-plugin-install-error", BlogloAdmin.pluginInstallError);
|
|
},
|
|
|
|
pluginAction: function ($button) {
|
|
$button
|
|
.addClass("in-progress")
|
|
.attr("disabled", "disabled")
|
|
.html(hester_strings.texts[$button.data("action") + "-inprogress"]);
|
|
|
|
if ("install" === $button.data("action")) {
|
|
if (
|
|
wp.updates.shouldRequestFilesystemCredentials &&
|
|
!wp.updates.ajaxLocked
|
|
) {
|
|
wp.updates.requestFilesystemCredentials(event);
|
|
|
|
$(document).on("credential-modal-cancel", function () {
|
|
$button
|
|
.removeAttr("disabled")
|
|
.removeClass("in-progress")
|
|
.html(hester_strings.texts.install);
|
|
|
|
wp.a11y.speak(wp.updates.l10n.updateCancel, "polite");
|
|
});
|
|
}
|
|
|
|
wp.updates.installPlugin({
|
|
slug: $button.data("plugin"),
|
|
});
|
|
} else {
|
|
var data = {
|
|
_ajax_nonce: hester_strings.wpnonce, // eslint-disable-line camelcase
|
|
plugin: $button.data("plugin"),
|
|
action: "hester-plugin-" + $button.data("action"),
|
|
};
|
|
|
|
$.post(hester_strings.ajaxurl, data, function (response) {
|
|
if (response.success) {
|
|
if ($button.data("redirect")) {
|
|
window.location.href = $button.data("redirect");
|
|
} else {
|
|
location.reload();
|
|
}
|
|
} else {
|
|
$(".plugins .hester-btn.in-progress")
|
|
.removeAttr("disabled")
|
|
.removeClass("in-progress primary")
|
|
.addClass("secondary")
|
|
.html(hester_strings.texts.retry);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
pluginInstallSuccess: function (event, response) {
|
|
event.preventDefault();
|
|
|
|
var $message = jQuery(event.target);
|
|
var $init = $message.data("init");
|
|
var activatedSlug;
|
|
|
|
if ("undefined" === typeof $init) {
|
|
activatedSlug = response.slug;
|
|
} else {
|
|
activatedSlug = $init;
|
|
}
|
|
|
|
var $button = $('.plugins a[data-plugin="' + activatedSlug + '"]');
|
|
|
|
$button.data("action", "activate");
|
|
|
|
BlogloAdmin.pluginAction($button);
|
|
},
|
|
|
|
pluginInstallError: function (event, response) {
|
|
event.preventDefault();
|
|
|
|
var $message = jQuery(event.target);
|
|
var $init = $message.data("init");
|
|
var activatedSlug;
|
|
|
|
if ("undefined" === typeof $init) {
|
|
activatedSlug = response.slug;
|
|
} else {
|
|
activatedSlug = $init;
|
|
}
|
|
|
|
var $button = $('.plugins a[data-plugin="' + activatedSlug + '"]');
|
|
|
|
$button
|
|
.attr("disabled", "disabled")
|
|
.removeClass("in-progress primary")
|
|
.addClass("secondary")
|
|
.html(wp.updates.l10n.installFailedShort);
|
|
},
|
|
}; // END var BlogloAdmin
|
|
|
|
BlogloAdmin.init();
|
|
window.blogloadmin = BlogloAdmin;
|
|
})(jQuery);
|