⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.1
Server IP:
185.238.29.86
Server:
Linux server2 6.8.12-6-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-6 (2024-12-19T19:05Z) x86_64
Server Software:
nginx/1.18.0
PHP Version:
8.1.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
var
/
www
/
olasjoys
/
js
/
admin
/
View File Name :
import.js
/** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors <contact@prestashop.com> * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ var importCancelRequest = false; var importContinueRequest = false; $(document).ready(function(){ $('#saveImportMatchs').unbind('click').click(function(){ var newImportMatchs = $('#newImportMatchs').val(); if (newImportMatchs == '') jAlert(errorEmpty); else { var matchFields = ''; $('.type_value').each( function () { matchFields += '&'+$(this).attr('id')+'='+$(this).val(); }); $.ajax({ type: 'POST', url: 'index.php', async: false, cache: false, dataType : "json", data: 'ajax=1&action=saveImportMatchs&tab=AdminImport&token=' + token + '&skip=' + $('input[name=skip]').val() + '&newImportMatchs=' + newImportMatchs + matchFields, success: function(jsonData) { $('#valueImportMatchs').append('<option id="'+jsonData.id+'" value="'+matchFields+'" selected="selected">'+newImportMatchs+'</option>'); $('#selectDivImportMatchs').fadeIn('slow'); }, error: function(XMLHttpRequest, textStatus, errorThrown) { jAlert('TECHNICAL ERROR Details: ' + html_escape(XMLHttpRequest.responseText)); } }); } }); $('#loadImportMatchs').unbind('click').click(function(){ var idToLoad = $('select#valueImportMatchs option:selected').attr('id'); $.ajax({ type: 'POST', url: 'index.php', async: false, cache: false, dataType : "json", data: 'ajax=1&action=loadImportMatchs&tab=AdminImport&token=' + token + '&idImportMatchs=' + idToLoad, success: function(jsonData) { var matchs = jsonData.matchs.split('|') $('input[name=skip]').val(jsonData.skip); for (i=0;i<matchs.length;i++) $('#type_value\\['+i+'\\]').val(matchs[i]).attr('selected',true); }, error: function(XMLHttpRequest, textStatus, errorThrown) { jAlert('TECHNICAL ERROR Details: ' + html_escape(XMLHttpRequest.responseText)); } }); }); $('#deleteImportMatchs').unbind('click').click(function(){ var idToDelete = $('select#valueImportMatchs option:selected').attr('id'); $.ajax({ type: 'POST', url: 'index.php', async: false, cache: false, dataType : "json", data: 'ajax=1&action=deleteImportMatchs&tab=AdminImport&token=' + token + '&idImportMatchs=' + idToDelete , success: function(jsonData) { $('select#valueImportMatchs option[id=\''+idToDelete+'\']').remove(); if ($('select#valueImportMatchs option').length == 0) $('#selectDivImportMatchs').fadeOut(); }, error: function(XMLHttpRequest, textStatus, errorThrown) { jAlert('TECHNICAL ERROR Details: ' + html_escape(XMLHttpRequest.responseText)); } }); }); $('#import_stop_button').unbind('click').click(function(){ if (importContinueRequest) { $('#importProgress').modal('hide'); importContinueRequest = false; window.location.href = window.location.href.split('#')[0]; // reload same URL but do not POST again (so in GET without param) } else { importCancelRequest = true; $('#import_details_progressing').hide(); $('#import_details_finished').hide(); $('#import_details_stop').show(); $('#import_stop_button').hide(); $('#import_close_button').hide(); } }); $('#import_continue_button').unbind('click').click(function(){ $('#import_continue_button').hide(); importContinueRequest = false; $('#import_progress_div').show(); $('#import_details_warning ul, #import_details_info ul').html(''); $('#import_details_warning, #import_details_info').hide(); importNow(0, 5, -1, false, {}, 0); }); }); function validateImportation(mandatory) { var type_value = []; var seted_value = []; var elem; var col = 'unknow'; toggle(getE('error_duplicate_type'), false); toggle(getE('required_column'), false); for (i = 0; elem = getE('type_value['+i+']'); i++) { if (seted_value[elem.options[elem.selectedIndex].value]) { scroll(0,0); toggle(getE('error_duplicate_type'), true); return false; } else if (elem.options[elem.selectedIndex].value != 'no') seted_value[elem.options[elem.selectedIndex].value] = true; } for (needed in mandatory) if (!seted_value[mandatory[needed]]) { scroll(0,0); toggle(getE('required_column'), true); getE('missing_column').innerHTML = mandatory[needed]; elem = getE('type_value[0]'); for (i = 0; i < elem.length; ++i) { if (elem.options[i].value == mandatory[needed]) { getE('missing_column').innerHTML = elem.options[i].innerHTML; break ; } } return false } importNow(0, 5, -1, true, {}, 0); // starts with 5 elements to import, but the limit will be adapted for next calls automatically. return false; // We return false to avoid form to be posted on the old Controller::postProcess() action } function importNow(offset, limit, total, validateOnly, crossStepsVariables, moreStep) { if (offset == 0 && validateOnly) updateProgressionInit(); // first step only, in validation mode if (offset == 0 && !validateOnly) updateProgression(0, total, limit, false, moreStep, null); var data = $('form#import_form').serializeArray(); data.push({'name': 'crossStepsVars', 'value': JSON.stringify(crossStepsVariables)}); var startingTime = new Date().getTime(); $.ajax({ type: 'POST', url: 'index.php?ajax=1&action=import&tab=AdminImport&offset='+offset+'&limit='+limit+'&token='+token+(validateOnly?'&validateOnly=1':'')+((moreStep>0)?'&moreStep='+moreStep:''), cache: false, dataType: "json", data: data, success: function(jsonData) { if (jsonData.totalCount) { total = jsonData.totalCount; } if (jsonData.informations && jsonData.informations.length > 0) { updateValidationInfo('<li>'+jsonData.informations.join('</li><li>')+'</li>'); } if (jsonData.warnings && jsonData.warnings.length > 0) { if (validateOnly) updateValidationError('<li>'+jsonData.warnings.join('</li><li>')+'</li>', true); else updateProgressionError('<li>'+jsonData.warnings.join('</li><li>')+'</li>', true); } if (jsonData.errors && jsonData.errors.length > 0) { if (validateOnly) updateValidationError('<li>'+jsonData.errors.join('</li><li>')+'</li>', false); else updateProgressionError('<li>'+jsonData.errors.join('</li><li>')+'</li>', false); return; // If errors, stops process } // Here, no errors returned if (!jsonData.isFinished == true) { // compute time taken by previous call to adapt amount of elements by call. var previousDelay = new Date().getTime() - startingTime; var targetDelay = 5000; // try to keep around 5 seconds by call // acceleration will be limited to 4 to avoid newLimit to increase too fast (NEVER reach 30 seconds by call!). var acceleration = Math.min(4, (targetDelay / previousDelay)); // keep between 5 to 100 elements to process in one call var newLimit = Math.min(100, Math.max(5, Math.floor(limit * acceleration))); var newOffset = offset + limit; // update progression if (validateOnly) { updateValidation(jsonData.doneCount, total, jsonData.doneCount+newLimit); } else { updateProgression(jsonData.doneCount, total, jsonData.doneCount+newLimit, false, moreStep, jsonData.moreStepLabel); } if (importCancelRequest == true) { $('#importProgress').modal('hide'); importCancelRequest = false; window.location.href = window.location.href.split('#')[0]; // reload same URL but do not POST again (so in GET without param) return; // stops execution } // process next group of elements importNow(newOffset, newLimit, total, validateOnly, jsonData.crossStepsVariables, moreStep); // checks if we could go over post_max_size setting. Warns when reach 90% of the actual setting if (jsonData.nextPostSize >= jsonData.postSizeLimit * 0.9) { var progressionDone = jsonData.doneCount * 100 / total; var increase = Math.max(7, parseInt(jsonData.postSizeLimit/(progressionDone*1024*1024))) + 1; // min 8MB $('#import_details_post_limit_value').html(increase+" MB"); $('#import_details_post_limit').show(); } } else { if (validateOnly) { // update validation bar and process real import updateValidation(total, total, total); if (!$('#import_details_warning').is(":visible")) { // no warning, directly import now $('#import_progress_div').show(); importNow(0, 5, total, false, {}, 0); } else { // warnings occured. Ask if should continue to true import now importContinueRequest = true; $('#import_continue_button').show(); } } else { if (jsonData.oneMoreStep > moreStep) { updateProgression(total, total, total, false, false, null); // do not close now importNow(0, 5, total, false, jsonData.crossStepsVariables, jsonData.oneMoreStep); } else { updateProgression(total, total, total, true, moreStep, jsonData.moreStepLabel); } } } }, error: function(XMLHttpRequest, textStatus, errorThrown) { if (textStatus == 'parsererror') { textStatus = 'Technical error: Unexpected response returned by server. Import stopped.'; } if (validateOnly) { updateValidationError(textStatus, false); } else { updateProgressionError(textStatus, false); } } }); } function updateProgressionInit() { $('#importProgress').modal({backdrop: 'static', keyboard: false, closable: false}); $('#importProgress').modal('show'); $('#importProgress').on('hidden.bs.modal', function () { window.location.href = window.location.href.split('#')[0]; // reload same URL but do not POST again (so in GET without param) }) $('#import_details_progressing').show(); $('#import_details_finished').hide(); $('#import_details_error').hide(); $('#import_details_warning, #import_details_info').hide(); $('#import_details_stop').hide(); $('#import_details_post_limit').hide(); $('#import_details_error ul').html(''); $('#import_details_warning ul, #import_details_info ul').html(''); $('#import_validation_details').html($('#import_validation_details').attr('default-value')); $('#validate_progressbar_done').width('0%'); $('#validate_progressbar_done').parent().addClass('active progress-striped'); $('#validate_progression_done').html('0'); $('#validate_progressbar_done2').width('0%'); $('#validate_progressbar_next').width('0%'); $('#validate_progressbar_next').removeClass('progress-bar-danger'); $('#validate_progressbar_next').addClass('progress-bar-info'); $('#import_progress_div').hide(); $('#import_progression_details').html($('#import_progression_details').attr('default-value')); $('#import_progressbar_done').width('0%'); $('#import_progressbar_done').parent().addClass('active progress-striped'); $('#import_progression_done').html('0'); $('#import_progressbar_next').width('0%'); $('#import_progressbar_next').removeClass('progress-bar-danger'); $('#import_progressbar_next').addClass('progress-bar-success'); $('#import_stop_button').show(); $('#import_close_button').hide(); $('#import_continue_button').hide(); } function updateValidation(currentPosition, total, nextPosition) { if (currentPosition > total) currentPosition = total; if (nextPosition > total) nextPosition = total; var progressionDone = currentPosition * 100 / total; var progressionNext = nextPosition * 100 / total; if (total > 0) { $('#import_validate_div').show(); $('#import_validation_details').html(currentPosition + '/' + total); $('#validate_progressbar_done').width(progressionDone+'%'); $('#validate_progression_done').html(parseInt(progressionDone)); $('#validate_progressbar_next').width((progressionNext-progressionDone)+'%'); } if (currentPosition == total && total == nextPosition) { $('#validate_progressbar_done').parent().removeClass('active progress-striped'); } } function updateProgression(currentPosition, total, nextPosition, finish, moreStep, moreStepLabel) { if (currentPosition > total) currentPosition = total; if (nextPosition > total) nextPosition = total; var progressionDone = currentPosition * 100 / total; var progressionNext = nextPosition * 100 / total; if (total > 0) { $('#import_progress_div').show(); $('#import_progression_details').html(currentPosition + '/' + total); if (moreStep == 0) { $('#import_progressbar_done').width(progressionDone+'%'); $('#import_progression_done').html(parseInt(progressionDone)); $('#import_progressbar_next').width((progressionNext-progressionDone)+'%'); } else { $('#import_progressbar_next').width('0%'); $('#import_progressbar_done').width((100-progressionDone)+'%'); $('#import_progressbar_done2').width(progressionDone+'%'); if (moreStepLabel) $('#import_progressbar_done2 span').html(moreStepLabel); } } if (finish) { $('#import_progressbar_done').parent().removeClass('active progress-striped'); $('#import_details_post_limit').hide(); $('#import_details_progressing').hide(); $('#import_details_finished').show(); $('#importProgress').modal({keyboard: true, closable: true}); $('#import_stop_button').hide(); $('#import_close_button').show(); } } function updateValidationError(message, forWarnings) { $('#import_details_progressing').hide(); $('#import_details_finished').hide(); if (forWarnings) { $('#import_details_warning ul').append(message); $('#import_details_warning').show(); } else { $('#import_details_error ul').append(message); $('#import_details_error').show(); $('#validate_progressbar_next').addClass('progress-bar-danger'); $('#validate_progressbar_next').removeClass('progress-bar-info'); $('#import_stop_button').hide(); $('#import_close_button').show(); } } function updateValidationInfo(message) { $('#import_details_progressing').hide(); $('#import_details_finished').hide(); $('#import_details_info ul').append(message); $('#import_details_info').show(); } function updateProgressionError(message, forWarnings) { $('#import_details_progressing').hide(); $('#import_details_finished').hide(); if (forWarnings) { $('#import_details_warning ul').append(message); $('#import_details_warning').show(); } else { $('#import_details_error ul').append(message); $('#import_details_error').show(); $('#import_progressbar_next').addClass('progress-bar-danger'); $('#import_progressbar_next').removeClass('progress-bar-success'); $('#import_stop_button').hide(); $('#import_close_button').show(); } } function html_escape(str) { return String(str) .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(/</g, '<') .replace(/>/g, '>'); }