1 2 3 4 5 6/*=================================================================================== 7* 8* 9* dsg-text-mod.js - Funktionen zur Modifizierung der Inhalte 10* 11* 12====================================================================================*/ 13 14jQuery(document).ready(function($) { 15 16 // console.log('frontend-testercodes.js'); 17 18 19 //Initialize 20 window.dsg_loaded_project_json_testercode = {}; 21 22 23 /*=================================================================================== 24* 25* 26* dsg-text-mod.js - Klicks messen 27* 28* 29====================================================================================*/ 30 31var dsg_testercodes_save_obj = (function() { 32 33 // Initialize all variables 34 let clickCount = 0; 35 let highClickThreshold = 10; 36 let lowClickThreshold = 4; 37 let highTimeThreshold = 5 * 60; 38 let lowTimeThreshold = 2 * 60; 39 let clickMultiplier = 1; 40 let timeMultiplier = 1; 41 let pageLoadTime = new Date().getTime(); 42 let showDialog = true; 43 let dialogCount = 0; 44 let lastDialogTime = 0; 45 let coolDownPeriod = 120; // 2 minutes 46 let remainingTime = 0; 47 let remainingClicks = 0; 48 49 function startCheck() { 50 // Remove any existing click handlers 51 // $(".dsg-module, input, textarea, .mce-tinymce").off("click"); 52 53 // Increment click counter and log the remaining time and clicks on each click 54 $(".dsg-module, input, textarea, .mce-tinymce").on("click", function() { 55 clickCount++; 56 // console.log(`Remaining time: ${remainingTime.toFixed(3)} seconds, Remaining clicks: ${remainingClicks}`); 57 }); 58 59 // Check conditions every second 60 setInterval(checkConditions, 1000); 61 } 62 63 function checkConditions() { 64 // Calculate duration the user spent on the website in seconds 65 let duration = (new Date().getTime() - pageLoadTime) / 1000; 66 // Calculate time since the last dialog 67 let timeSinceLastDialog = (new Date().getTime() - lastDialogTime) / 1000; 68 // Calculate remaining time and clicks 69 remainingTime = Math.max(highTimeThreshold * timeMultiplier - duration, 0); 70 remainingClicks = Math.max(highClickThreshold * clickMultiplier - clickCount, 0); 71 72 73 if (showDialog && (clickCount > highClickThreshold * clickMultiplier || 74 timeSinceLastDialog > coolDownPeriod && (clickCount >= lowClickThreshold * clickMultiplier && duration >= lowTimeThreshold * timeMultiplier) || 75 duration >= highTimeThreshold * timeMultiplier)) { 76 77 // If conditions are met, reset click counter and page load time 78 if (!$(".ui-dialog").length && !$("#dsg-drpld").length) { 79 80 81 clickCount = 0; 82 pageLoadTime = new Date().getTime(); 83 // Execute function 84 let project_db_id = $('#dsg-cookie-header').attr('data-project_db_id'); 85 86 if ( dsg_check_premium() && project_db_id) { 87 dsg_testercodes_save_code_dialog(); 88 // Update the last dialog time 89 lastDialogTime = new Date().getTime(); 90 } 91 92 // Increase multipliers if they're less than 3 93 if (clickMultiplier < 3) { 94 clickMultiplier++; 95 timeMultiplier++; 96 } 97 98 // Increment dialog count 99 dialogCount++; 100 101 } else { 102 lastDialogTime = new Date().getTime(); 103 } 104 } 105 } 106 107 // Return startCheck function as public method 108 if (url_parameter.dsgp == undefined ) { 109 return { startCheck: startCheck, showDialog: function(value) { showDialog = value; }, getDialogCount: function() { return dialogCount; } }; 110 } 111})(); 112 113if (url_parameter.dsgp === undefined ) { 114 115 setTimeout(function() { 116 // Start the function 117 dsg_testercodes_save_obj.startCheck(); 118 }, 1000); 119} 120 121 122 123//=================================================================================== 124// 125// Content PopUp 126// 127//==================================================================================== 128 129 130function dsg_testercodes_save_code_dialog () { 131 132 const support_info = '(<a href="https://datenschutz-generator.de/kontakt-faq/" target="faq" title="Aufruf unserer FAQ und des Kontaktformulars im neuen Fenster">Weitere Hinweise in unserer FAQ</a>).'; 133 134 var infotext = '<div class="dsg-entries-save-form-postinfo">Sie erhalten eine E-Mail mit bitte um Bestätigung Ihrer Anfrage. Dieses Formular können Sie jederzeit wieder aufrufen, indem Sie auf das Diskettensymbol <img src="https://datenschutz-generator.de/wp-content/plugins/ts-dsg/svg/icons/dsg-icon-104-01.svg" width="25" height="25"> oben in der Menüleiste anklicken. '+support_info+'</div>'; 135 136 var question = '<p>Möchten Sie Ihre Eingaben nicht verlieren? Bitte geben Sie hierzu Ihre E-Mail-Adresse ein.</p><p>Wir senden Ihnen anschlieÃend einen Link zu, mit dem Sie Ihre Bearbeitung jederzeit (z.B. bei Kauf einer Lizenz oder nach SchlieÃend des Browsers) fortsetzen können.</p><div class="dsg-entries-save-form-info"></div><div class="dsg-entries-save-form-container"><div class="dsg-entries-save-form-container-label"><label for="dsg-entries-save-form-email">Ihre E-Mailadresse:</label></div><div class="dsg-entries-save-form-container-input"><input type="email" id="dsg-entries-save-form-email" name="email" required=""></div><div class="dsg-entries-save-form-container-submit"><input type="submit" class="dsg-entries-save-submit" value="Speichern und Absenden" style="margin-top: 15px;">'+infotext+'</div></div>'; 137 138 139 140 141 142 143 button_yes = 'SchlieÃen'; 144 button_no = 'Hinweis nicht wieder anzeigen'; 145 146/* 147 var dialogButtons = [{ 148 text: button_yes, 149 click: function() { 150 $(this).dialog("close"); 151 } 152 }]; 153 */ 154 var dialogButtons = []; 155 156 // Show the "No" button only on the second dialog 157 if (dsg_testercodes_save_obj.getDialogCount() >= 2) { 158 dialogButtons.unshift({ 159 text: button_no, 160 class: 'dsg-entries-save-form-norepeat', 161 click: function() { 162 dsg_testercodes_save_obj.showDialog(false); 163 $(this).dialog("close"); 164 } 165 }); 166 } 167 168$('<div class="dsg-dialog "></div>').html(question) 169 .dialog({ 170 modal: true, 171 title: 'Sichern Sie Ihre Eingaben!', 172 dialogClass: 'dsg-tester-codes-modal', 173 buttons: dialogButtons, 174 show: { 175 effect: "fadeIn", 176 duration: 500 177 }, 178 open: function() { 179 $('.ui-widget-overlay').addClass('dsgusmo-overlay'); 180 dsg_testercodes_display_register(); 181 }, 182 close: function() { 183 $('.ui-widget-overlay').remove(); 184 $(this).dialog("destroy").remove(); // This line removes the dialog 185 }, 186 }); 187 188} 189 190$('body').on('click', '.dsg-tester-codes-modal .ui-dialog-titlebar-close', function(e) { 191 e.preventDefault(); 192 $('.ui-widget-overlay').remove(); 193 $('.dsg-dialog').dialog("destroy").remove(); 194 195 // Reset the pageLoadTime to current time to restart the timer 196 dsg_testercodes_save_obj.pageLoadTime = new Date().getTime(); // Ensure this variable is accessible 197}); 198 199 200 201 202//=================================================================================== 203// 204// Content PopUp fern öffnen 205// 206//==================================================================================== 207 208$('body').on('click', '.dsg-testcode-form-open', function() { 209 210 211 $('.dsg-infobox-bg').fadeOut(100); 212 $('#dsg-cookie-header-infobox-wrap').fadeOut(100); 213 $('.dsg-dialog').dialog("destroy").remove(); 214 $('.ui-widget-overlay').remove(); 215 216 dsg_testercodes_save_code_dialog (); 217 218}
218); 219 220//=================================================================================== 221// 222// Submit Check 223// 224//==================================================================================== 225 226$('body').on('click', '.dsg-entries-save-submit', function() { 227 228 const dialog = $('.dsg-entries-save-form-norepeat'); 229 const emailInput = $('#dsg-entries-save-form-email'); 230 const emailAddress = emailInput.val(); 231 const emailAddressDefault = emailInput.attr('data-default'); 232 const emailInfo = $('.dsg-entries-save-form-info'); 233 const isValidEmail = dsg_validate_mail(emailAddress); 234 235 const displayError = (errorMessage) => { 236 emailInfo.addClass('error').removeClass('validated').html(errorMessage); 237 }; 238 239 // console.log('ok sende 0' + isValidEmail); 240 241 if (emailAddress !== '' && emailAddress !== emailAddressDefault) { 242 if (isValidEmail) { 243 244 $(this).addClass('active'); 245 dsg_testercodes_save_send( emailAddress ); 246 247 // console.log('ok sende 1' + isValidEmail); 248 } else { 249 displayError(dsg_errors_text_email_invalid); 250 } 251 } else { 252 displayError(dsg_errors_text_email_missing); 253 } 254 255 256}); 257 258 259 260 261//=================================================================================== 262// 263// E-Mail-Addresse wurde eingegeben und geprfüft, nun Versenden 264// 265//==================================================================================== 266 267function dsg_testercodes_save_send (emailAddress) { 268 269 var prj_id = "test-prj_id"; 270 const emailInfo = $('.dsg-entries-save-form-info'); 271 272 project_db_id = $('#dsg-cookie-header').attr('data-project_db_id'); 273 274 var data = { 275 'action': 'dsg_ajax_testercode_email', 276 'email_address': emailAddress, 277 'category_current': category_current, 278 'project_db_id': project_db_id 279 }; 280 281 // console.dir(data); 282 283 $.ajax({ 284 url: dsg_ajax_url, 285 method: 'POST', 286 data: data, 287 success: function(response) { 288 289 response_array = JSON.parse(response); 290 291 // console.dir(response_array); 292 293 if ( response_array['output_feedback'] ) { 294 295 emailInfo.html( response_array['output_feedback'] ); 296 } 297 298 if ( response_array['output_status'] === false ) { 299 300 emailInfo.addClass( "error" ).removeClass( "validated" ); 301 302 } else { 303 304 emailInfo.addClass( "validated" ).removeClass( "error" ); 305 306 } 307 308 $('.dsg-entries-save-submit').removeClass("active"); 309 310 // 311 dsg_testercodes_save_obj.showDialog(false); 312 313 314 }, 315 error: function(response) { 316 console.log(`dsg_testercodes_save_send failed for email address: ${emailAddress}.`); 317 $('.dsg-entries-save-submit').removeClass("active"); 318 } 319 }); 320} 321 322 323//=================================================================================== 324// 325// Eintrag der Ãbertragungsform 326// 327//==================================================================================== 328 329 window.dsg_testercodes_form = function() { 330 331 if ( !$('.dsg-testercode-wrap').length && !$('body').hasClass("loaded-from-cookie") ) { 332 333 let text_intro; 334 let text_main; 335 let text_info; 336 337 const link_slide_start = "<a class='info-row dsg-slider-button dsg-testercode-a' data-sli
337der-id='dsg-testercode-form-inner'>"; 338 const link_slide_end = "</a>"; 339 340 cookiefound = $('.button-cookie-copy-yes:visible').length; 341 342 const support_info = '(<a href="https://datenschutz-generator.de/kontakt-faq/" target="faq" title="Aufruf unserer FAQ und des Kontaktformulars im neuen Fenster">Haben Sie weitere Fragen?</a>)'; 343 344 345 //Test-Generator & kein Cookie gefunden 346 if ( url_parameter.dsgp === undefined && !cookiefound ) { 347 348 text_intro = `Haben Sie einen Wiederherstellungs-Code für Ihre Eingaben im Test-Generator? ${link_slide_start}Klicken Sie dann bitte hier${link_slide_end}.`; 349 text_main = "Wenn Sie unseren Generator zuvor getestet und einen Wiederherstellungs-Code erhalten haben, dann können Sie ihn jetzt eingeben:"; 350 text_info = "Hinweis: Falls Sie die Testversion des Premium-Generators genutzt haben, konnten Sie einen Wiederherstellungs-Code für Ihre Test-Eingaben anfordern. In dem Fall können Sie mit dem Wiederherstellungs-Code Ihre Eingaben hier im Testgenerator erneut laden oder nach dem Erwerb einer Lizenz in Ihr Dokument übertragen."; 351 352 } else if ( url_parameter.dsgp !== undefined && !cookiefound ) { 353 354 text_intro = `Haben Sie einen Wiederherstellungs-Code für Ihre Eingaben im Test-Generator? ${link_slide_start}Klicken Sie dann bitte hier${link_slide_end}.`; 355 text_main = "Wenn Sie unseren Generator schon zuvor getestet und einen Wiederherstellungs-Code erhalten haben, dann können Sie ihn jetzt eingeben:"; 356 text_info = "Hinweis: Falls Sie die Testversion des Premium-Generators genutzt haben, konnten Sie einen Wiederherstellungs-Code für Ihre Test-Eingaben anfordern. In dem Fall können Sie mit dem Wiederherstellungs-Code Ihre Eingaben in Ihr Dokument übertragen."; 357 358 } else if ( url_parameter.dsgp === undefined && cookiefound ) { 359 360 text_intro = `Haben Sie einen Wiederherstellungs-Code für Ihre Eingaben im Test-Generator? Dann können Sie Ihre Eingaben alternativ ${link_slide_start}auf diesem Weg laden${link_slide_end}.`; 361 text_main = "Geben Sie den Wiederherstellungs-Code bitte ein. Sie werden vor dem Laden Ihrer Eingaben um Bestätigung gebeten:"; 362 text_info = "Hinweis: Falls Sie die Testversion des Premium-Generators genutzt haben, wurden Ihre Eingaben in einem Cookie gespeichert, damit sie nicht verloren gehen. Zusätzlich konnten Sie einen speziellen Wiederherstellungs-Code anfordern, da ein Cookie schnell gelöscht werden kann. In Ihrem Fall haben wir ein Cookie mit Ihrer letzten Speicherung gefunden. Sie können dennoch Eingaben mittels eines Wiederherstellungs-Codes laden, z.B. wenn diese von einem anderen Tag sind."; 363 364 } else if ( url_parameter.dsgp !== undefined && cookiefound ) { 365 366 text_intro = `Haben Sie einen Wiederherstellungs-Code für Ihre Eingaben im Test-Generator? ${link_slide_start}Klicken Sie dann bitte hier${link_slide_end}.`; 367 text_main = "Wenn Sie unseren Generator zuvor getestet und einen Code für Ihre Testeinträge erhalten haben, dann können Sie den Code jetzt eingeben"; 368 text_info = "Falls Sie die Testversion des Premium-Generators genutzt haben, wurden Ihre Eingaben in einem Cookie gespeichert, damit sie nicht verloren gehen. Zusätzlich konnten Sie einen speziellen Wiederherstellungs-Code anfordern, da ein Cookie schnell gelöscht werden kann. In Ihrem Fall haben wir ein Cookie mit Ihrer letzten Speicherung gefunden. Sie können dennoch Eingaben mittels eines Wiederherstellungs-Codes in Ihr Dokument übertragen, z.B. wenn diese von einem anderen Tag sind."; 369 370 } 371 372 if ( text_intro && text_main && text_info ) { 373 374 375 376 377 form_out = ` 378 <div class='dsg-testercode-wrap'> 379 380 <p> 381 ${text_intro} 382 </p> 383 </div> 384 <div class='dsg-slider dsg-testercode-slider-content' data-slider-id='dsg-testercode-form-inner'> 385 <p> 386 ${text_main} 387 </p> 388 <p class='dsg-testercode-info'></p> 389 <p class='dsg-testercode-form'> 390 <span class='dsg-testercode-text'>Ihr Wiederherstellungs-Code:</span> 391 <span class='dsg-testercode-input-wrap'> 392 <input id='dsg-testercode-input' class='dsg-testercode-input' name='dsg-testercode-input' value=''> 393 <input type="submit" class='dsg-testercode-submit' value='Suchen'></button> 394 </span> 395 </p> 396 <p class='dsg-testercode-postinfo'> 397 ${text_info} ${support_info} 398 </p> 399 </div>`; 400 401 402 } else { 403 404 form_out = ""; 405 406 } 407 408 409 } else { 410 411 form_out = ""; 412 413 } 414 return form_out; 415} 416 417 418 419 420//=================================================================================== 421// 422// Einen Wiederherstellungscode in der Ãbertragungsform suchen 423// 424//==================================================================================== 425 426$('body').off('click', '.dsg-testercode-submit').on('click', '.dsg-testercode-submit', function() { 427 dsg_testercodes_form_search_prepare(); 428}); 429 430dsg_testercodes_form_search_prepare = function() { 431 let code_in = $('#dsg-testercode-input').val(); 432 let error_message = ""; 433 434 if ( code_in == "" ) { 435 error_message = "Bitte geben Sie einen Wiederherstellungs-Code ein."; 436 } else if (isNaN(code_in)) { 437 error_message = "Der Wiederherstellungs-Code darf nur aus Zahlen bestehen."; 438 } else if (code_in.length < 8) { 439 error_message = `Der Wiederherstellungs-Code muss mindestens achtstellig sein. Der eingegebene Code hat ${code_in.length === 1 ? 'eine Stelle' : code_in.length + ' Stellen'}.`; 440 } else if (code_in.length > 10) { 441 error_message = `Der Wiederherstellungs-Code darf maximal zehnstellig sein. Der eingegebene Code hat ${code_in.length} Stellen.`; 442 } 443 444 if (error_message) { 445 446 $('.dsg-testercode-info').html(error_message); 447 $('.dsg-testercode-info').addClass('red').removeClass('green'); 448 449 } else { 450 451 $('.dsg-testercode-info').removeClass('red').addClass('green'); 452 $('.dsg-testercode-info').html("Bitte warten, Ihre Eingaben werden gesucht."); 453 454 $('.dsg-testercode-submit').addClass("active"); 455 dsg_testercodes_form_search( code_in ); 456 457 } 458} 459 460 461//=================================================================================== 462// 463// Code in DB suchen 464// 465//==================================================================================== 466 467function dsg_testercodes_form_search( code_in ) { 468 469 console.log(`code ist ok: ${code_in}`); 470 471 472 var data = { 473 'action': 'dsg_ajax_testercode_search', 474 'code_in': code_in.trim(), 475 'category': category_current, 476 }; 477 478 $.ajax({ 479 url: dsg_ajax_url, 480 method: 'POST', 481 data: data, 482 success: function(response) { 483 484 response_array = JSON.parse(response); 485 486 console.dir(response_array); 487 488 $('.dsg-testercode-submit').removeClass("active"); 489 490 491 if ( response_array['message'] ) { 492 493 $('.dsg-testercode-info').html( response_array['message'] ); 494 } 495 496 if ( response_array['status'] ) { 497 498 $('.dsg-testercode-info').addClass( "green" ).removeClass( "red" ); 499 500 const transfer_form = ''; 501 502 } else { 503 504 $('.dsg-testercode-info').addClass( "red" ).removeClass( "green" ); 505 } 506 507 508 if ( response_array['status'] && response_array['timestamp'] && response_array['project_json'] ) { 509 510 //Zwischenspeichern der elemente 511 dsg_loaded_project_json_testercode = response_array['project_json']; 512 513 transfer_form = dsg_testercodes_form_transfer( response_array['timestamp']); 514 515 516 $('.dsg-testercode-info').append( transfer_form); 517 518 } 519 520 521 }, 522 error: function(response) { 523 console.log(`dsg_testercodes_form_search failed for code_in: ${code_in}.`); 524 $('.dsg-testercode-submit').removeClass("active"); 525 } 526 }); 527 528 529 530} 531 532 533//=================================================================================== 534//
535// Gefundenes Projekt - Transferform ausgeben 536// 537//==================================================================================== 538function dsg_testercodes_form_transfer ( timestamp_testercode ) { 539 540 time_array = window.dsg_timestamp_to_date( timestamp_testercode ); 541 var date_formated = time_array[0]; 542 var time_formated = time_array[1]; 543 544 text_trans_intro = 'Eingaben vom '+date_formated+' um '+time_formated+'.'; 545 546 transfer_form = ` 547 <p class='dsg-testercode-trans-wrap'> 548 <span class='dsg-testercode-trans-intro'> 549 ${text_trans_intro} 550 </span> 551 <span class='dsg-testercode-trans-submit'> 552 <input type="submit" class="dsg-testercode-submit-transfer" value="Eingaben übertragen"> 553 </span> 554 </p>`; 555 556 console.log("c: "+timestamp_testercode); 557 console.dir(time_array); 558 559 //Transfer Dialog nicht anzeigen 560 dsg_testercodes_save_obj?.showDialog?.call(false); 561 562 return transfer_form; 563} 564 565//=================================================================================== 566// 567// Kopiervorgang/ Transfer der Speicherung 568// 569//==================================================================================== 570 571 572 $('body').on('click', '.dsg-testercode-submit-transfer', function() { 573 574 console.dir(dsg_loaded_project_json_testercode); 575 576 if ( typeof dsg_loaded_project_json_testercode !== "undefined" ) { 577 578 $(".dsg-testercode-submit-transfer").val('Eingaben werden geladen').attr("value",'Eingaben werden geladen').addClass('active'); 579 580 setTimeout(function() { 581 582 // Einträge am Ende vornehmen 583 //dsg_load_enter_values_init nicht nutzen, da der cookieload(aka testercodes) auch mit dsgp funktionieren soll 584 window.dsg_load_enter_values (dsg_loaded_project_json_testercode, "", ""); 585 586 //Transfer Dialog nicht anzeigen 587 dsg_testercodes_save_obj?.showDialog?.call(false); 588 589 //wenn dsgp, dann den transfer in ein projekt kennzeichnen 590 if (url_parameter.dsgp != undefined && dsg_loaded_project_json_testercode["projectid"] != undefined) { 591 592 dsg_testercodes_transfer_save ( dsg_loaded_project_json_testercode["projectid"], url_parameter.dsgp ); 593 594 } 595 596 //Ladehinweis für Code in Dialogen nicht anzeigen 597 $('body').addClass("loaded-from-cookie"); 598 599 $("#dsg-drpld").removeClass('cookiemodal'); 600 601 602 603 setTimeout(function() { 604 605 $(".dsg-testercode-submit-transfer").removeClass('active'); 606 607 608 //Wenn fertig, Ladeanzeige beenden - AuÃe wenn cookie-speicherung, dann anfragen, ob übernehmen 609 dsg_load_projects_dialog( 'dropped affirmative' , 'Eingaben wurden erfolgreich geladen', "Ihre Eingaben wurden erfolgreich geladen, Sie können mit der Bearbeitung des Dokuments fortfahren." ); 610 611 }, 1000); 612 613 }, 2000); 614 615 616 617 } else { 618 619 const support_info = '(<a href="https://datenschutz-generator.de/kontakt-faq/" target="faq" title="Aufruf unserer FAQ und des Kontaktformulars im neuen Fenster">Ansonsten sagen Sie uns bitte Bescheid</a> und teilen uns dabei den Wiederherstellungs-Code mit). Danke!'; 620 621 $('.dsg-testercode-info').html( "Es ist leider etwas schief gelaufen. Bitte geben Sie den Code noch einmal ein." ); 622 } 623 624 if ( response_array['status'] ) { 625 626 627 } 628 629 630 }); 631 632 633//=================================================================================== 634// 635// Anzeigevorgang speichern 636// 637//==================================================================================== 638 639 640function dsg_testercodes_display_register () { 641 642 if ( !$('body').hasClass('dsg-testercodes-display-registered') ) { 643 644 645 var data = { 646 'action': 'dsg_testercodes_display_register', 647 'blanko_value': 'Platzhalter', 648 }; 649 650 // console.log("dsg_testercodes_display_register"); 651 // console.dir(data); 652 653 $.ajax({ 654 url: dsg_ajax_url, 655 method: 'POST', 656 data: data, 657 success: function(response) { 658 659 response_array = JSON.parse(response); 660 console.dir(response_array); 661 662 $('body').addClass('dsg-testercodes-display-registered'); 663 664 }, 665 error: function(response) { 666 console.log(`dsg_testercodes_display_register failed.`); 667 } 668 }); 669 670 } 671 672} 673 674 675//=================================================================================== 676// 677// Kopiervorgang speichern 678// 679//==================================================================================== 680 681 682 683function dsg_testercodes_transfer_save ( project_source_id, project_target_save_id ) { 684 685 686 var data = { 687 'action': 'dsg_ajax_testercode_transfer_save', 688 'project_source_id': project_source_id, 689 'project_target_save_id': project_target_save_id, 690 691 }; 692 693 console.dir(data); 694 695 $.ajax({ 696 url: dsg_ajax_url, 697 method: 'POST', 698 data: data, 699 success: function(response) { 700 701 response_array = JSON.parse(response); 702 703 console.dir(response_array); 704 705 706 707 }, 708 error: function(response) { 709 console.log(`dsg_testercodes_transfer_save failed for code_in: ${code_in}.`); 710 $('.dsg-testercode-submit').removeClass("active"); 711 } 712 }); 713 714 715 716} 717 718 719 720 721//=================================================================================== 722// 723// /jQ 724// 725// 726//==================================================================================== 727 728 729 730 731});
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.