1(function($) { 2 'use strict'; 3 4 // Define mailpn_form_update function 5 window.mailpn_form_update = function (){ 6 $('.mailpn-field[data-mailpn-parent-option]').closest('.mailpn-input-wrapper').addClass('mailpn-display-none'); 7 8 $('.mailpn-field[data-mailpn-parent~="this"]').each(function(index_parent, element_parent) { 9 var parent_this = $(this); 10 11 $('.mailpn-field[data-mailpn-parent~=' + parent_this.attr('id') + ']').each(function(index, element) { 12 if (parent_this.hasClass('mailpn-checkbox')) { 13 if (parent_this.is(':checked') && $(this).attr('data-mailpn-parent-option') == 'on') { 14 $(this).closest('.mailpn-input-wrapper').removeClass('mailpn-display-none'); 15 } 16 }else{ 17 if (parent_this.val() == $(this).attr('data-mailpn-parent-option')) { 18 $(this).closest('.mailpn-input-wrapper').removeClass('mailpn-display-none'); 19 } 20 } 21 }); 22 }); 23 } 24 25 $(document).ready(function() { 26 if ($('.mailpn-password-checker').length) { 27 var pass_view_state = false; 28 29 function mailpn_pass_check_strength(pass) { 30 var strength = 0; 31 var password = $('.mailpn-password-strength'); 32 var low_upper_case = password.closest('.mailpn-password-checker').find('.low-upper-case i'); 33 var number = password.closest('.mailpn-password-checker').find('.one-number i'); 34 var special_char = password.closest('.mailpn-password-checker').find('.one-special-char i'); 35 var eight_chars = password.closest('.mailpn-password-checker').find('.eight-character i'); 36 37 //If pass contains both lower and uppercase characters 38 if (pass.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) { 39 strength += 1; 40 low_upper_case.text('task_alt'); 41 } else { 42 low_upper_case.text('radio_button_unchecked'); 43 } 44 45 //If it has numbers and characters 46 if (pass.match(/([0-9])/)) { 47 strength += 1; 48 number.text('task_alt'); 49 } else { 50 number.text('radio_button_unchecked'); 51 } 52 53 //If it has one special character 54 if (pass.match(/([!,%,&,@,#,$,^,*,?,_,~,|,¬,+,ç,-,â¬])/)) { 55 strength += 1; 56 special_char.text('task_alt'); 57 } else { 58 special_char.text('radio_button_unchecked'); 59 } 60 61 //If pass is greater than 7 62 if (pass.length > 7) { 63 strength += 1; 64 eight_chars.text('task_alt'); 65 } else { 66 eight_chars.text('radio_button_unchecked'); 67 } 68 69 // If value is less than 2 70 if (strength < 2) { 71 $('.mailpn-password-strength-bar').removeClass('mailpn-progress-bar-warning mailpn-progress-bar-success').addClass('mailpn-progress-bar-danger').css('width', '10%'); 72 } else if (strength == 3) { 73 $('.mailpn-password-strength-bar').removeClass('mailpn-progress-bar-success mailpn-progress-bar-danger').addClass('mailpn-progress-bar-warning').css('width', '60%'); 74 } else if (strength == 4) { 75 $('.mailpn-password-strength-bar').removeClass('mailpn-progress-bar-warning mailpn-progress-bar-danger').addClass('mailpn-progress-bar-success').css('width', '100%'); 76 } 77 } 78 79 $(document).on('click', ('.mailpn-show-pass'), function(e){ 80 e.preventDefault(); 81 e.stopPropagation(); 82 e.stopImmediatePropagation(); 83 84 var mailpn_btn = $('.mailpn-show-pass'); 85 86 if (pass_view_state) { 87 mailpn_btn.siblings('#mailpn-password').attr('type', 'password'); 88 mailpn_btn.find('i').text('visibility_off'); 89 pass_view_state = false; 90 }else{ 91 mailpn_btn.siblings('#mailpn-password').attr('type', 'text'); 92 mailpn_btn.find('i').text('visibility'); 93 pass_view_state = true; 94 } 95 }); 96 97 $(document).on('keyup', ('.mailpn-password-strength'), function(e){ 98 mailpn_pass_check_strength($('.mailpn-password-strength').val()); 99 100 if (!$('#mailpn-popover-pass').is(':visible')) { 101 $('#mailpn-popover-pass').fadeIn('slow'); 102 } 103
104 if (!$('.mailpn-show-pass').is(':visible')) { 105 $('.mailpn-show-pass').fadeIn('slow'); 106 } 107 }); 108 } 109 110 $(document).on('mouseover', '.mailpn-input-star', function(e){ 111 if (!$(this).closest('.mailpn-input-stars').hasClass('clicked')) { 112 $(this).text('star'); 113 $(this).prevAll('.mailpn-input-star').text('star'); 114 } 115 }); 116 117 $(document).on('mouseout', '.mailpn-input-stars', function(e){ 118 if (!$(this).hasClass('clicked')) { 119 $(this).find('.mailpn-input-star').text('star_outlined'); 120 } 121 }); 122 123 $(document).on('click', '.mailpn-input-star', function(e){ 124 e.preventDefault(); 125 e.stopPropagation(); 126 e.stopImmediatePropagation(); 127 128 $(this).closest('.mailpn-input-stars').addClass('clicked'); 129 $(this).closest('.mailpn-input-stars').find('.mailpn-input-star').text('star_outlined'); 130 $(this).text('star'); 131 $(this).prevAll('.mailpn-input-star').text('star'); 132 $(this).closest('.mailpn-input-stars').siblings('.mailpn-input-hidden-stars').val($(this).prevAll('.mailpn-input-star').length + 1); 133 }); 134 135 $(document).on('change', '.mailpn-input-hidden-stars', function(e){ 136 $(this).siblings('.mailpn-input-stars').find('.mailpn-input-star').text('star_outlined'); 137 $(this).siblings('.mailpn-input-stars').find('.mailpn-input-star').slice(0, $(this).val()).text('star'); 138 }); 139 140 // Register event listener unconditionally (delegated events work for dynamic content) 141 $(document).on('change', '.mailpn-field[data-mailpn-parent~="this"]', function(e) { 142 mailpn_form_update(); 143 }); 144 145 // Call form update on document ready if fields exist 146 if ($('.mailpn-field[data-mailpn-parent]').length) { 147 mailpn_form_update(); 148 } 149 150 if ($('.mailpn-html-multi-group').length) { 151 $(document).on('click', '.mailpn-html-multi-remove-btn', function(e) { 152 e.preventDefault(); 153 e.stopPropagation(); 154 e.stopImmediatePropagation(); 155 156 var mailpn_users_btn = $(this); 157 158 if (mailpn_users_btn.closest('.mailpn-html-multi-wrapper').find('.mailpn-html-multi-group').length > 1) { 159 $(this).closest('.mailpn-html-multi-group').remove(); 160 }else{ 161 $(this).closest('.mailpn-html-multi-group').find('input, select, textarea').val(''); 162 } 163 }); 164 165 $(document).on('click', '.mailpn-html-multi-add-btn', function(e) { 166 e.preventDefault(); 167 e.stopPropagation(); 168 e.stopImmediatePropagation(); 169 170 $(this).closest('.mailpn-html-multi-wrapper').find('.mailpn-html-multi-group:first').clone().insertAfter($(this).closest('.mailpn-html-multi-wrapper').find('.mailpn-html-multi-group:last')); 171 $(this).closest('.mailpn-html-multi-wrapper').find('.mailpn-html-multi-group:last').find('input, select, textarea').val(''); 172 173 $(this).closest('.mailpn-html-multi-wrapper').find('.mailpn-input-range').each(function(index, element) { 174 $(this).siblings('.mailpn-input-range-output').html($(this).val()); 175 }); 176 }); 177 178 $('.mailpn-html-multi-wrapper').sortable({handle: '.mailpn-multi-sorting'}); 179 180 $(document).on('sortstop', '.mailpn-html-multi-wrapper', function(event, ui){ 181 mailpn_get_main_message(mailpn_i18n.ordered_element); 182 }); 183 } 184 185 if ($('.mailpn-input-range').length) { 186 $('.mailpn-input-range').each(function(index, element) { 187 $(this).siblings('.mailpn-input-range-output').html($(this).val()); 188 }); 189 190 $(document).on('input', '.mailpn-input-range', function(e) { 191 $(this).siblings('.mailpn-input-range-output').html($(this).val()); 192 }); 193 } 194 195 { 196 var image_frame; 197 198 $(document).on('click', '.mailpn-image-btn', function(e){ 199 e.preventDefault(); 200 e.stopPropagation(); 201 e.stopImmediatePropagation(); 202 203 if (image_frame){ 204 image_frame.open(); 205 return; 206 } 207 208 var mailpn_input_btn = $(this); 209 var mailpn_images_block = mailpn_input_btn.closest('.mailpn-images-block').find('.mailpn-images'); 210 var mailpn_images_input = mailpn_input_btn.closest('.mailpn-images-block').find('.mailpn-image-input'); 211 212 var image_frame = wp.media({ 213 title: (mailpn_images_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_images : mailpn_i18n.select_image, 214 library: { 215 type: 'image' 216 }, 217 multiple: (mailpn_images_block.attr('data-mailpn-multiple') == 'true') ? 'true' : 'false', 218 }); 219 220 image_frame.states.add([ 221 new wp.media.controller.Library({ 222 id: 'post-gallery', 223 title: (mailpn_images_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.edit_images : mailpn_i18n.edit_image, 224 priority: 20, 225 toolbar: 'main-gallery', 226 filterable: 'uploaded', 227 library: wp.media.query(image_frame.options.library), 228 multiple: (mailpn_images_block.attr('data-mailpn-multiple') == 'true') ? 'true' : 'false', 229 editable: true, 230 allowLocalEdits: true, 231 displaySettings: true, 232 displayUserSettings: true 233 }) 234 ]); 235 236 image_frame.open(); 237 238 image_frame.on('select', function() { 239 var ids = []; 240 var attachments_arr = []; 241 242 attachments_arr = image_frame.state().get('selection').toJSON(); 243 mailpn_images_block.html(''); 244 245 $(attachments_arr).each(function(e){
246 var sep = (e != (attachments_arr.length - 1)) ? ',' : ''; 247 ids += $(this)[0].id + sep; 248 mailpn_images_block.append('<img src="' + $(this)[0].url + '" class="">'); 249 }); 250 251 mailpn_input_btn.text((mailpn_images_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_images : mailpn_i18n.select_image); 252 mailpn_images_input.val(ids); 253 }); 254 }); 255 } 256 257 { 258 var audio_frame; 259 260 $(document).on('click', '.mailpn-audio-btn', function(e){ 261 e.preventDefault(); 262 e.stopPropagation(); 263 e.stopImmediatePropagation(); 264 265 if (audio_frame){ 266 audio_frame.open(); 267 return; 268 } 269 270 var mailpn_input_btn = $(this); 271 var mailpn_audios_block = mailpn_input_btn.closest('.mailpn-audios-block').find('.mailpn-audios'); 272 var mailpn_audios_input = mailpn_input_btn.closest('.mailpn-audios-block').find('.mailpn-audio-input'); 273 274 var audio_frame = wp.media({ 275 title: (mailpn_audios_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_audios : mailpn_i18n.select_audio, 276 library : { 277 type : 'audio' 278 }, 279 multiple: (mailpn_audios_block.attr('data-mailpn-multiple') == 'true') ? 'true' : 'false', 280 }); 281 282 audio_frame.states.add([ 283 new wp.media.controller.Library({ 284 id: 'post-gallery', 285 title: (mailpn_audios_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_audios : mailpn_i18n.select_audio, 286 priority: 20, 287 toolbar: 'main-gallery', 288 filterable: 'uploaded', 289 library: wp.media.query(audio_frame.options.library), 290 multiple: (mailpn_audios_block.attr('data-mailpn-multiple') == 'true') ? 'true' : 'false', 291 editable: true, 292 allowLocalEdits: true, 293 displaySettings: true, 294 displayUserSettings: true 295 }) 296 ]); 297 298 audio_frame.open(); 299 300 audio_frame.on('select', function() { 301 var ids = []; 302 var attachments_arr = []; 303 304 attachments_arr = audio_frame.state().get('selection').toJSON(); 305 mailpn_audios_block.html(''); 306 307 $(attachments_arr).each(function(e){ 308 var sep = (e != (attachments_arr.length - 1)) ? ',' : ''; 309 ids += $(this)[0].id + sep; 310 mailpn_audios_block.append('<div class="mailpn-audio mailpn-tooltip" title="' + $(this)[0].title + '"><i class="dashicons dashicons-media-audio"></i></div>'); 311 }); 312 313 mailpn_input_btn.text((mailpn_audios_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_audios : mailpn_i18n.select_audio); 314 mailpn_audios_input.val(ids); 315 }); 316 }); 317 } 318 319 { 320 var video_frame; 321 322 $(document).on('click', '.mailpn-video-btn', function(e){ 323 e.preventDefault(); 324 e.stopPropagation(); 325 e.stopImmediatePropagation(); 326 327 if (video_frame){ 328 video_frame.open(); 329 return; 330 } 331 332 var mailpn_input_btn = $(this); 333 var mailpn_videos_block = mailpn_input_btn.closest('.mailpn-videos-block').find('.mailpn-videos'); 334 var mailpn_videos_input = mailpn_input_btn.closest('.mailpn-videos-block').find('.mailpn-video-input'); 335 336 var video_frame = wp.media({ 337 title: (mailpn_videos_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_videos : mailpn_i18n.select_video, 338 library : { 339 type : 'video' 340 }, 341 multiple: (mailpn_videos_block.attr('data-mailpn-multiple') == 'true') ? 'true' : 'false', 342 }); 343 344 video_frame.states.add([ 345 new wp.media.controller.Library({ 346 id: 'post-gallery', 347 title: (mailpn_videos_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_videos : mailpn_i18n.select_video, 348 priority: 20, 349 toolbar: 'main-gallery', 350 filterable: 'uploaded', 351 library: wp.media.query(video_frame.options.library), 352 multiple: (mailpn_videos_block.attr('data-mailpn-multiple') == 'true') ? 'true' : 'false', 353 editable: true, 354 allowLocalEdits: true, 355 displaySettings: true, 356 displayUserSettings: true 357 }) 358 ]); 359 360 video_frame.open(); 361 362 video_frame.on('select', function() { 363 var ids = []; 364 var attachments_arr = []; 365 366 attachments_arr = video_frame.state().get('selection').toJSON(); 367 mailpn_videos_block.html(''); 368 369 $(attachments_arr).each(function(e){
370 var sep = (e != (attachments_arr.length - 1)) ? ',' : ''; 371 ids += $(this)[0].id + sep; 372 mailpn_videos_block.append('<div class="mailpn-video mailpn-tooltip" title="' + $(this)[0].title + '"><i class="dashicons dashicons-media-video"></i></div>'); 373 }); 374 375 mailpn_input_btn.text((mailpn_videos_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_videos : mailpn_i18n.select_video); 376 mailpn_videos_input.val(ids); 377 }); 378 }); 379 } 380 381 { 382 var file_frame; 383 384 $(document).on('click', '.mailpn-file-btn', function(e){ 385 e.preventDefault(); 386 e.stopPropagation(); 387 e.stopImmediatePropagation(); 388 389 if (file_frame){ 390 file_frame.open(); 391 return; 392 } 393 394 var mailpn_input_btn = $(this); 395 var mailpn_files_block = mailpn_input_btn.closest('.mailpn-files-block').find('.mailpn-files'); 396 var mailpn_files_input = mailpn_input_btn.closest('.mailpn-files-block').find('.mailpn-file-input'); 397 398 var file_frame = wp.media({ 399 title: (mailpn_files_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_files : mailpn_i18n.select_file, 400 multiple: (mailpn_files_block.attr('data-mailpn-multiple') == 'true') ? 'true' : 'false', 401 }); 402 403 file_frame.states.add([ 404 new wp.media.controller.Library({ 405 id: 'post-gallery', 406 title: (mailpn_files_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.select_files : mailpn_i18n.select_file, 407 priority: 20, 408 toolbar: 'main-gallery', 409 filterable: 'uploaded', 410 library: wp.media.query(file_frame.options.library), 411 multiple: (mailpn_files_block.attr('data-mailpn-multiple') == 'true') ? 'true' : 'false', 412 editable: true, 413 allowLocalEdits: true, 414 displaySettings: true, 415 displayUserSettings: true 416 }) 417 ]); 418 419 file_frame.open(); 420 421 file_frame.on('select', function() { 422 var ids = []; 423 var attachments_arr = []; 424 425 var attachments_arr = file_frame.state().get('selection').toJSON(); 426 mailpn_files_block.html(''); 427 428 $(attachments_arr).each(function(e){ 429 var sep = (e != (attachments_arr.length - 1)) ? ',' : ''; 430 ids += $(this)[0].id + sep; 431 mailpn_files_block.append('<embed src="' + $(this)[0].url + '" type="application/pdf" class="mailpn-embed-file"/>'); 432 }); 433 434 mailpn_input_btn.text((mailpn_files_block.attr('data-mailpn-multiple') == 'true') ? mailpn_i18n.edit_files : mailpn_i18n.edit_file); 435 mailpn_files_input.val(ids); 436 }); 437 }); 438 } 439 }); 440 441 $(document).on('click', '.mailpn-toggle', function(e) { 442 e.preventDefault(); 443 e.stopPropagation(); 444 e.stopImmediatePropagation(); 445 446 var mailpn_toggle = $(this); 447 448 if (mailpn_toggle.find('i').length) { 449 if (mailpn_toggle.siblings('.mailpn-toggle-content').is(':visible')) { 450 mailpn_toggle.find('i').text('add'); 451 }else{ 452 mailpn_toggle.find('i').text('clear'); 453 } 454 } 455 456 mailpn_toggle.siblings('.mailpn-toggle-content').fadeToggle(); 457 }); 458 459 // Role management functionality 460 function mailpn_handle_role_action(action, btn) { 461 var wrapper = btn.closest('.mailpn-user-role-selector-wrapper'); 462 var select = wrapper.find('.mailpn-user-role-select'); 463 var selectedUsers = select.val(); 464 var role = select.data('role'); 465 var roleLabel = select.data('role-label'); 466 var nonce = wrapper.find('.mailpn-role-nonce').val(); 467 var messageDiv = wrapper.find('.mailpn-role-message'); 468 469 if (!selectedUsers || selectedUsers.length === 0) { 470 messageDiv.removeClass('mailpn-display-none-soft').html('<p class="mailpn-color-error"><i class="material-icons-outlined mailpn-vertical-align-middle">warning</i> Please select at least one user.</p>'); 471 return; 472 } 473 474 var confirmMsg = action === 'assign' 475 ? 'Are you sure you want to assign the ' + roleLabel + ' role to ' + selectedUsers.length + ' user(s)?' 476 : 'Are you sure you want to remove the ' + roleLabel + ' role from ' + selectedUsers.length + ' user(s)?'; 477 478 if (!confirm(confirmMsg)) return; 479 480 btn.prop('disabled', true); 481 482 $.ajax({
483 url: mailpn_ajax.ajax_url, 484 type: 'POST', 485 dataType: 'json', 486 data: { 487 action: 'mailpn_ajax', 488 mailpn_ajax_type: 'mailpn_update_user_role', 489 mailpn_ajax_nonce: mailpn_ajax.mailpn_ajax_nonce, 490 role_action: action, 491 role: role, 492 user_ids: selectedUsers, 493 role_nonce: nonce 494 }, 495 success: function(response) { 496 if (typeof response === 'string') { 497 try { response = JSON.parse(response); } catch(e) { return; } 498 } 499 if (response.error_key === '') { 500 messageDiv.removeClass('mailpn-display-none-soft').html('<p class="mailpn-color-success"><i class="material-icons-outlined mailpn-vertical-align-middle">check_circle</i> ' + response.error_content + '</p>'); 501 setTimeout(function() { location.reload(); }, 1500); 502 } else { 503 messageDiv.removeClass('mailpn-display-none-soft').html('<p class="mailpn-color-error"><i class="material-icons-outlined mailpn-vertical-align-middle">error</i> ' + response.error_content + '</p>'); 504 btn.prop('disabled', false); 505 } 506 }, 507 error: function() { 508 messageDiv.removeClass('mailpn-display-none-soft').html('<p class="mailpn-color-error"><i class="material-icons-outlined mailpn-vertical-align-middle">error</i> An error occurred. Please try again.</p>'); 509 btn.prop('disabled', false); 510 } 511 }); 512 } 513 514 $(document).on('click', '.mailpn-assign-role-btn', function(e) { 515 e.preventDefault(); 516 mailpn_handle_role_action('assign', $(this)); 517 }); 518 519 $(document).on('click', '.mailpn-remove-role-btn', function(e) { 520 e.preventDefault(); 521 mailpn_handle_role_action('remove', $(this)); 522 }); 523})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.