PluginProbe
Friends / 2.9.0
Friends v2.9.0
4.3.2 4.3.1 4.3.0 4.2.2 4.2.1 4.2.0 4.1.0 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.0 2.9.1 All 88 releases
friends / plugin-installer.js

plugin-installer.js in Friends 2.9.0, at plugin-installer.js

160 lines 3.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 var friends_plugin_installer = friends_plugin_installer || {};
2
3 jQuery( document ).ready( function ( $ ) {
4 'use strict';
5
6 let is_loading = false;
7
8 /**
9 * Install the plugin
10 *
11 * @since 1.0
12 * @param el object Button element
13 * @param plugin string Plugin slug
14 */
15 friends_plugin_installer.install_plugin = function ( el, plugin ) {
16 is_loading = true;
17 el.addClass( 'installing' );
18 el.text( friends_plugin_installer_localize.installing );
19
20 $.ajax( {
21 type: 'POST',
22 url: friends_plugin_installer_localize.ajax_url,
23 data: {
24 action: 'friends_plugin_installer',
25 plugin,
26 nonce: friends_plugin_installer_localize.admin_nonce,
27 dataType: 'json',
28 },
29 success( data ) {
30 if ( data ) {
31 if ( data.status === 'success' ) {
32 el.attr( 'class', 'activate button button-primary' );
33 el.text(
34 friends_plugin_installer_localize.activate_btn
35 );
36 } else {
37 el.removeClass( 'installing' );
38 }
39 } else {
40 el.removeClass( 'installing' );
41 }
42 is_loading = false;
43 },
44 error( xhr, status, error ) {
45 el.removeClass( 'installing' );
46 is_loading = false;
47 },
48 } );
49 };
50
51 /**
52 * Activate the plugin
53 *
54 * @since 1.0
55 * @param el object Button element
56 * @param plugin string Plugin slug
57 */
58 friends_plugin_installer.activate_plugin = function ( el, plugin ) {
59 $.ajax( {
60 type: 'POST',
61 url: friends_plugin_installer_localize.ajax_url,
62 data: {
63 action: 'friends_plugin_activation',
64 plugin,
65 nonce: friends_plugin_installer_localize.admin_nonce,
66 dataType: 'json',
67 },
68 success( data ) {
69 if ( data ) {
70 if ( data.status === 'success' ) {
71 el.attr( 'class', 'installed button disabled' );
72 el.text(
73 friends_plugin_installer_localize.installed_btn
74 );
75 el.closest( 'div' )
76 .find( '.deactivate' )
77 .toggleClass( 'hidden' );
78 }
79 }
80 is_loading = false;
81 },
82 error( xhr, status, error ) {
83 is_loading = false;
84 },
85 } );
86 };
87
88 /**
89 * Deactivate the plugin
90 *
91 * @since 1.0
92 * @param el object Button element
93 * @param plugin string Plugin slug
94 */
95 friends_plugin_installer.deactivate_plugin = function ( el, plugin ) {
96 $.ajax( {
97 type: 'POST',
98 url: friends_plugin_installer_localize.ajax_url,
99 data: {
100 action: 'friends_plugin_deactivation',
101 plugin,
102 nonce: friends_plugin_installer_localize.admin_nonce,
103 dataType: 'json',
104 },
105 success( data ) {
106 if ( data ) {
107 if ( data.status === 'success' ) {
108 el.toggleClass( 'hidden' );
109 el.closest( 'div' )
110 .find( '.installed' )
111 .attr( 'class', 'activate button button-primary' )
112 .text(
113 friends_plugin_installer_localize.activate_btn
114 );
115 }
116 }
117 is_loading = false;
118 },
119 error( xhr, status, error ) {
120 is_loading = false;
121 },
122 } );
123 };
124
125 /**
126 * Install/Activate Button Click
127 *
128 * @since 1.0
129 */
130 $( document ).on(
131 'click',
132 '.friends-plugin-installer a.button:not(.details)',
133 function ( e ) {
134 const el = $( this ),
135 plugin = el.data( 'slug' );
136
137 e.preventDefault();
138
139 if ( ! el.hasClass( 'disabled' ) ) {
140 if ( is_loading ) return false;
141
142 // Installation
143 if ( el.hasClass( 'install' ) ) {
144 friends_plugin_installer.install_plugin( el, plugin );
145 }
146
147 // Activation
148 if ( el.hasClass( 'activate' ) ) {
149 friends_plugin_installer.activate_plugin( el, plugin );
150 }
151
152 // Activation
153 if ( el.hasClass( 'deactivate' ) ) {
154 friends_plugin_installer.deactivate_plugin( el, plugin );
155 }
156 }
157 }
158 );
159 } );
160