| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- /* eslint-disable no-prototype-builtins */
- /* global wp_mail_smtp_about */
- 'use strict';
- var WPMailSMTP = window.WPMailSMTP || {};
- WPMailSMTP.Admin = WPMailSMTP.Admin || {};
- /**
- * WP Mail SMTP Admin area About module.
- *
- * @since 1.5.0
- */
- WPMailSMTP.Admin.About = WPMailSMTP.Admin.About || ( function( document, window, $ ) {
- /**
- * Public functions and properties.
- *
- * @since 1.5.0
- *
- * @type {object}
- */
- var app = {
- /**
- * Start the engine. DOM is not ready yet, use only to init something.
- *
- * @since 1.5.0
- */
- init: function() {
- // Do that when DOM is ready.
- $( app.ready );
- },
- /**
- * DOM is fully loaded.
- *
- * @since 1.5.0
- */
- ready: function() {
- app.pageHolder = $( '.wp-mail-smtp-page-about' );
- app.bindActions();
- $( '.wp-mail-smtp-page' ).trigger( 'WPMailSMTP.Admin.About.ready' );
- },
- /**
- * Process all generic actions/events, mostly custom that were fired by our API.
- *
- * @since 1.5.0
- */
- bindActions: function() {
- /*
- * Make plugins description the same height.
- */
- jQuery( '.wp-mail-smtp-admin-about-plugins .plugin-item .details' ).matchHeight();
- /*
- * Install/Active the plugins.
- */
- $( document ).on( 'click', '.wp-mail-smtp-admin-about-plugins .plugin-item .action-button .button', function( e ) {
- e.preventDefault();
- var $btn = $( this );
- if ( $btn.hasClass( 'disabled' ) || $btn.hasClass( 'loading' ) ) {
- return false;
- }
- var $plugin = $btn.closest( '.plugin-item' ),
- plugin = $btn.attr( 'data-plugin' ),
- task,
- cssClass,
- statusText,
- buttonText,
- successText;
- $btn.addClass( 'loading disabled' );
- $btn.text( wp_mail_smtp_about.plugin_processing );
- if ( $btn.hasClass( 'status-inactive' ) ) {
- // Activate.
- task = 'about_plugin_activate';
- cssClass = 'status-active button button-secondary disabled';
- statusText = wp_mail_smtp_about.plugin_active;
- buttonText = wp_mail_smtp_about.plugin_activated;
- } else if ( $btn.hasClass( 'status-download' ) ) {
- // Install & Activate.
- task = 'about_plugin_install';
- cssClass = 'status-active button disabled';
- statusText = wp_mail_smtp_about.plugin_active;
- buttonText = wp_mail_smtp_about.plugin_activated;
- } else {
- return;
- }
- // Setup ajax POST data.
- var data = {
- action: 'wp_mail_smtp_ajax',
- task: task,
- nonce : wp_mail_smtp_about.nonce,
- plugin: plugin
- };
- $.post( wp_mail_smtp_about.ajax_url, data, function( res ) {
- var isInstallSuccessful;
- if ( res.success ) {
- isInstallSuccessful = true;
- if ( 'about_plugin_install' === task ) {
- $btn.attr( 'data-plugin', res.data.basename );
- successText = res.data.msg;
- if ( ! res.data.is_activated ) {
- cssClass = 'button';
- statusText = wp_mail_smtp_about.plugin_inactive;
- buttonText = wp_mail_smtp_about.plugin_activate;
- }
- } else {
- successText = res.data;
- }
- $plugin.find( '.actions' ).append( '<div class="msg success">' + successText + '</div>' );
- $plugin.find( 'span.status-label' )
- .removeClass( 'status-active status-inactive status-download' )
- .addClass( cssClass )
- .removeClass( 'button button-primary button-secondary disabled' )
- .text( statusText );
- $btn
- .removeClass( 'status-active status-inactive status-download' )
- .removeClass( 'button button-primary button-secondary disabled' )
- .addClass( cssClass ).html( buttonText );
- } else {
- isInstallSuccessful = false;
- if (
- res.hasOwnProperty( 'data' ) &&
- res.data.hasOwnProperty( 0 ) &&
- res.data[ 0 ].hasOwnProperty( 'code' ) &&
- res.data[ 0 ].code === 'download_failed'
- ) {
- // Specific server-returned error.
- $plugin.find( '.actions' ).append( '<div class="msg error">' + wp_mail_smtp_about.plugin_install_error + '</div>' );
- } else {
- // Generic error.
- $plugin.find( '.actions' ).append( '<div class="msg error">' + res.data + '</div>' );
- }
- $btn.html( wp_mail_smtp_about.plugin_download_btn );
- }
- if ( ! isInstallSuccessful ) {
- $btn.removeClass( 'disabled' );
- }
- $btn.removeClass( 'loading' );
- // Automatically clear plugin messages after 3 seconds.
- setTimeout( function() {
- $( '.plugin-item .msg' ).remove();
- }, 3000 );
- } ).fail( function( xhr ) {
- console.log( xhr.responseText );
- } );
- } );
- }
- };
- // Provide access to public functions/properties.
- return app;
- }( document, window, jQuery ) );
- // Initialize.
- WPMailSMTP.Admin.About.init();
|