// ==UserScript== // @name Oracle Apex 22, asut-clone.erg.kz // @namespace http://tampermonkey.net/ // @version 2024-02-13 // @description try to take over the world! // @author You // @match https://lseo.jv.mt-s.kz:4443/service/f?p=4000:4500* // @match https://lseo.jv.mt-s.kz:4443/service/f?p=4000:8000* // @match https://online.lse.kz/service/f?p=4000:4500* // @match https://online.lse.kz/service/f?p=4000:8000* // @match https://asut-clone.erg.kz/apex/f?p=4000:4500* // @match https://asut-clone.erg.kz/apex/f?p=4000:8000* // @icon https://www.google.com/s2/favicons?sz=64&domain=mt-s.kz // @grant none // ==/UserScript== (function() { 'use strict'; // Функция, которая будет вызвана при исчезновении "is-processing" function handleMutation(mutationsList, observer) { mutationsList.forEach(mutation => { if (!mutation.target.classList.contains('is-processing')) { // "is-processing" убрался, выполнить функцию startSearch() startSearch(); // После выполнения, прекратить наблюдение observer.disconnect(); // Снова начать наблюдение после выполнения startSearch() startObservingWithRetry(targetNode, observer, config); } }); } // Создать новый экземпляр MutationObserver с функцией обратного вызова var observer = new MutationObserver(handleMutation); // Наблюдать за изменениями в элементе с id "a_PageDesigner" var targetNode = null; try { targetNode = document.getElementById('a_PageDesigner'); } catch {} // Настройка на наблюдение за изменениями в классах элемента var config = { attributes: true, attributeFilter: ['class'] }; // Начать наблюдение // startObservingWithRetry(); function startSearch(){ // Найти элемент с классом "a-ControlBar-col" var vLength = $v('pPageItemsProtected').length; // var mainUrl = window.location.origin + window.location.pathname.slice(0, -1) var mainUrl = window.location.origin.replace("http:", "https:") + window.location.pathname.slice(0, -1); var nameLE_pProtected = "LE_pProtected_"+mainUrl; var nameLE_pSession = "LE_pSession_"+mainUrl; var nameLE_pSalt = "LE_pSalt_"+mainUrl; if (localStorage.getItem(nameLE_pProtected) === null) { localStorage.setItem(nameLE_pProtected, $v('pPageItemsProtected')) } if ( (localStorage.getItem(nameLE_pProtected).length === 22 && localStorage.getItem(nameLE_pSession) === apex.item('pInstance').getValue()) | (vLength === 22) ) { //console.log('Inject') if (vLength === 22) { localStorage.setItem(nameLE_pProtected, $v('pPageItemsProtected')) localStorage.setItem(nameLE_pSession, apex.item('pInstance').getValue()) localStorage.setItem(nameLE_pSalt, $v('pSalt')) } var vCurrentPage = $v(document.querySelector("#go_to_page")) var vSearchString= ":"+vCurrentPage+":&SESSION" var bodyParams = { "salt": localStorage.getItem(nameLE_pSalt), "pageItems": { "itemsToSubmit": [ { "n": "P8000_START_SEARCH", "v": "0" }, { "n": "P8000_SEARCH", "v": vSearchString }, { "n": "P8000_CASE_SENSITIVE", "v": [] }, { "n": "P8000_CURRENT_PAGE_ONLY", "v": []}, { "n": "P0_FLOWPAGE", "v": "101;1|1" } ], "protected": localStorage.getItem(nameLE_pProtected), "rowVersion": "" } }; var body = "p_json=" + encodeURIComponent(JSON.stringify(bodyParams)) + "&p_flow_id=4000&p_flow_step_id=8000&p_instance="+$v('pInstance')+"&p_page_submission_id="+localStorage.getItem(nameLE_pSalt)+"&p_request=&p_reload_on_submit=A"; fetch("https://" + window.location.hostname + "/service/wwv_flow.accept", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", }, body: body, credentials: "include" }) .then(response => response.text()) .then(data => { var tempElement = document.createElement('div'); tempElement.innerHTML = data; var searchResultsElement = tempElement.querySelector('#search_results'); if (searchResultsElement) { var tables = searchResultsElement.querySelectorAll('table'); var foundPages = []; try { tables.forEach(function (table) { var tableText = table.textContent || table.innerText; if (tableText.includes(vSearchString)) { var tdElements = table.querySelectorAll('td'); var pagePath = tdElements[0].textContent.trim(); var pagePathParts = pagePath.split(' > '); var combinedElements = pagePathParts.slice(2).join(' > '); foundPages.push(combinedElements); } }) } catch {}; if (foundPages.length > 0) { // Создать пустой объект для отслеживания добавленных значений var addedValues = {}; var controlBarCol = document.querySelector('.a-ControlBar-col'); // Проверка наличия элемента if (controlBarCol) { // Найти элемент с id "utilitiesMenu" внутри "a-ControlBar-col" var utilitiesMenu = controlBarCol.querySelector('#utilitiesMenu'); try { document.querySelector("#P4500_LEMODALPAGEREVERS_MAIN").remove(); } catch {} // // Проверка наличия элемента if (utilitiesMenu) { // Создать новый элемент select var newElement = document.createElement('div'); newElement.id = 'P4500_LEMODALPAGEREVERS_MAIN'; newElement.className = 'a-PageSelect'; newElement.style.margin = '-1px;margin-right: 5px;border-width:1px'; newElement.innerHTML = `