PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 5.0.3.2
MainWP Dashboard: Self-hosted WordPress Management for Agencies v5.0.3.2
6.2 6.1.8 6.1.7 6.1.6 6.1.5 6.1.4 6.1.3 6.1.2 6.1.1 6.1 6.0.12 6.0.11 4.6.0.1 5.0 5.0.1 5.0.2 5.0.3 5.0.3.1 5.0.3.2 5.1 5.1.1 5.2 5.2.1 5.2.2 5.3 All 153 releases
mainwp / assets / js / mainwp-users.js

mainwp-users.js in MainWP Dashboard: Self-hosted WordPress Management for Agencies 5.0.3.2, at assets/js/mainwp-users.js

526 lines 19.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * MainWP_User.page
3 */
4 var userCountSent = 0;
5 var userCountReceived = 0;
6 jQuery( document ).ready( function () {
7
8 // Fetch users
9 jQuery( document ).on( 'click', '#mainwp_show_users', function () {
10 mainwp_fetch_users();
11 } );
12
13 // Delete single user
14 jQuery( document ).on( 'click', '.user_submitdelete', function () {
15 var confirmation = confirm( 'Are you sure you want to proceed?' );
16
17 if ( confirmation == true ) {
18 mainwpuser_postAction( jQuery( this ), 'delete' );
19 return;
20 }
21
22 return false;
23 } );
24
25 // Edit single user
26 jQuery( document ).on( 'click', '.user_getedit', function () {
27 jQuery( 'td.check-column input[type="checkbox"]' ).each( function () {
28 this.checked = false;
29 } );
30 mainwp_edit_users_box_init();
31 jQuery( '#mainwp-edit-users-modal' ).modal( 'setting', 'closable', false ).modal('show');
32 mainwpuser_postAction( jQuery( this ), 'edit' );
33 return false;
34 } );
35
36 // Trigger Manage Users bulk actions
37 jQuery( document ).on( 'click', '#mainwp-do-users-bulk-actions', function () {
38 var action = jQuery( '#mainwp-bulk-actions' ).val();
39 if ( action == 'none' )
40 return false;
41
42 var tmp = jQuery( "input[name='user[]']:checked" );
43 userCountSent = tmp.length;
44
45 if ( userCountSent == 0 )
46 return false;
47
48 var _callback = function() {
49
50 if ( action == 'edit' ) {
51 jQuery( '#mainwp-edit-users-modal' ).modal( 'setting', 'closable', false ).modal('show');
52 mainwp_edit_users_box_init();
53 return;
54 }
55
56 jQuery( '#mainwp-do-users-bulk-actions' ).attr( 'disabled', 'true' );
57 tmp.each(
58 function ( index, elem ) {
59 mainwpuser_postAction( elem, action );
60 }
61 );
62 };
63
64 if ( action == 'delete' ) {
65 var msg = __( 'You are about to delete %1 user(s). Are you sure you want to proceed?', userCountSent );
66 mainwp_confirm( msg, _callback );
67 return false;
68 }
69
70 _callback();
71
72 return false;
73 } );
74
75
76 jQuery( document ).on( 'click', '#mainwp_btn_update_user', function () {
77 var errors = [ ];
78 var tmp = jQuery( "input[name='user[]']:checked" );
79 userCountSent = tmp.length;
80
81 if ( userCountSent == 0 ) {
82 errors.push( __( 'Please search and select users.' ) );
83 }
84
85 if ( errors.length > 0 ) {
86 jQuery( '#mainwp_update_password_error' ).html( errors.join( '<br />' ) );
87 jQuery( '#mainwp_update_password_error' ).show();
88 return false;
89 }
90
91 jQuery( '#mainwp_update_password_error' ).hide();
92 jQuery( '#mainwp_users_updating' ).show();
93
94 jQuery( '#mainwp-do-users-bulk-actions' ).attr( 'disabled', 'true' );
95 jQuery( '#mainwp_btn_update_user' ).attr( 'disabled', 'true' );
96
97 tmp.each(
98 function ( index, elem ) {
99 mainwpuser_postAction( elem, 'update_user' );
100 }
101 );
102
103 return false;
104 } );
105 } );
106
107 mainwp_edit_users_box_init = function () {
108
109 jQuery( 'form#update_user_profile select#role option[value="donotupdate"]' ).prop( 'selected', true );
110 jQuery( 'form#update_user_profile select#role' ).prop("disabled", false);
111 jQuery( 'form#update_user_profile input#first_name' ).val( '' );
112 jQuery( 'form#update_user_profile input#last_name' ).val( '' );
113 jQuery( 'form#update_user_profile input#nickname' ).val( '' );
114 jQuery( 'form#update_user_profile input#email' ).val( '' );
115 jQuery( 'form#update_user_profile input#url' ).val( '' );
116 jQuery( 'form#update_user_profile select#display_name' ).empty().attr( 'disabled', 'disabled' );
117 jQuery( 'form#update_user_profile #description' ).val( '' );
118 jQuery( 'form#update_user_profile input#password' ).val( '' );
119 };
120
121 mainwpuser_postAction = function ( elem, what ) {
122 var rowElement = jQuery( elem ).parents( 'tr' );
123 var userId = rowElement.find( '.userId' ).val();
124 var userName = rowElement.find( '.userName' ).val();
125 var websiteId = rowElement.find( '.websiteId' ).val();
126
127 var data = mainwp_secure_data( {
128 action: 'mainwp_user_' + what,
129 userId: userId,
130 userName: userName,
131 websiteId: websiteId,
132 update_password: encodeURIComponent( jQuery('#password').val() ) // to fix
133 } );
134
135 if ( what == 'update_user' ) {
136 data['user_data'] = jQuery( 'form#update_user_profile' ).serialize();
137 }
138
139
140
141
142 rowElement.find( '.row-actions' ).hide();
143 if(what === 'delete'){
144 rowElement.html( '<td colspan="8"><i class="ui active inline loader tiny"></i> Please wait</td>' );
145 }
146 jQuery.post( ajaxurl, data, function ( response ) {
147 if ( what == 'edit' && response && response.user_data ) {
148 var roles_filter = [ 'administrator', 'subscriber', 'contributor', 'author', 'editor' ];
149 var disabled_change_role = false;
150 if ( response.user_data.role == '' || jQuery.inArray( response.user_data.role, roles_filter ) === -1 ) {
151 jQuery( 'form#update_user_profile select#role option[value="donotupdate"]' ).prop( 'selected', true );
152 disabled_change_role = true;
153 } else {
154 jQuery( 'form#update_user_profile select#role option[value="' + response.user_data.role + '"]' ).prop( 'selected', true );
155 if ( response.is_secure_admin ) {
156 disabled_change_role = true;
157 }
158 }
159
160 if ( disabled_change_role ) {
161 jQuery( 'form#update_user_profile select#role' ).attr( 'disabled', 'disabled' );
162 } else {
163 jQuery( 'form#update_user_profile select#role' ).prop("disabled", false);
164 }
165
166 jQuery( 'form#update_user_profile input#first_name' ).val( response.user_data.first_name );
167 jQuery( 'form#update_user_profile input#last_name' ).val( response.user_data.last_name );
168 jQuery( 'form#update_user_profile input#nickname' ).val( response.user_data.nickname );
169 jQuery( 'form#update_user_profile input#email' ).val( response.user_data.user_email );
170 jQuery( 'form#update_user_profile input#url' ).val( response.user_data.user_url );
171 jQuery( 'form#update_user_profile select#display_name' ).empty();
172 jQuery( 'form#update_user_profile select#display_name' ).prop("disabled", false);
173 if ( response.user_data.public_display ) {
174 jQuery.each( response.user_data.public_display, function ( index, value ) {
175 var o = new Option( value );
176 if ( value == response.user_data.display_name ) {
177 o.selected = true;
178 }
179 jQuery( 'form#update_user_profile select#display_name' ).append( o );
180 } );
181 jQuery( 'form#update_user_profile select#display_name option[value="' + response.user_data.display_name + '"]' ).prop( 'selected', true );
182 }
183
184 jQuery( 'form#update_user_profile #description' ).val( response.user_data.description );
185 rowElement.find( 'td.check-column input[type="checkbox"]' )[0].checked = true;
186 return;
187 }
188
189 if ( response.result ) {
190 rowElement.html( '<td colspan="8"><i class="green check icon"></i> ' + response.result + '</td>' );
191 } else {
192 rowElement.html( '<td colspan="8"><i class="times red icon"></i> Undefined error. Please try again.</td>' );
193 }
194
195 userCountReceived++;
196 if ( userCountReceived == userCountSent ) {
197 userCountReceived = 0;
198 userCountSent = 0;
199 jQuery( '#mainwp-do-users-bulk-actions' ).prop("disabled", false);
200
201 jQuery( '#mainwp_btn_update_user' ).prop("disabled", false);
202 jQuery( '#mainwp_users_updating' ).hide();
203
204
205 if ( what == 'update_user' || what == 'delete' ) {
206 jQuery( '#mainwp_users_loading_info' ).show();
207 //jQuery( '#mainwp-update-users-box' ).hide();
208 jQuery( '#mainwp-edit-users-modal' ).modal('hide');
209 mainwp_fetch_users();
210 }
211 }
212 }, 'json' );
213
214 return false;
215 };
216
217 // Fetch users from child sites
218 mainwp_fetch_users = function () {
219 var errors = [ ];
220 var selected_sites = [ ];
221 var selected_groups = [ ];
222 var selected_clients = [];
223
224 if ( jQuery( '#select_by' ).val() == 'site' ) {
225 jQuery( "input[name='selected_sites[]']:checked" ).each( function () {
226 selected_sites.push( jQuery( this ).val() );
227 } );
228 if ( selected_sites.length == 0 ) {
229 errors.push( __( 'Please select at least one website or group or clients.' ) );
230 }
231 } else if ( jQuery( '#select_by' ).val() == 'client' ) {
232 jQuery( "input[name='selected_clients[]']:checked" ).each( function () {
233 selected_clients.push( jQuery( this ).val() );
234 } );
235 if ( selected_clients.length == 0 ) {
236 errors.push( __( 'Please select at least one website or group or clients.' ) );
237 }
238 } else{
239 jQuery( "input[name='selected_groups[]']:checked" ).each( function () {
240 selected_groups.push( jQuery( this ).val() );
241 } );
242 if ( selected_groups.length == 0 ) {
243 errors.push( __( 'Please select at least one website or group or clients.' ) );
244 }
245 }
246
247 var role = "";
248 var roles = jQuery("#mainwp_user_roles").dropdown("get value");
249 if (roles !== null) {
250 role = roles.join(',');
251 }
252
253 if ( errors.length > 0 ) {
254 jQuery( '#mainwp-message-zone' ).html( errors.join( '<br />' ) );
255 jQuery( '#mainwp-message-zone' ).show();
256 jQuery( '#mainwp-message-zone' ).addClass( 'yellow ');
257 jQuery( '#mainwp_users_loading_info' ).hide();
258 return;
259 } else {
260 jQuery( '#mainwp-message-zone' ).html( "" );
261 jQuery( '#mainwp-message-zone' ).removeClass( 'yellow ');
262 jQuery( '#mainwp-message-zone' ).hide();
263 }
264
265 var name = jQuery( '#mainwp_search_users' ).val();
266
267 var data = mainwp_secure_data( {
268 action: 'mainwp_users_search',
269 role: role,
270 search: name,
271 'groups[]': selected_groups,
272 'sites[]': selected_sites,
273 'clients[]': selected_clients
274 } );
275
276 jQuery( '#mainwp-loading-users-row' ).show();
277
278 jQuery.post( ajaxurl, data, function ( response ) {
279 response = response.trim();
280 jQuery( '#mainwp-loading-users-row' ).hide();
281 jQuery( '#mainwp_users_loading_info' ).hide();
282 jQuery( '#mainwp_users_main' ).show();
283 // var matches = ( response == null ? null : response.match( /user\[\]/g ) );
284 // jQuery( '#mainwp_users_total' ).html( matches == null ? 0 : matches.length );
285 jQuery( '#mainwp_users_wrap_table' ).html( response );
286 // re-initialize datatable
287 jQuery("#mainwp-users-table").DataTable().destroy();
288 jQuery('#mainwp-users-table').DataTable( {
289 "responsive" : true,
290 "colReorder": {
291 fixedColumnsLeft: 1,
292 fixedColumnsRight: 1
293 },
294 "stateSave": true,
295 "pagingType": "full_numbers",
296 "order": [],
297 "scrollX" : true,
298 "lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "All"] ],
299 "columnDefs": [ {
300 "targets": 'no-sort',
301 "orderable": false
302 } ],
303 "preDrawCallback": function() {
304 jQuery( '#mainwp_users_wrap_table table .ui.dropdown' ).dropdown();
305 jQuery( '#mainwp_users_wrap_table table .ui.checkbox' ).checkbox();
306 mainwp_datatable_fix_menu_overflow();
307 mainwp_table_check_columns_init(); // ajax: to fix checkbox all.
308 }
309 } );
310 } );
311 };
312
313
314
315
316 /**
317 * Bulk upload new user
318 */
319 var import_user_stop_by_user = false;
320 var import_user_current_line_number = 0;
321 var import_user_total_import = 0;
322 var import_user_count_created_users = 0;
323 var import_user_count_create_fails = 0;
324
325 jQuery( document ).ready( function () {
326 import_user_total_import = jQuery( '#import_user_total_import' ).val();
327
328 jQuery( '#import_user_btn_import' ).on( 'click', function () {
329 if ( import_user_stop_by_user == false ) {
330 import_user_stop_by_user = true;
331 jQuery( '#import_user_import_logging .log' ).append( _( 'Paused import by user.' ) + "\n" );
332 jQuery( '#import_user_btn_import' ).val( __( 'Continue' ) );
333 jQuery( '#MainWPBulkUploadUserLoading' ).hide();
334 if ( import_user_count_create_fails > 0 ) {
335 jQuery( '#import_user_btn_save_csv' ).attr("style", 'display:inline-block;'); //Enable
336 }
337 } else
338 {
339 import_user_stop_by_user = false;
340 jQuery( '#import_user_import_logging .log' ).append( __( 'Continue import.' ) + "\n" );
341 jQuery( '#import_user_btn_import' ).val( __( 'Pause' ) );
342 jQuery( '#MainWPBulkUploadUserLoading' ).show();
343 if ( import_user_count_create_fails > 0 ) {
344 jQuery( '#import_user_btn_save_csv' ).attr("style", 'display:inline-block;'); //Enable
345 }
346 mainwp_import_users_next();
347 }
348 } );
349
350
351 jQuery( '#import_user_btn_save_csv' ).on( 'click', function () {
352 var fail_data = '';
353 jQuery( '#import_user_import_failed_rows span' ).each(function(){
354 fail_data += jQuery(this).html() + "\r\n";
355 });
356 var blob = new Blob( [ fail_data ], { type: "text/plain;charset=utf-8" } );
357 saveAs( blob, "import_users_fails.csv" );
358 } );
359
360 if ( jQuery( '#import_user_do_import' ).val() == 1 ) {
361 jQuery( '#MainWPBulkUploadUserLoading' ).show();
362 mainwp_import_users_next();
363 }
364 } );
365
366
367 mainwp_bulkupload_users = function () {
368 if ( jQuery( '#import_user_file_bulkupload' ).val() == '' ) {
369 feedback( 'mainwp-message-zone', __( 'Please enter CSV file for upload.' ), 'yellow' );
370 jQuery( '#import_user_file_bulkupload' ).parent().parent().addClass( 'form-invalid' );
371 } else {
372 jQuery( '#createuser' ).submit();
373 }
374 };
375
376 mainwp_import_users_next = function () {
377
378 if ( import_user_stop_by_user == true )
379 return;
380
381 import_user_current_line_number++;
382
383 if ( import_user_current_line_number > import_user_total_import ) {
384 mainwp_import_users_finished();
385 return;
386 }
387
388 var import_data = jQuery( '#user_import_csv_line_' + import_user_current_line_number ).attr('encoded-data');
389 var original_line = jQuery( '#user_import_csv_line_' + import_user_current_line_number ).attr('original-line');
390
391 var decoded_data = false;
392 var pos_data = [ ];
393 var errors = [ ];
394
395 try {
396 decoded_data = JSON.parse( import_data );
397 } catch(e) {
398 decoded_data = false;
399 errors.push( __( 'Invalid import data.' ) );
400 }
401
402 if ( false != decoded_data ) {
403 jQuery( '#import_user_import_logging .log' ).append( '[' + import_user_current_line_number + '] ' + original_line + '\n');
404 var valid = mainwp_import_users_valid_data( decoded_data );
405 pos_data = valid.data;
406 errors = valid.errors;
407 }
408
409 if ( errors.length > 0 ) {
410 jQuery( '#import_user_import_failed_rows' ).append( '<span>' + original_line + '</span>' );
411 jQuery( '#import_user_import_logging .log' ).append( '[' + import_user_current_line_number + ']>> Error - ' + errors.join( " " ) + '\n' );
412 import_user_count_create_fails++;
413 mainwp_import_users_next();
414 return;
415 }
416
417 if ( 0 == pos_data.length ) {
418 console.log( 'Error: import user data!' );
419 return;
420 }
421
422 pos_data.action = 'mainwp_importuser';
423 pos_data.line_number = import_user_current_line_number;
424 var data = mainwp_secure_data( pos_data );
425
426 //Add user via ajax!!
427 jQuery.post( ajaxurl, data, function ( response_data ) {
428 if ( response_data.error != undefined )
429 return;
430 mainwp_import_users_response( response_data );
431 mainwp_import_users_next();
432 }, 'json' );
433 };
434
435 /* eslint-disable complexity */
436 mainwp_import_users_valid_data = function( decoded_data ) {
437
438 var errors = []; // array.
439 var val_data = {}; // object.
440
441 val_data.user_login = decoded_data.user_login == undefined ? '' : decoded_data.user_login;
442 val_data.email = decoded_data.email == undefined ? '' : decoded_data.email;
443 val_data.first_name = decoded_data.first_name == undefined ? '' : decoded_data.first_name;
444 val_data.last_name = decoded_data.last_name == undefined ? '' : decoded_data.last_name ;
445 val_data.url = decoded_data.url == undefined ? '' : decoded_data.url;
446 val_data.pass1 = decoded_data.pass1 == undefined ? '' : decoded_data.pass1;
447 val_data.send_password = decoded_data.send_password == undefined ? '' : decoded_data.send_password;
448 val_data.role = decoded_data.role == undefined ? '' : decoded_data.role;
449 val_data.select_sites = decoded_data.select_sites == undefined ? '' : decoded_data.select_sites;
450 val_data.select_groups = decoded_data.select_groups == undefined ? '' : decoded_data.select_groups;
451 val_data.select_by = '';
452
453 if ( val_data.user_login == '' ) {
454 errors.push( __( 'Please enter a username.' ) );
455 }
456
457 if ( val_data.email == '' ) {
458 errors.push( __( 'Please enter an email.' ) );
459 }
460
461 if ( val_data.pass1 == '' ) {
462 errors.push( __( 'Please enter a password.' ) );
463 }
464
465 var allowed_roles = [ 'subscriber', 'administrator', 'editor', 'author', 'contributor' ];
466 if ( jQuery.inArray( val_data.role, allowed_roles ) == -1 ) {
467 errors.push( __( 'Please select a data role.' ) );
468 }
469
470 if ( val_data.select_sites != '' ) {
471 var selected_sites = val_data.select_sites.split( ';' );
472 if ( selected_sites.length == 0 ) {
473 errors.push( __( 'Please select websites or groups to add a user.' ) );
474 } else {
475 val_data.select_sites = selected_sites;
476 val_data.select_by = 'site';
477 }
478 } else {
479 var selected_groups = val_data.select_groups.split( ';' );
480 if ( selected_groups.length == 0 ) {
481 errors.push( __( 'Please select websites or groups to add a user.' ) );
482 } else {
483 val_data.select_groups = selected_groups;
484 val_data.select_by = 'group';
485 }
486 }
487 return {
488 errors: errors,
489 data: val_data
490 };
491
492 };
493 /* eslint-enable complexity */
494
495 mainwp_import_users_response = function( response_data ) {
496 var line_num = response_data.line_number;
497 var okList = response_data.ok_list;
498 var errorList = response_data.error_list;
499 if ( okList != undefined )
500 for ( var i = 0; i < okList.length; i++ ) {
501 import_user_count_created_users++;
502 jQuery( '#import_user_import_logging .log' ).append( '[' + line_num + ']>> ' + okList[i] + '\n' );
503 }
504
505 if ( errorList != undefined )
506 for ( var i = 0; i < errorList.length; i++ ) {
507 import_user_count_create_fails++;
508 jQuery( '#import_user_import_logging .log' ).append( '[' + line_num + ']>> ' + errorList[i] + '\n' );
509 }
510
511 if ( response_data.failed_logging != '' && response_data.failed_logging != undefined ) {
512 jQuery( '#import_user_import_failed_rows' ).append( '<span>' + response_data.failed_logging + '</span>' );
513 }
514 jQuery( '#import_user_import_logging' ).scrollTop( jQuery( '#import_user_import_logging .log' ).height() );
515 };
516
517 mainwp_import_users_finished = function() {
518 jQuery( '#import_user_btn_import' ).val( 'Finished' ).attr( 'disabled', 'true' );
519 jQuery( '#MainWPBulkUploadUserLoading' ).hide();
520 jQuery( '#import_user_import_logging .log' ).append( '\n' + __( 'Number of users to import: %1 Created users: %2 Failed: %3', import_user_total_import, import_user_count_created_users, import_user_count_create_fails ) + '\n' );
521 if ( import_user_count_create_fails > 0 ) {
522 jQuery( '#import_user_btn_save_csv' ).attr("style", 'display:inline-block;'); //Enable
523 }
524 jQuery( '#import_user_import_logging' ).scrollTop( jQuery( '#import_user_import_logging .log' ).height() );
525 }
526