//--------------------------------------------------------------------// // 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);