Current File : /home/n742ef5/royalanteam.com/wp-content/plugins/security-malware-firewall/js/spbc-table.min.js.map |
{"version":3,"file":"spbc-table.min.js","sources":["spbc-table.js"],"sourcesContent":["let spbcBulkAction = null;\nconst noConfirmActions = spbcGetNoConfirmActions(spbcPublic);\n\n/**\n * Reloads scanner accordion and set all the listeners\n * @param {string|null} interactControlTab ajaxResult If is set, will use this var as interactivity data.\n * @param {string|null} updateText\n */\nfunction spbcReloadAccordion(interactControlTab = null, updateText = '') {\n spbcSendAJAXRequest(\n {action: 'spbc_scanner_tab__reload_accordion'},\n {\n notJson: true,\n callback: function(result, data, params, obj) {\n jQuery(obj).accordion('destroy');\n jQuery(obj).html(result);\n jQuery(obj).accordion({\n header: 'h3',\n heightStyle: 'content',\n collapsible: true,\n active: false,\n });\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcTblPaginationListen();\n spbcTblSortListen();\n spbcStartShowHide();\n if (interactControlTab !== null && updateText !== null) {\n interactScannerTab(interactControlTab, updateText);\n }\n },\n },\n jQuery('#spbc_scan_accordion'),\n );\n}\n\n/**\n * Open refreshed tab after scanner reload.\n * @param {string} controlTab\n * @param {string} updateText\n */\nfunction interactScannerTab(controlTab, updateText) {\n let refreshControlTabSelector;\n let headerSelector;\n let headerUpdateStatus;\n\n if (\n typeof(controlTab) !== 'string' ||\n controlTab === '' ||\n typeof(updateText) !== 'string' ||\n updateText === ''\n ) {\n return;\n }\n\n // init refresh controlled tabs\n refreshControlTabSelector = jQuery('#spbc_scan_accordion div[refresh_control_tab=\"' + controlTab + '\"]')[0];\n\n // init header to click\n headerSelector = 'h3[aria-controls=spbc_scan_accordion_tab_' + controlTab + ']';\n headerSelector = jQuery(headerSelector)[0];\n\n if (\n typeof(refreshControlTabSelector) === 'undefined' ||\n typeof(headerSelector) === 'undefined'\n ) {\n return;\n }\n\n // show updated caption\n jQuery('<div class=\"spbc_accordion_header_caption__update_status\"></div>')\n .appendTo(headerSelector);\n headerUpdateStatus = jQuery('.spbc_accordion_header_caption__update_status');\n jQuery('<div class=\"spbc_accordion_header_caption__updated\">' + updateText + '</div>')\n .appendTo(headerUpdateStatus);\n\n // do click to open tab\n headerSelector.click();\n\n // highlight header\n refreshControlTabSelector.setAttribute(\n 'class',\n 'ui-accordion-header ui-corner-top ui-state-default ui-accordion-icons ui-accordion-header-active',\n );\n\n // hide all actions on partial reload\n jQuery('.row-actions').hide();\n}\n\n/**\n * Table bulk actions\n */\nfunction spbcTblBulkActionsListen() {\n jQuery('.tbl-bulk_actions-all--apply')\n .off('click')\n .on('click', function() {\n // @ToDo perhaps spbcScanner.active is not defined anywhere.\n // check this and implement `active` status in the right place\n if ( spbcScanner.active ) {\n alert(spbcTableLocalize.scannerIsActive);\n return;\n }\n\n let self = jQuery(this);\n let allowedBulkActions = [\n 'approve',\n 'disapprove',\n 'send',\n 'check_analysis_status',\n 'approve_page',\n 'disapprove_page',\n 'cure',\n 'delete_from_analysis_log',\n 'restore',\n ];\n let action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n\n if ( allowedBulkActions.indexOf( action ) !== -1 ) {\n if (!noConfirmActions.any.includes(action)) {\n if (!confirm(spbcTable.warning_bulk)) {\n return;\n }\n }\n let data = {\n action: 'spbc_tbl-action--bulk',\n add_action: action,\n status: self.parents('.tbl-root').attr('type'),\n };\n\n if (action === 'cure') {\n spbcScannerCureBulk(self, true);\n return;\n }\n\n if (action === 'restore') {\n spbcScannerRestoreBulk(self, true);\n }\n\n if (action === 'delete_from_analysis_log') {\n const selectedItems = self.closest('#spbc_tbl__scanner_analysis_log').find('.cb-select');\n let fileIds = [];\n\n selectedItems.each(function(index, element) {\n const elementId = jQuery(element).val();\n fileIds.push(elementId);\n });\n data.file_ids = fileIds;\n }\n\n let params = {\n button: this,\n spinner: self.children('.tbl-preloader--small'),\n callback: function(out) {\n spbcReloadAccordion();\n if ( action === 'check_analysis_status' && typeof out !== 'undefined') {\n let html = '<p> Analysis status updated.' +\n ' Total: ' + out.counters.total +\n ', updated: ' + out.counters.updated +\n ', skipped: ' + out.counters.skipped +\n ', failed: ' + out.counters.failed +\n ', queued: ' + out.counters.queued +\n '</p>';\n spbcModal.open().put( html );\n }\n if ( action === 'send' && typeof out !== 'undefined') {\n let html = '<p> Files have been sent: ' +\n out.files_sent_counter +\n '</p>';\n spbcModal.open().put(html);\n }\n },\n errorOutput: function( errorText, comment ) {\n if ( comment ) {\n errorText = errorText + '<br>Additional information:<br>' + comment;\n }\n spbcModal.open().putError( errorText );\n },\n timeout: 60000,\n };\n\n spbcSendAJAXRequest(data, params);\n } else {\n alert('This action is not supported for all files yet =(');\n }\n });\n\n jQuery('.tbl-bulk_actions--apply')\n .off('click')\n .on('click', function(e) {\n let self = spbcBulkAction || jQuery(this);\n let action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n if (!spbcBulkAction && !noConfirmActions.any.includes(action) && !confirm(spbcTable.warning_bulk)) {\n return;\n }\n\n spbcBulkAction = self;\n\n if (action === 'cure') {\n spbcScannerCureBulk(jQuery(this), false);\n return;\n }\n\n if (action === 'restore') {\n spbcScannerRestoreBulk(jQuery(this), false);\n return;\n }\n\n if (action === 'delete_from_analysis_log') {\n spbcScannerAnalysisLogDeleteFromLog(jQuery(this));\n return;\n }\n\n if (action === 'allow' || action === 'ban') {\n let sendAction = action === 'ban' ? 'deny' : action;\n let items = self.parents('.tbl-root').find('.cb-select:checked');\n if (items) {\n self.children('.tbl-preloader--small').show();\n items.each(function() {\n let ip = jQuery(this).parents('tr').find('.tbl-row_action--'+action).data('ip');\n spbcSecLogsFilterIp(ip, sendAction, true);\n jQuery(this).prop('checked', false);\n });\n }\n self.children('.tbl-preloader--small').hide();\n let msg = action === 'allow' ? 'Allowed' : 'Banned';\n let html = '<p> Success. Selected IPs have been ' +\n msg +\n '. Changes will be applied within 10 minutes.' +\n '</p>';\n spbcModal.open().put( html );\n setTimeout(spbcReloadAccordion, 1900);\n\n return;\n }\n\n if ( action !== '-1' && self.parents('.tbl-root').find('.cb-select').is(':checked') ) {\n self.children('.tbl-preloader--small').show();\n // eslint-disable-next-line max-len\n if (self.parents('.tbl-root').find('.cb-select:checked').first().parents('tr').find('.tbl-row_action--'+action)[0]) {\n self\n .parents('.tbl-root')\n .find('.cb-select:checked')\n .first()\n .parents('tr')\n .find('.tbl-row_action--'+action)\n .click();\n self.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n } else {\n self.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n self.click();\n }\n } else {\n self.children('.tbl-preloader--small').hide();\n spbcBulkAction = null;\n if ( action === 'check_analysis_status' || action === 'disapprove' ) {\n let html = '<p> All available files are updated.' + '</p>';\n spbcModal.open().put( html );\n }\n if ( action === 'send') {\n let html = '<p> All available files are sent.' + '</p>';\n spbcModal.open().put( html );\n }\n setTimeout(spbcReloadAccordion, 1900);\n }\n // reset spbcBulkAction if action is restricted\n if (noConfirmActions.restricted.includes(action)) {\n spbcBulkAction = null;\n }\n });\n}\n\n/**\n * Cure selected files\n * @param {obj} current\n * @param {boolean} allItems\n */\nfunction spbcScannerCureBulk(current, allItems = false) {\n let selectedIds = [];\n const selector = allItems ? '.cb-select' : '.cb-select:checked';\n let selectedItems = current.closest('#spbc_tbl__scanner_cure_log').find(selector);\n\n if (selectedItems.length === 0) {\n selectedItems = current.closest('#spbc_scan_accordion_tab_critical').find(selector);\n }\n\n if (selectedItems.length === 0) {\n alert('Please, select elements.');\n return;\n }\n\n selectedItems.each(function(index, element) {\n const elementId = jQuery(element).val();\n selectedIds.push(elementId);\n });\n\n const data = {\n action: 'spbc_cure_selected',\n security: spbcSettings.ajax_nonce,\n selectedIds: selectedIds,\n };\n jQuery.ajax({\n type: 'POST',\n url: spbcSettings.ajaxurl,\n data: data,\n beforeSend: function() {\n current\n .closest('#spbc_tbl__scanner_cure_log')\n .find('.tbl-button---white_blue .tbl-preloader--in_button')\n .show();\n },\n success: function(result) {\n current\n .closest('#spbc_tbl__scanner_cure_log')\n .find('.tbl-button---white_blue .tbl-preloader--in_button')\n .hide();\n const displayData = result.data;\n // prepare output\n let divWrapper = document.createElement('div');\n let pMessage = document.createElement('p');\n let pCounters = document.createElement('p');\n let divFiles = document.createElement('div');\n let bSeeMore = document.createElement('b');\n let pSeeMore = document.createElement('p');\n bSeeMore.innerHTML = 'See more details in the threats log.';\n pSeeMore.append(bSeeMore);\n const failedToCure = displayData.hasOwnProperty('failed_to_cure') ? displayData.failed_to_cure : [];\n if (failedToCure.length > 0) {\n divFiles.innerHTML = failedToCure.join('</br>');\n }\n pMessage.innerHTML = displayData.message;\n pCounters.innerHTML += 'Cured: ' +\n (\n displayData.hasOwnProperty('cured_on_request') ?\n displayData.cured_on_request :\n 0\n );\n pCounters.innerHTML += ', already cured: ' +\n (\n displayData.hasOwnProperty('skipped') ?\n displayData.skipped :\n 0\n );\n pCounters.innerHTML += ', failed to cure: ' + failedToCure.length;\n\n divWrapper.append(pMessage);\n divWrapper.append(pCounters);\n divWrapper.append(divFiles);\n if (failedToCure.length > 0) {\n divWrapper.append(pSeeMore);\n }\n if (result.success) {\n spbcModal.open().put(divWrapper.outerHTML);\n } else {\n spbcModal.open().putError(divWrapper.outerHTML);\n }\n document.addEventListener('spbcModalClosed', function( e ) {\n spbcReloadAccordion();\n });\n },\n });\n}\n\n/**\n * Restore selected files\n * @param {obj} current\n * @param {boolean} allItems\n */\nfunction spbcScannerRestoreBulk(current, allItems = false) {\n let selectedIds = [];\n const selector = allItems ? '.cb-select' : '.cb-select:checked';\n const selectedItems = current.closest('#spbc_tbl__scanner_cure_log').find(selector);\n\n if (selectedItems.length === 0) {\n alert('Please, select elements.');\n return;\n }\n\n selectedItems.each(function(index, element) {\n const elementId = jQuery(element).val();\n selectedIds.push(elementId);\n });\n\n const data = {\n action: 'spbc_restore_selected',\n security: spbcSettings.ajax_nonce,\n selectedIds: selectedIds,\n };\n jQuery.ajax({\n type: 'POST',\n url: spbcSettings.ajaxurl,\n data: data,\n beforeSend: function() {\n current\n .closest('#spbc_tbl__scanner_cure_log')\n .find('.tbl-button---white_blue .tbl-preloader--in_button')\n .show();\n },\n success: function(result) {\n current\n .closest('#spbc_tbl__scanner_cure_log')\n .find('.tbl-button---white_blue .tbl-preloader--in_button')\n .hide();\n const displayData = result.data;\n // prepare output\n let divWrapper = document.createElement('div');\n let pMessage = document.createElement('p');\n let pCounters = document.createElement('p');\n let divFiles = document.createElement('div');\n const failedToRestore = displayData.hasOwnProperty('failed_to_restore') ?\n displayData.failed_to_restore :\n [];\n if (failedToRestore.length > 0) {\n divFiles.innerHTML = failedToRestore.join('</br>');\n }\n pMessage.innerHTML = displayData.message;\n pCounters.innerHTML += 'Restored: ' +\n (\n displayData.hasOwnProperty('restored_on_request') ?\n displayData.restored_on_request :\n 0\n );\n pCounters.innerHTML += ', unchanged or already restored: ' +\n (\n displayData.hasOwnProperty('skipped') ?\n displayData.skipped :\n 0\n );\n pCounters.innerHTML += ', failed to restore: ' + failedToRestore.length;\n\n divWrapper.append(pMessage);\n divWrapper.append(pCounters);\n divWrapper.append(divFiles);\n\n if (result.success) {\n spbcModal.open().put(divWrapper.outerHTML);\n } else {\n spbcModal.open().putError(divWrapper.outerHTML);\n }\n document.addEventListener('spbcModalClosed', function( e ) {\n spbcReloadAccordion();\n });\n },\n });\n}\n\n/**\n * Table row actions\n */\nfunction spbcTblRowActionsListen() {\n jQuery('.tbl-row_action--ajax')\n .off('click')\n .on('click', function() {\n if ( spbcScanner.active ) {\n alert(spbcTableLocalize.scannerIsActive);\n return;\n }\n let self = jQuery(this);\n let data = {\n action: 'spbc_tbl-action--row',\n add_action: self.attr('row-action'),\n id: self.parents('.row-actions').attr('uid'),\n cols: self.parents('.row-actions').attr('cols_amount'),\n page_url: self.parent().attr('uid'),\n page_id: self.parent().attr('page_id'),\n };\n let params = {\n callback: spbcTblRowActionsCallback,\n errorOutput: function(msg, comment, hideSupportLink) {\n spbcModal.open().putError( msg, hideSupportLink );\n },\n spinner: self.parent().siblings('.tbl-preloader--tiny'),\n };\n\n // @ToDo delete this timeout after ready task #10014\n if ( self.attr('row-action') === 'delete' ) {\n params.timeout = 60000;\n }\n\n let fileName = self.parent().parent()[0].firstChild.innerHTML;\n let confirmationHeader = spbcTable['warning_h_'+self.attr('row-action')] || spbcTable.warning_default;\n let confirmationText = spbcTable['warning_t_'+self.attr('row-action')] || '';\n // init row actions with no confirm required\n if ( spbcBulkAction || noConfirmActions.any.includes(data.add_action) ) {\n // do not request user confirmation if the action is excluded or if it is a bulk action\n spbcSendAJAXRequest(data, params, self.parents('tr'));\n } else {\n // do request confirmation otherwise\n const yesButtonText = self.attr('row-action') === 'quarantine' ? 'Quarantine' : 'Yes';\n const noButtonText = self.attr('row-action') === 'quarantine' ? 'Cancel' : 'No';\n spbcModal.open().confirm(confirmationHeader, confirmationText, fileName, (confirmed) => {\n if (confirmed) {\n spbcSendAJAXRequest(data, params, self.parents('tr'));\n }\n }, yesButtonText, noButtonText);\n }\n });\n}\n\n/**\n * Row actions with no confirm required.\n * @param {object} spbcPublic Global localized SPBC object\n * @return {{}}\n */\nfunction spbcGetNoConfirmActions(spbcPublic) {\n let noConfirmActionsEmpty = {\n 'any': [],\n 'restricted': [],\n 'defaults': [],\n };\n let noConfirmActions = noConfirmActionsEmpty;\n try {\n if ( typeof spbcPublic !== 'undefined' && spbcPublic.hasOwnProperty('no_confirm_row_actions')) {\n noConfirmActions = JSON.parse(spbcPublic.no_confirm_row_actions);\n }\n if (\n typeof noConfirmActions.any.includes !== 'function' ||\n typeof noConfirmActions.restricted.includes !== 'function' ||\n typeof noConfirmActions.defaults.includes !== 'function'\n ) {\n noConfirmActions = noConfirmActionsEmpty;\n }\n } catch (e) {\n noConfirmActions = noConfirmActionsEmpty;\n }\n return noConfirmActions;\n}\n\n/**\n * Callback for table row actions\n *\n * @param {obj|string} result\n * @param {obj} data\n * @param {obj} params\n * @param {obj} obj\n */\nfunction spbcTblRowActionsCallback(result, data, params, obj) {\n if (result.color) {\n obj.css({background: result.background, color: result.color});\n }\n if (result.html) {\n obj.parent().parent().parent().prepend(result.html);\n setTimeout(function() {\n obj.fadeOut(300);\n }, 1500);\n if ( ! spbcBulkAction) {\n setTimeout(spbcReloadAccordion, 1900);\n }\n }\n\n if (\n data.add_action === 'copy_file_info'\n ) {\n if (result.success === true && result.data.file_info) {\n window.prompt(\n 'Copy the file info below and send it to ' + spbcSettings['wl_support_email'],\n result.data.file_info,\n );\n } else {\n let errorText = (typeof result.data.error !== 'undefined') ?\n result.data.error :\n 'Unknown copy_file_info error';\n spbcModal.open().putError( errorText );\n }\n }\n\n if (result.temp_html) {\n let tmp=obj.html();\n obj.html(result.temp_html);\n if (result.updated_template !== undefined) {\n let updatedType = result.updated_template_type;\n let template = result.updated_template;\n let rowsInTemplate = jQuery(template).find('.wp-list-table tbody tr');\n let countRowInTemplate = rowsInTemplate.length;\n let targetTab = jQuery('[aria-controls=\"spbc_scan_accordion_tab_' + updatedType + '\"]');\n\n if (targetTab.length > 0) {\n let table = jQuery('#spbc_tbl__scanner_' + updatedType);\n // Count files in header\n jQuery('.spbc_bad_type_count.' + updatedType + '_counter').text(countRowInTemplate);\n // Count rows in table\n let countExistingRows = table.find('.wp-list-table tbody tr').length;\n table.remove();\n jQuery('#spbc_scan_accordion_tab_' + updatedType).append(template);\n // Marked new rows\n jQuery(jQuery('#spbc_scan_accordion_tab_' + updatedType)\n .find('.wp-list-table tbody tr'))\n .each(function(index, element) {\n if (++index > countExistingRows) {\n jQuery(element).css('outline', '1px solid green');\n }\n });\n targetTab.click();\n } else {\n if (updatedType === 'analysis_log') {\n // eslint-disable-next-line max-len\n let tabHeaderTemplate = '<h3 class=\"ui-accordion-header ui-corner-top ui-state-default ui-accordion-icons ui-accordion-header-collapsed ui-corner-all\" role=\"tab\" id=\"ui-id-2\" aria-controls=\"spbc_scan_accordion_tab_analysis_log\" aria-selected=\"false\" aria-expanded=\"false\" tabindex=\"-1\"><span class=\"ui-accordion-header-icon ui-icon ui-icon-triangle-1-e\"></span><a href=\"#\">Analysis Log (<span class=\"spbc_bad_type_count analysis_log_counter\">' + countRowInTemplate + '</span>)</a></h3>';\n // eslint-disable-next-line max-len\n let tabBodyTemplate = '<div id=\"spbc_scan_accordion_tab_analysis_log\" class=\"ui-accordion-content ui-corner-bottom ui-helper-reset ui-widget-content\" aria-labelledby=\"ui-id-2\" role=\"tabpanel\" aria-hidden=\"true\" style=\"display: none;\"><p class=\"spbc_hint\">Files sent for analysis.</p><div id=\"spbc_tbl__scanner_analysis_log\" type=\"analysis_log\" class=\"tbl-root\">' +\n template +\n '</div>';\n jQuery('#spbc_scan_accordion_tab_critical').after(tabHeaderTemplate + tabBodyTemplate);\n targetTab.click();\n }\n }\n }\n setTimeout(function() {\n obj\n .html(tmp)\n .css({background: 'inherit'})\n .find('.column-primary .row-actions .tbl-row_action--' + data.add_action)\n .remove();\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcStartShowHide();\n }, 5000);\n }\n if (spbcBulkAction) {\n spbcBulkAction.click();\n }\n}\n\n/**\n * Table pagination actions\n */\nfunction spbcTblPaginationListen() {\n let data = {action: 'spbc_tbl-pagination'};\n let params = {callback: spbcTblPaginationCallback, notJson: true};\n jQuery('.tbl-pagination--button').on('click', function() {\n jQuery(this).parents('.tbl-root').find('.tbl-pagination--button').attr('disabled', 'disabled');\n });\n jQuery('.tbl-pagination--go').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = self.siblings('.tbl-pagination--curr_page').val();\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n jQuery('.tbl-pagination--prev').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = self.parents('.tbl-pagination--wrapper').attr('prev_page');\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n jQuery('.tbl-pagination--next').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = self.parents('.tbl-pagination--wrapper').attr('next_page');\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n jQuery('.tbl-pagination--end').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = self.parents('.tbl-pagination--wrapper').attr('last_page');\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n jQuery('.tbl-pagination--start').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = 1;\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n}\n\n/**\n * Callback for Table pagination actions\n *\n * @param {obj|string} result\n * @param {obj} data\n * @param {obj} params\n * @param {obj} obj\n */\nfunction spbcTblPaginationCallback(result, data, params, obj) {\n jQuery(obj)\n .html(result)\n .find('.tbl-pagination--button').removeAttr('disabled');\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcTblPaginationListen();\n spbcTblSortListen();\n spbcStartShowHide();\n}\n\n/**\n * Table sort actions\n */\nfunction spbcTblSortListen() {\n let params = {callback: spbcTblSortCallback, notJson: true};\n jQuery('.tbl-column-sortable').on('click', function(e) {\n if (e.target.classList.contains('tbl-sorting_indicator')) {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n let domain = obj.attr('type') == 'links'? jQuery('#spbc_tbl__scanner__outbound_links b').html(): '';\n let data = {\n action: 'spbc_tbl-sort',\n order_by: self.attr('id'),\n order: self.attr('sort_direction'),\n type: obj.attr('type'),\n domain: domain,\n };\n spbcSendAJAXRequest(data, params, obj);\n }\n });\n}\n\n/**\n * Callback for Table sort actions\n *\n * @param {obj|string} result\n * @param {obj} data\n * @param {obj} params\n * @param {obj} obj\n */\nfunction spbcTblSortCallback(result, data, params, obj) {\n jQuery(obj).html(result);\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcTblPaginationListen();\n spbcTblSortListen();\n}\n\njQuery(document).ready(function() {\n // Table. Row actions handler\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcTblPaginationListen();\n spbcTblSortListen();\n spbcEATUpdateIntervalStart();\n});\n\n/**\n * Switching table handler\n * Using by inline php code\n *\n * @param {obj} obj\n * @param {obj} table\n *\n */\nfunction spbcScannerSwitchTable(obj, table) {/* eslint-disable-line no-unused-vars */\n let _obj = jQuery(obj);\n let domain = _obj.parents('.row-actions').attr('uid');\n let data = {action: 'spbc_tbl-switch', type: table, domain: domain};\n let params = {callback: spbcTblPaginationCallback, notJson: true};\n spbcSendAJAXRequest(data, params, _obj.parents('.tbl-root'));\n}\n\n/**\n * Open/close table rows handler\n * Using by inline php code\n *\n * @param {string} blockId\n * @param {string} columnKey\n */\nfunction spbcShowHideRows(blockId, columnKey) {/* eslint-disable-line no-unused-vars */\n let className = '.' + columnKey + '_block_' + blockId;\n let block = jQuery(className);\n if (block.hasClass('mob_table_active')) {\n block.removeClass('mob_table_active');\n } else {\n block.addClass('mob_table_active');\n }\n}\n\n/**\n * Starts an interval to update the analysis log table and stats every 6 seconds.\n */\nfunction spbcEATUpdateIntervalStart() {\n setInterval(() => {\n // Check if the analysis log tab is present\n if (document.querySelector('div[refresh_control_tab=\"analysis_log\"]') !== null) {\n // Add a spinner to the analysis log tab header\n spbcEATAddSpinner();\n // Update the analysis log table\n spbcUpdateTableEAT();\n // Update the analysis log stats\n spbcUpdateStatsEAT();\n }\n }, 60000);\n}\n\n/**\n * Adds a spinner to the analysis log tab header if it doesn't already exist.\n */\nfunction spbcEATAddSpinner() {\n if (document.getElementById('analysis_log_counter_spinner') === null) {\n const refreshTab = document.querySelector('h3[aria-controls=\"spbc_scan_accordion_tab_analysis_log\"]');\n if (refreshTab !== null) {\n const spinner = document.createElement('img');\n spinner.class = 'spbc_preloader';\n // todo Probably we need a validation function of spbcSettings object\n spinner.alt = spbcSettings.spbcSpinner.altText;\n spinner.src = spbcSettings.spbcSpinner.imgSource;\n spinner.id = 'analysis_log_counter_spinner';\n spinner.style = 'display: none; height: 13px; position: relative; top: 2px; margin-left: 5px';\n refreshTab.append(spinner);\n }\n }\n spbcEATSwitchSpinner();\n}\n\n/**\n * Toggles the display of the spinner in the analysis log tab header.\n */\nfunction spbcEATSwitchSpinner() {\n const spinner = document.getElementById('analysis_log_counter_spinner');\n if (spinner !== null) {\n spinner.style.display = spinner.style.display === 'none' ?\n spinner.style.display = 'inline' :\n spinner.style.display = 'none';\n }\n}\n\n/**\n * Sends an AJAX request to update the analysis log table.\n */\nfunction spbcUpdateTableEAT() {\n // Define the tab name for the request\n let tabName = 'scanner';\n // Data object containing parameters for the AJAX request\n let data = {\n action: 'spbc_settings__draw_elements',\n tab_name: tabName,\n security: spbcSettings.ajax_nonce,\n };\n // Params object with additional settings for the AJAX request\n let currentParams = {\n callback: spbcUpdateTableCallbackEAT,\n notJson: true,\n additional: null,\n };\n // Send the AJAX request with the data and params objects\n spbcSendAJAXRequest( data, currentParams, null );\n}\n\n/**\n * Callback function to update the analysis log table with new HTML content.\n *\n * @param {string} allTablesHTML - The HTML content of all tables.\n */\nfunction spbcUpdateTableCallbackEAT(allTablesHTML) {\n // select the same table element to search in the current code and update from received\n const analysisTableSelector = '#spbc_tbl__scanner_analysis_log';\n const parser = new DOMParser();\n const allTablesHTMLParsed = parser.parseFromString(allTablesHTML, 'text/html');\n\n let newTabElement = null;\n let newTabElementInnerHTML = '';\n let currentTabElement = null;\n\n // get new analysis table element and its HTML\n newTabElement = allTablesHTMLParsed.querySelector(analysisTableSelector);\n if (newTabElement !== null && newTabElement.innerHTML !== '') {\n newTabElementInnerHTML = newTabElement.innerHTML;\n }\n\n // get current analysis table element and its HTML\n currentTabElement = document.querySelector(analysisTableSelector);\n if (currentTabElement !== null && currentTabElement.innerHTML === '') {\n currentTabElement = null;\n }\n\n // update analysis table element if it's changed and new data presented\n if (currentTabElement !== null && newTabElementInnerHTML !== '') {\n currentTabElement.innerHTML = newTabElementInnerHTML;\n }\n}\n\n/**\n * Sends an AJAX request to update the analysis log stats.\n */\nfunction spbcUpdateStatsEAT() {\n // Data object containing parameters for the AJAX request\n let data = {\n action: 'spbc_analysyis_files_stats__get_html',\n sub_action: 'give_me_html',\n security: spbcSettings.ajax_nonce,\n };\n // Params object with additional settings for the AJAX request\n let params = {\n callback: spbcUpdateStatsCallbackEAT,\n notJson: true,\n };\n // Send the AJAX request with the data and params objects\n spbcSendAJAXRequest(data, params);\n}\n\n/**\n * Callback function to update the analysis log stats with new HTML content.\n *\n * @param {string} newStatsHtml - The new HTML content for the stats.\n */\nfunction spbcUpdateStatsCallbackEAT(newStatsHtml) {\n // Get the element that displays the analysis files stats\n let info = document.getElementById('spbc_analysis_files_stats');\n // If the element exists, update its inner HTML with the new stats\n if (info) {\n info.innerHTML = newStatsHtml;\n }\n // Toggle the display of the spinner in the analysis log tab header\n spbcEATSwitchSpinner();\n}\n"],"names":["let","spbcBulkAction","noConfirmActions","spbcGetNoConfirmActions","spbcPublic","spbcReloadAccordion","interactControlTab","updateText","spbcSendAJAXRequest","action","notJson","callback","result","data","params","obj","jQuery","accordion","html","header","heightStyle","collapsible","active","spbcTblBulkActionsListen","spbcTblRowActionsListen","spbcTblPaginationListen","spbcTblSortListen","spbcStartShowHide","interactScannerTab","controlTab","refreshControlTabSelector","headerUpdateStatus","headerSelector","appendTo","click","setAttribute","hide","off","on","spbcScanner","alert","spbcTableLocalize","scannerIsActive","self","this","siblings","children","first","selectedIndex","value","indexOf","any","includes","confirm","spbcTable","warning_bulk","add_action","status","parents","attr","spbcScannerCureBulk","spbcScannerRestoreBulk","selectedItems","closest","find","fileIds","each","index","element","elementId","val","push","file_ids","button","spinner","out","counters","total","updated","skipped","failed","queued","spbcModal","open","put","files_sent_counter","errorOutput","errorText","comment","putError","timeout","e","spbcScannerAnalysisLogDeleteFromLog","sendAction","items","msg","show","ip","spbcSecLogsFilterIp","prop","setTimeout","is","restricted","current","allItems","selectedIds","selector","length","security","spbcSettings","ajax_nonce","ajax","type","url","ajaxurl","beforeSend","success","displayData","divWrapper","document","createElement","pMessage","pCounters","divFiles","bSeeMore","pSeeMore","failedToCure","innerHTML","append","hasOwnProperty","failed_to_cure","join","message","cured_on_request","outerHTML","addEventListener","failedToRestore","failed_to_restore","restored_on_request","id","cols","page_url","parent","page_id","spbcTblRowActionsCallback","hideSupportLink","yesButtonText","noButtonText","fileName","firstChild","confirmationHeader","warning_default","confirmationText","confirmed","noConfirmActionsEmpty","defaults","JSON","parse","no_confirm_row_actions","color","css","background","prepend","fadeOut","file_info","window","prompt","error","temp_html","tmp","undefined","updated_template","updatedType","updated_template_type","template","countRowInTemplate","targetTab","table","text","countExistingRows","remove","tabHeaderTemplate","tabBodyTemplate","after","spbcTblPaginationCallback","page","removeAttr","spbcTblSortCallback","domain","target","classList","contains","order_by","order","spbcScannerSwitchTable","_obj","spbcShowHideRows","blockId","columnKey","block","hasClass","removeClass","addClass","spbcEATUpdateIntervalStart","setInterval","querySelector","spbcEATAddSpinner","spbcUpdateTableEAT","spbcUpdateStatsEAT","refreshTab","getElementById","class","alt","spbcSpinner","altText","src","imgSource","style","spbcEATSwitchSpinner","display","tab_name","spbcUpdateTableCallbackEAT","additional","allTablesHTML","analysisTableSelector","newTabElementInnerHTML","currentTabElement","newTabElement","DOMParser","parseFromString","sub_action","spbcUpdateStatsCallbackEAT","newStatsHtml","info","ready"],"mappings":"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"}