first commit

This commit is contained in:
Unkas Amanjolov 2024-10-07 10:25:50 +05:00
commit 42b29defae
104 changed files with 3308 additions and 0 deletions

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://aliexpress.ru/order-list?*ilterName=active"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1711513302652},"settings":{"enabled":false,"position":18},"meta":{"name":"Ali Get Track Number","uuid":"7b2679e7-5cd7-45ce-8e3e-e78d7ad64cee","modified":1711513302650}}

View File

@ -0,0 +1 @@
{"ts":1709396799973,"data":{}}

View File

@ -0,0 +1,143 @@
// ==UserScript==
// @name Ali Get Track Number
// @version 0.3
// @description Extracts order IDs and adds corresponding spans to divs on AliExpress order list page
// @match https://aliexpress.ru/order-list?*ilterName=active
// @icon https://www.google.com/s2/favicons?sz=64&domain=aliexpress.ru
// @grant none
// ==/UserScript==
(function() {
'use strict';
function addOrderIdSpansToDivs(targetElement) {
let orderItemDivs = targetElement.querySelectorAll('div[class^="SnowOrderList_OrderItem__wrappe"]');
orderItemDivs.forEach((orderItemDiv) => {
let linkElement = orderItemDiv.querySelector('a');
if (linkElement) {
let linkHref = linkElement.getAttribute('href');
let orderId = linkHref.match(/(\d+)/);
if (orderId) {
orderId = orderId[0];
// Создаем новый span-элемент
let spanElement = document.createElement('span');
spanElement.className = `item${orderId}`;
// Создаем ссылку на страницу заказа AliExpress
let aliExpressLink = document.createElement('a');
aliExpressLink.href = linkHref;
aliExpressLink.innerHTML = ` ${orderId}`;
spanElement.appendChild(aliExpressLink);
// Создаем ссылку на страницу отслеживания на GdePos
// let gdePosLink = document.createElement('a');
// gdePosLink.href = `https://gdeposylka.ru/courier/omniva/tracking/${orderId}`;
// gdePosLink.innerHTML = ` GdePos`;
// spanElement.appendChild(gdePosLink);
// Добавляем созданный span-элемент в конец div-элемента
orderItemDiv.appendChild(spanElement);
// Выполняем дополнительные действия с каждым orderItemDiv
processOrderItemDiv(orderId, orderItemDiv);
}
}
});
}
function processOrderItemDiv(orderId, orderItemDiv) {
let aliExpressLink = `https://aliexpress.ru/order-list/${orderId}?filterName=active`;
makeAsyncGetRequest(aliExpressLink)
.then(response => {
let dataMatch = /<script id="__AER_DATA__" type="application\/json">(.*?)<\/script>/s;
let dataMatchResult = response.match(dataMatch);
if (dataMatchResult && dataMatchResult[1]) {
let dataBlockJson = dataMatchResult[1];
let dataObject;
try {
dataObject = JSON.parse(dataBlockJson);
// console.log(dataBlockJson);
// Находим "packages" в объекте и выводим его
findAndPrintPackages(dataObject, orderId, orderItemDiv);
} catch (error) {
console.error('Error parsing JSON:', error);
}
} else {
console.error('Could not find JSON data in the response.');
}
})
.catch(error => console.error(error));
}
function findAndPrintPackages(obj, orderId, orderItemDiv) {
// Рекурсивно ищем блок "packages" и обновляем текст элемента
if (typeof obj === 'object') {
for (let key in obj) {
if (key === 'packages') {
let packages = obj[key];
for (let packageInfo of packages) {
updateTextForOrderItem(packageInfo, orderId, orderItemDiv);
}
} else {
findAndPrintPackages(obj[key], orderId, orderItemDiv);
}
}
}
}
function updateTextForOrderItem(packageInfo, orderId, orderItemDiv) {
if (packageInfo.trackNumber && packageInfo.originalTrackNumber) {
let itemSelector = `.item${orderId}`;
let itemElement = orderItemDiv.querySelector(itemSelector);
if (itemElement) {
let isOrderIdPresent = itemElement.querySelector(`a[href*="${orderId}"]`);
// let textDecoration = isOrderIdPresent ? 'background-color: lightpink;' : '';
let newContent = `<span class="${itemSelector}"><a href="https://aliexpress.ru/order-list/${orderId}?filterName=active" target="_blank" style="background-color:#b6f2ff">&nbsp;${packageInfo.originalTrackNumber}</a>`;
newContent += `<a href="https://gdeposylka.ru/detect/${packageInfo.originalTrackNumber}" target="_blank" style="background-color:#b6ffbb">&nbsp;GdePos</a></br>`;
if (packageInfo.trackNumber != packageInfo.originalTrackNumber) {
newContent += `<a href="https://aliexpress.ru/order-list/${orderId}?filterName=active" target="_blank" style="background-color:#ffb6c1;">&nbsp;${packageInfo.trackNumber}</a>`;
newContent += `<a href="https://gdeposylka.ru/detect/${packageInfo.trackNumber}" target="_blank" style="background-color:#c7b6ff">&nbsp;GdePosNEW</a></span></br>`;
};
itemElement.innerHTML = newContent;
}
}
}
function makeAsyncGetRequest(aliExpressLink) {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open('GET', aliExpressLink, true);
xhr.onload = function () {
if (xhr.status >= 200 && xhr.status < 300) {
resolve(xhr.responseText);
} else {
reject(`Error: ${xhr.status}`);
}
};
xhr.onerror = function () {
reject('Network error');
};
xhr.send();
});
}
// Слушаем событие завершения загрузки страницы
window.addEventListener('load', () => {
let targetElement = document.querySelector('.SnowOrderList_Wrapper__wrapper__12ov3'); // Замените на ваш реальный селектор
if (targetElement) {
addOrderIdSpansToDivs(targetElement);
}
});
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":1728274985873,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://aliexpress.ru/order-list?*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":false,"position":29},"meta":{"name":"AliExpress-Order-List-Modifier","uuid":"588406f4-1e94-4bea-ad79-dab1030109d7","modified":1728274985870}}

View File

@ -0,0 +1 @@
{"ts":1724845620961,"data":{}}

View File

@ -0,0 +1,264 @@
// ==UserScript==
// @name AliExpress-Order-List-Modifier
// @namespace http://tampermonkey.net/
// @version 2024-08-28
// @description Скрипт, который модифицирует список заказов на странице AliExpress: добавляет таблицу с номерами заказов, отслеживает изменения URL, извлекает данные по каждому заказу и добавляет ссылки на трекинг посылок.
// @author You
// @match https://aliexpress.ru/order-list?*
// @icon https://www.google.com/s2/favicons?sz=64&domain=aliexpress.ru
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Запускать скрипт только после полной загрузки страницы
window.addEventListener('load', function() {
modifyOrderList();
setupURLObserver();
});
function modifyOrderList() {
// Получаем контейнер с заказами
const container = document.querySelector('.RedOrderList_RedOrderList__container__eukpr');
if (!container) return;
// Создаем новую таблицу
const table = document.createElement('table');
table.style.width = '100%';
table.style.borderSpacing = '0 6px'; // Добавляем расстояние между строками
// Проходим по каждому элементу с классом "RedOrderList_OrderList__item__1utr0 RedOrderList_OrderList__withBackground__1utr0"
const items = Array.from(container.querySelectorAll('.RedOrderList_OrderList__item__1utr0.RedOrderList_OrderList__withBackground__1utr0'));
const spm = extractSPMParameter(); // Извлекаем параметр SPM из текущего URL
items.forEach(item => {
const orderLink = item.querySelector('a');
if (!orderLink) return;
// Извлекаем номер заказа из href
const orderNumberMatch = orderLink.href.match(/order-list\/(\d+)\?/);
if (!orderNumberMatch) return;
const orderNumber = orderNumberMatch[1];
// Меняем класс элемента
const originalClass = item.className;
item.className = 'BlueOrderList_OrderList__item__' + orderNumber;
// Создаем строку таблицы
const row = document.createElement('tr');
// Первая колонка (оригинальный элемент)
const cell1 = document.createElement('td');
cell1.style.width = '80%';
cell1.style.padding = '5px';
cell1.appendChild(item);
// Вторая колонка (новый элемент с div)
const cell2 = document.createElement('td');
cell2.style.width = '20%';
cell2.style.padding = '5px';
cell2.style.position = 'relative';
const div = document.createElement('div');
div.className = 'BlueOrderList_OrderList__item__' + orderNumber;
div.style.position = 'absolute';
div.style.top = '0';
div.style.left = '0';
div.style.right = '0';
div.style.bottom = '0';
div.style.padding = '5px';
div.style.width = '100%';
div.style.height = '100%';
div.style.border = '1px solid #e6eaf0';
div.style.borderRadius = '6px';
div.style.padding = '3px';
// Создаем и добавляем элементы <p> с помощью функции
const pID = createParagraph('ID', orderNumber);
const pDate = createParagraph('Date', 'Дата'); // Замените на актуальную дату
const pPosilka = createParagraph('Posilka', 'Посылка'); // Placeholder, будет обновлено позже
div.appendChild(pID);
div.appendChild(pDate);
div.appendChild(pPosilka);
// Вызов функции для получения данных заказа и обновления pPosilka.textContent
fetchOrderDetails(orderNumber, pPosilka, pDate, spm);
// Создаем и добавляем ссылки под pPosilka
const pLinks = createTrackingLinks(pPosilka);
div.appendChild(pLinks);
// Добавляем <div> в ячейку таблицы
cell2.appendChild(div);
// Добавляем колонки в строку
row.appendChild(cell1);
row.appendChild(cell2);
// Добавляем строку в таблицу
table.appendChild(row);
// Восстанавливаем оригинальный класс после добавления
item.className = originalClass;
});
// Заменяем содержимое контейнера новой таблицей
container.innerHTML = '';
container.appendChild(table);
}
// Функция для создания элемента <p>
function createParagraph(className, textContent) {
const p = document.createElement('p');
p.className = className;
p.textContent = textContent;
p.style.margin = '3px 0px';
return p;
}
// Функция для создания ссылок на "Казпочта" и "Где посылка"
function createTrackingLinks(pPosilka) {
const container = document.createElement('div');
container.style.marginTop = '5px';
// Создаем ссылку для "Казпочта"
const kazPostLink = document.createElement('a');
kazPostLink.href = `https://qazpost.kz/ru/tracking?trackNumber=${pPosilka.textContent}`;
kazPostLink.target = '_blank';
kazPostLink.style.padding = '5px 0px 6px 0px';
// Создаем изображение для "Казпочта"
const kazPostImg = document.createElement('img');
kazPostImg.src = 'https://qazpost.kz/favicon/favicon-16x16.png';
kazPostImg.alt = 'Казпочта';
kazPostImg.style.verticalAlign = 'middle';
kazPostImg.style.marginRight = '5px';
kazPostLink.appendChild(kazPostImg); // Добавляем изображение в ссылку
kazPostLink.appendChild(document.createTextNode('Казпочта')); // Добавляем текст
const br = document.createElement('br'); // Создаем элемент <br> для разрыва строки
// Создаем ссылку для "Где посылка"
const gdePosylkaLink = document.createElement('a');
gdePosylkaLink.href = `https://gdeposylka.ru/detect/${pPosilka.textContent}`;
gdePosylkaLink.target = '_blank';
gdePosylkaLink.style.padding = '5px 0px 6px 0px';
// Создаем изображение для "Где посылка"
const gdePosylkaImg = document.createElement('img');
gdePosylkaImg.src = 'https://gdeposylka.ru/favicon.ico';
gdePosylkaImg.alt = 'Где посылка';
gdePosylkaImg.style.verticalAlign = 'middle';
gdePosylkaImg.style.marginRight = '5px';
gdePosylkaLink.appendChild(gdePosylkaImg); // Добавляем изображение в ссылку
gdePosylkaLink.appendChild(document.createTextNode('Где посылка')); // Добавляем текст
container.appendChild(kazPostLink);
container.appendChild(br); // Добавляем разрыв строки между ссылками
container.appendChild(gdePosylkaLink);
return container;
}
// Функция для получения данных заказа по order_id с учетом параметра spm
function fetchOrderDetails(p_order_id, pPosilka, pDate, pSpm) {
const url = `https://aliexpress.ru/order-list/${p_order_id}${pSpm ? pSpm : ''}`;
fetch(url)
.then(response => response.text())
.then(html => {
// Создаем DOMParser для анализа полученной HTML страницы
const parser = new DOMParser();
const doc = parser.parseFromString(html, 'text/html');
// Извлекаем содержимое скрипта с id "__AER_DATA__"
const scriptTag = doc.querySelector('#__AER_DATA__');
if (scriptTag) {
const jsonData = scriptTag.textContent;
// Поиск значения originalTrackNumber и обновление текста в pPosilka
const originalTrackNumber = findOriginalTrackNumber(jsonData);
if (originalTrackNumber) {
pPosilka.textContent = originalTrackNumber;
pPosilka.style.backgroundColor = "#90ee90";
} else {
pPosilka.textContent = 'Информация недоступна';
pPosilka.style.backgroundColor = "#f08080"; // Добавляем цвет для недоступной информации
}
// Обновление ссылок в pLinks
const pLinks = pPosilka.nextElementSibling;
if (pLinks) {
pLinks.querySelector('a[href^="https://qazpost.kz"]').href = `https://qazpost.kz/ru/tracking?trackNumber=${originalTrackNumber}`;
pLinks.querySelector('a[href^="https://gdeposylka.ru"]').href = `https://gdeposylka.ru/detect/${originalTrackNumber}`;
}
// Поиск значения даты и обновление текста в pDate
const orderDate = findOrderDate(jsonData);
if (orderDate) {
pDate.textContent = orderDate;
} else {
pDate.textContent = 'Дата недоступна';
}
} else {
console.error(`JSON данные для заказа ${p_order_id} не найдены.`);
pPosilka.textContent = 'Ошибка загрузки';
pDate.textContent = 'Ошибка загрузки';
pPosilka.style.backgroundColor = "#f08080"; // Добавляем цвет для ошибки
}
})
.catch(error => {
console.error('Ошибка при запросе данных:', error);
pPosilka.textContent = 'Ошибка запроса';
pDate.textContent = 'Ошибка запроса';
pPosilka.style.backgroundColor = "#f08080"; // Добавляем цвет для ошибки
});
}
// Функция для поиска originalTrackNumber в текстовом представлении JSON
function findOriginalTrackNumber(jsonText) {
const match = jsonText.match(/"originalTrackNumber":"(.*?)"/);
if (match && match[1]) {
return match[1];
} else {
console.error('originalTrackNumber не найден в JSON');
return null;
}
}
// Функция для поиска даты заказа в текстовом представлении JSON
function findOrderDate(jsonText) {
const match = jsonText.match(/"header":\{"ordersTitle":"Заказы","date":"от\s(.*?)"/);
if (match && match[1]) {
return match[1];
} else {
console.error('Дата заказа не найдена в JSON');
return null;
}
}
// Функция для извлечения параметра SPM из текущего URL
function extractSPMParameter() {
const urlParams = new URLSearchParams(window.location.search);
const spm = urlParams.get('spm');
return spm ? `?spm=${spm}` : '';
}
function setupURLObserver() {
// Наблюдаем за изменением URL и обновляем страницу, если она не совпадает с текущей
let lastUrl = location.href;
new MutationObserver(() => {
const currentUrl = location.href;
if (currentUrl !== lastUrl) {
lastUrl = currentUrl;
if (currentUrl.startsWith('https://aliexpress.ru/order-list')) {
location.reload();
}
}
}).observe(document, { subtree: true, childList: true });
}
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":false,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://aliexpress.ru/order-list?*ilterName=active"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1709396558803},"settings":{"enabled":false,"position":10},"meta":{"name":"Get Order Count","uuid":"89585fe7-77e4-4dc5-ae5f-c9ca471ac552","modified":1709396558802}}

View File

@ -0,0 +1 @@
{"ts":1707563388970,"data":{}}

31
Get Order Count.user.js Normal file
View File

@ -0,0 +1,31 @@
// ==UserScript==
// @name Get Order Count
// @namespace http://tampermonkey.net/
// @version 1.0.1
// @description try to take over the world!
// @author You
// @match https://aliexpress.ru/order-list?*ilterName=active
// @icon https://www.google.com/s2/favicons?sz=64&domain=aliexpress.ru
// @grant none
// ==/UserScript==
(function() {
function onPageLoad() {
var elements = document.querySelectorAll("div[class^='SnowOrderList_Wrapper'] > div:nth-child(1) > div");
var elementCount = elements.length;
// console.log("Количество элементов:", elementCount);
var activeButton = document.querySelector("div[class^='SnowOrderListTabs'] > div:nth-child(1) button[class*='_buttonActive_']");
var activeButtonClass = activeButton.className;
var classesArray = activeButtonClass.split(' ');
var secondClass = classesArray[1]
//console.log("Элемент с классом secondClass:", secondClass);
var elementWithActiveClass = document.querySelector("." + secondClass);
//console.log("Элемент с классом:", elementWithActiveClass);
if (elementWithActiveClass.innerText == 'Активные') {elementWithActiveClass.innerText = ('Активные (' + elementCount + ')')}
}
window.addEventListener('load', onPageLoad);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":1728275937346,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://*.lkaz.ru/*"],"orig_noframes":null,"orig_run_at":"document-end","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":true,"position":33},"meta":{"name":"Git:Replace-Default-Create-Gitea-MD-Text","uuid":"7d3664f6-4475-46c4-a2be-82305aa96e5d","modified":1728275937345}}

View File

@ -0,0 +1 @@
{"ts":1728015916432,"data":{}}

View File

@ -0,0 +1,28 @@
// ==UserScript==
// @name Git:Replace-Default-Create-Gitea-MD-Text
// @namespace http://tampermonkey.net/
// @version 2024-10-04
// @description Скрипт, который изменяет инструкции по созданию нового репозитория на странице: добавляет настройку email, удаляет команду создания README.md и заменяет добавление одного файла на добавление всех файлов в репозиторий.
// @author You
// @match https://*.lkaz.ru/*
// @icon https://docs.gitea.com/img/favicon.png
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
// Проверяем, находится ли пользователь на нужном URL
if (window.location.href.includes("git.lkaz.ru")) {
if (document.querySelector("div.ui.container > div > div > div > div:nth-child(3) > h3")?.innerText === 'Создать новый репозиторий из командной строки') {
let defaultMarkup = document.querySelector(".markup");
let userName = document.querySelector("a.muted.tw-font-normal")?.innerText || "default@example.com"; // Обработка случая, если имя пользователя не найдено
let newMarkup0 = defaultMarkup.innerHTML;
let newMarkup1 = newMarkup0.replace("git init\n", `git init\ngit config --global user.email "${userName}"\n`);
let newMarkup2 = newMarkup1.replace("touch README.md\n", "");
let newMarkup3 = newMarkup2.replace("git add README.md", "git add .");
defaultMarkup.innerHTML = newMarkup3;
}
}
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":1728276086329,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://gitlabserver.skynet.kz/*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":true,"position":31},"meta":{"name":"Git:Replace-Default-Create-Gitlab-MD-Text","uuid":"b226632b-5c4a-421a-bf62-26c5d4eeceea","modified":1728276086325}}

View File

@ -0,0 +1 @@
{"ts":1726118229739,"data":{}}

View File

@ -0,0 +1,67 @@
// ==UserScript==
// @name Git:Replace-Default-Create-Gitlab-MD-Text
// @namespace http://tampermonkey.net/
// @version 2024-09-12
// @description Скрипт, который модифицирует инструкцию по созданию нового репозитория на странице: добавляет к URL суффикс `.git`, настраивает имя и email пользователя, а также изменяет команды в блоке <pre> для корректного создания и пуша нового репозитория.
// @author You
// @match https://gitlabserver.skynet.kz/*
// @icon https://about.gitlab.com/nuxt-images/ico/favicon.ico
// @grant none
// ==/UserScript==
(function() {
'use strict';
window.addEventListener('load', function() {
// Поиск нужного элемента
const emptyWrapper = document.querySelector(".git-empty.js-git-empty");
if (emptyWrapper) {
const createNew = Array.from(emptyWrapper.querySelectorAll('h5'))
.find(h5 => h5.textContent.includes("Create a new repository"));
if (createNew) {
// Модификация URL
const currentURL = window.location.href;
const newURL = currentURL.endsWith('/') ? currentURL.slice(0, -1) + '.git' : currentURL + '.git';
// Замена содержимого первого элемента <pre>
const pres = emptyWrapper.querySelectorAll('pre');
if (pres.length > 0) {
// Находим элемент <li> с классом "current-user"
const currentUserElement = document.querySelector('li.current-user');
// Инициализируем переменные
let vCurrentUser, vCurrentName;
// Проверяем, найден ли элемент
if (currentUserElement) {
// Получаем элемент <a> внутри <li>
const userLink = currentUserElement.querySelector('a[data-user]');
// Проверяем, найден ли элемент <a>
if (userLink) {
// Извлекаем username и добавляем домен
vCurrentUser = userLink.getAttribute('data-user') + '@skynet.kz';
// Извлекаем полное имя пользователя
vCurrentName = userLink.querySelector('.gl-font-weight-bold').textContent.trim();
}
}
// Заменяем текст первого элемента <pre>
pres[0].innerHTML = `cd ${newURL.split('/').pop().replace('.git', '')}
git init
git config --global user.name "${vCurrentName}"
git config --global user.email "${vCurrentUser}"
git checkout -b master
git add .
git commit -m "first commit"
git remote add origin ${newURL}
git push -u origin master
</pre>`;
console.log('Updated pre element');
}
console.log('Script executed');
} else {
console.log('Create new repository section not found');
}
console.log('Empty wrapper found');
} else {
console.log('Empty wrapper not found');
}
});
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://hamsterkombatgame.io/*"],"orig_noframes":null,"orig_run_at":"document-start","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1721557956684},"settings":{"enabled":true,"position":25},"meta":{"name":"Hamsterkombat on web Telegram","uuid":"aeead360-357c-4147-9980-f5534d1ce9f2","modified":1721557956683}}

View File

@ -0,0 +1 @@
{"ts":1721557552463,"data":{}}

View File

@ -0,0 +1,25 @@
// ==UserScript==
// @name Hamsterkombat on web Telegram
// @namespace http://tampermonkey.net/
// @version 2024-07-21
// @description try to take over the world!
// @author You
// @match https://hamsterkombatgame.io/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=telegram.org
// @run-at document-start
// @grant none
// ==/UserScript==
(function() {
'use strict';
const orig_indexof = Array.prototype.indexOf
Array.prototype.indexOf = function (...args) {
if (JSON.stringify(this) === JSON.stringify(["android", "android_x", "ios"])) {
setTimeout (() => {
Array.prototype.indexOf = orig_indexof
})
return 0
}
return orig_indexof.apply(this, args)
}
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://hoster.kz/cabinet/"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1704277166681},"settings":{"enabled":true,"position":15},"meta":{"name":"Hoster DOMAIN INFO","uuid":"11aeff23-0466-435e-8dbc-f9d6bc2b7e74","modified":1704277166680}}

View File

@ -0,0 +1 @@
{"ts":1707563388975,"data":{}}

View File

@ -0,0 +1,22 @@
// ==UserScript==
// @name Hoster DOMAIN INFO
// @namespace http://tampermonkey.net/
// @version 2024-01-03
// @description All serviceinfo__title add "white-space: pre-line"
// @author You
// @match https://hoster.kz/cabinet/
// @icon https://www.google.com/s2/favicons?sz=64&domain=hoster.kz
// @grant none
// ==/UserScript==
(function() {
// Находим все элементы с классом serviceinfo__title
var titles = document.querySelectorAll('.serviceinfo__title');
// Проходим по каждому найденному элементу
titles.forEach(function(title) {
// Применяем стиль с использованием атрибута style
title.setAttribute("style", "white-space: pre-line;");
});
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":false,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["http://online.inter-s.kz/apex/f?p=109*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1709396486735},"settings":{"enabled":true,"position":7},"meta":{"name":"Intra - Меню","uuid":"b9abd534-0c9d-4773-8a59-97a2e6a97ad0","modified":1690279943178}}

View File

@ -0,0 +1 @@
{"ts":1707563388957,"data":{}}

59
Intra - Меню.user.js Normal file
View File

@ -0,0 +1,59 @@
// ==UserScript==
// @name Intra - Меню
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match http://online.inter-s.kz/apex/f?p=109*
// @icon https://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://online.lse.kz&size=128
// @grant GM_registerMenuCommand
// @grant GM_setClipboard
// @grant GM.setClipboard
// ==/UserScript==
console.log ("Меню интегрирован");
GM_registerMenuCommand ("Копировать в буфер", start_to_clipboard);
function start_to_clipboard () {
console.log("Начало");
var elements = document.querySelectorAll('[id^="P2_EMP_BIRTHDAY_DISPLAY"]');
var default_ipenl_text = elements[0];
var textToCopy = default_ipenl_text.textContent.trim();
var targetId = "_hiddenCopyText_";
var target = document.getElementById(targetId);
if (!target) {
target = document.createElement("textarea");
target.style.position = "absolute";
target.style.left = "-9999px";
target.style.top = "0";
target.id = targetId;
document.body.appendChild(target);
}
target.textContent = textToCopy;
// select the content
var currentFocus = document.activeElement;
target.focus();
target.setSelectionRange(0, target.value.length);
// copy the selection
var succeed;
try {
succeed = document.execCommand("copy");
} catch(e) {
succeed = false;
}
// restore original focus
if (currentFocus && typeof currentFocus.focus === "function") {
currentFocus.focus();
}
// clear temporary content
target.textContent = "";
console.log("Конец");
}

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":1728278524821,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://jira.skynet.kz/browse/*","https://jira2.erg.kz/browse/*","https://jira.skynet.kz/secure/RapidBoard.jspa?*","https://jira2.erg.kz/secure/RapidBoard.jspa?*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":false,"position":34},"meta":{"name":"Jira:Extension-For-Jira.Skynet.KZ-and-Jira2.ERG.KZ","uuid":"53fbf15d-219c-426e-baa8-2942f7ccc58a","modified":1728278524820}}

View File

@ -0,0 +1 @@
{"ts":1708071088812,"data":{}}

View File

@ -0,0 +1,383 @@
// ==UserScript==
// @name Jira:Extension-For-Jira.Skynet.KZ-and-Jira2.ERG.KZ
// @namespace https://github.com/le91
// @version 1.6_by_01.03.2024
// @description Make GET request after page is fully loaded for a specific host - Element Creation for Jira
// @author LukasEndigo
// @match https://jira.skynet.kz/browse/*
// @match https://jira2.erg.kz/browse/*
// @match https://jira.skynet.kz/secure/RapidBoard.jspa?*
// @match https://jira2.erg.kz/secure/RapidBoard.jspa?*
// @icon https://www.google.com/s2/favicons?sz=64&domain=jira.com
// @grant none
// ==/UserScript==
(async function () {
`use strict`;
async function MakeGetRequest(url) {
try {
const response = await fetch(url);
return await response.json();
} catch (error) {
console.error(`Ошибка выполнения GET запроса:`, error);
}
}
async function MakePostRequest(url, data) {
try {
const response = await fetch(url, {
method: `POST`,
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
return await response.json();
} catch (error) {
console.error(`Ошибка выполнения POST запроса:`, error);
}
}
async function CreateTokenElements() {
const toolbar2_secondary = document.querySelector(`div.aui-toolbar2-secondary > div`);
if (toolbar2_secondary) {
const skynetTokenClass = `<a id="skynet_token_class" style="margin: 15px 4px 4px;"><input class="skynet_token_input" placeholder="Input Token" spellcheck="true" type="password" value="" autocomplete="one-time-code"></a>`;
const skynetTokenButton = `<a id="skynet_token_button" role="button" class="aui-button toolbar-trigger" href="#" resolved=""><span class="icon aui-icon aui-icon-small aui-iconfont-task"></span></a>`;
toolbar2_secondary.insertAdjacentHTML(`afterbegin`, skynetTokenButton);
toolbar2_secondary.insertAdjacentHTML(`afterbegin`, skynetTokenClass);
const skynetTokenButtonClass = document.querySelector(`#skynet_token_button`);
skynetTokenButtonClass.addEventListener(`click`, async function () {
skynetTokenButtonClass.setAttribute(`disabled`, ``);
const inputTokenValue = document.querySelector(`.skynet_token_input`).value;
try {
const tokenResponse = await MakeGetRequest(`https://extension-ojzdnx5uk6ayq2keje.skynet.kz/api/get_actual_token?v_token=${encodeURIComponent(inputTokenValue)}`);
if (tokenResponse === `OK`) {
localStorage.setItem(`skynet_key_token`, inputTokenValue);
alert(`Ключ успешно проверен`);
AfterClickAction(`Ключ успешно проверен`);
} else if (tokenResponse === `ERROR`) {
alert(`Ответ от сервера: ` + tokenResponse);
} else {
await ResponseCustomDialog(`Глобальная ошибка\nроверка Токена_\n ???`);
}
} catch (error) {
await ResponseCustomDialog(`Глобальная ошибка\nроверка Токена_\nError fetching token. Check the console for details`);
}
skynetTokenButtonClass.removeAttribute(`disabled`);
});
}
}
async function CreateStatusElements() {
const toolbar2_secondary = document.querySelector(`div.aui-toolbar2-secondary > div`);
console.log('CreateStatusElements');
if (toolbar2_secondary) {
try {
if (localStorage.getItem(`skynet_key_token`)) {
const curPageURLOrigin = window.location.href.replace("#","");
const curPageURL = encodeURIComponent(curPageURLOrigin);
const apiResponse = await MakeGetRequest(`https://extension-ojzdnx5uk6ayq2keje.skynet.kz/api/get_actual_status?v_id=`+ curPageURL + `&v_token=` + localStorage.getItem(`skynet_key_token`));
apiResponse.result.forEach((status) => {
const actionButton = document.createElement(`div`);
actionButton.innerHTML = status.html;
const id = actionButton.firstChild.id;
const role = actionButton.firstChild.role;
actionButton.firstChild.href = `#`;
actionButton.firstChild.addEventListener(`click`, async function () {
actionButton.setAttribute(`disabled`, ``);
try {
let module = ``;
try {
const epicLinkLabel = document.querySelector(`.name[title="Epic Link"]`);
if (epicLinkLabel) {
const wrapDiv = epicLinkLabel.closest(`.wrap`);
if (wrapDiv) {
const valueText = wrapDiv.querySelector(`.value`).textContent.trim();
module = valueText
}
}
} catch (error) {};
let submodule = ``;
try {
const linkingModuleLabel = document.getElementById(`linkingmodule-label`);
if (linkingModuleLabel && linkingModuleLabel.textContent.trim() === `Issue Links`) {
const toggleWrap = linkingModuleLabel.closest(`.toggle-wrap`);
if (toggleWrap) {
const linkContents = toggleWrap.querySelectorAll(`.link-content`);
const concatenatedText = Array.from(linkContents, linkContent => {
const linkSummaryElement = linkContent.querySelector(`.link-summary`);
return linkSummaryElement ? linkSummaryElement.textContent.trim() : ``;
}).join(`, `);
submodule = concatenatedText.trim();
}
}
} catch (error) {};
let project_name = ``;
try {
project_name = document.querySelector(`#project-name-val`).innerText;
} catch (error) {};
let desc = ``;
try {
desc = document.querySelector(`#summary-val`).innerText;
} catch (error) {};
const postData = {
id: curPageURLOrigin,
project_name: project_name,
desc: desc,
status: status.dic_id,
token: localStorage.getItem(`skynet_key_token`),
module: module,
submodule: submodule
};
const data = await MakePostRequest(status.api, postData);
var parsedData;
try {
parsedData = typeof data === `string` ? JSON.parse(data) : data;
// console.log(parsedData);
const detailValue = parsedData.detail;
if (detailValue.includes(`OK Status`)) {
AfterClickAction(data);
} else if (detailValue.includes(`NO ACTUAL TOKEN`)) {
await ResponseCustomDialog(detailValue);
} else {
await ResponseCustomDialog(`Глобальная ошибка\n_DB_ERROR_\n` + detailValue);
// console.log(`Другое значение в detail:`, parsedData.detail);
}
} catch (error) {
await ResponseCustomDialog(`Глобальная ошибка\n_Ошибка при парсинге JSON_\n` + error);
}
} catch (error) {
await ResponseCustomDialog(`Глобальная ошибка\n_Error performing POST request_\n` + error);
}
});
toolbar2_secondary.insertBefore(actionButton.firstChild, toolbar2_secondary.firstChild);
});
} else {
location.reload();
};
} catch (error) {
console.error(`Ошибка "fetching API" данных на запросе GET по статусам`, error);
}
} else {
console.error(`Невозможно найти нужный элемент на странице, попробуйте выполнить команду:\n document.querySelector("div.aui-toolbar2-secondary > div");`);
}
}
async function AfterClickAction(TextMessage) {
const existingElements = document.querySelectorAll(`#skynet_token_class, #skynet_token_button`);
existingElements.forEach(element => element.remove());
var skynetElements = document.querySelectorAll(`[id^="skynet"]`);
skynetElements.forEach(function(element) {
element.remove();
});
console.log('AfterClickAction || CLICK');
if (window.location.href.indexOf("/browse/") != -1) {
console.log('AfterClickAction || browse');
if (localStorage.getItem(`skynet_key_token`)) {
CreateStatusElements();
} else {
CreateTokenElements();
}
}
if (window.location.href.indexOf("/secure/") != -1) {
console.log('AfterClickAction || secure');
if (localStorage.getItem(`skynet_key_token`)) {
lastHref = null;
CreateStatusElements2();
}
}
}
async function CreateStatusElements2() {
var currentHref = window.location.origin + document.querySelector("#issuekey-val a, #issuekey-val h3 a").href;
if (currentHref !== lastHref) {
const toolbar2_secondary = document.querySelector('#ghx-detail-head > header > div.ghx-controls');
if ( toolbar2_secondary) {
lastHref = currentHref;
try {
if (localStorage.getItem(`skynet_key_token`)) {
const curPageURLOrigin = document.querySelector("#issuekey-val a, #issuekey-val h3 a").href.replace("#","");
const curPageURL = encodeURIComponent(curPageURLOrigin);
const apiResponse = await MakeGetRequest(`https://extension-ojzdnx5uk6ayq2keje.skynet.kz/api/get_actual_status?v_id=`+ curPageURL + `&v_token=` + localStorage.getItem(`skynet_key_token`));
apiResponse.result.forEach((status) => {
const actionButton = document.createElement(`div`);
actionButton.innerHTML = status.html;
const id = actionButton.firstChild.id;
const role = actionButton.firstChild.role;
actionButton.firstChild.href = `#`;
actionButton.firstChild.addEventListener(`click`, async function () {
actionButton.setAttribute(`disabled`, ``);
try {
let module = ``;
try {
const epicLinkLabel = document.querySelector(`.name[title="Epic Link"]`);
if (epicLinkLabel) {
const wrapDiv = epicLinkLabel.closest(`.wrap`);
if (wrapDiv) {
const valueText = wrapDiv.querySelector(`.value`).textContent.trim();
module = valueText
}
}
} catch (error) {};
let submodule = ``
try {
const linkingModuleLabel = document.getElementById(`linkingmodule-label`);
if (linkingModuleLabel && linkingModuleLabel.textContent.trim() === `Issue Links`) {
const toggleWrap = linkingModuleLabel.closest(`.toggle-wrap`);
if (toggleWrap) {
const linkContents = toggleWrap.querySelectorAll(`.link-content`);
const concatenatedText = Array.from(linkContents, linkContent => {
const linkSummaryElement = linkContent.querySelector(`.link-summary`);
return linkSummaryElement ? linkSummaryElement.textContent.trim() : ``;
}).join(`, `);
submodule = concatenatedText.trim();
}
}
} catch (error) {};
const postData = {
id: curPageURLOrigin,
project_name: document.querySelector("div.ghx-project").innerText,
desc: document.querySelector("#summary-val").innerText,
status: status.dic_id,
token: localStorage.getItem(`skynet_key_token`),
module: module,
submodule: submodule
};
const data = await MakePostRequest(status.api, postData);
var parsedData;
try {
parsedData = typeof data === `string` ? JSON.parse(data) : data;
// console.log(parsedData);
const detailValue = parsedData.detail;
if (detailValue.includes(`OK Status`)) {
AfterClickAction(data);
} else if (detailValue.includes(`NO ACTUAL TOKEN`)) {
await ResponseCustomDialog(detailValue);
} else {
await ResponseCustomDialog(`Глобальная ошибка\n_DB_ERROR_\n` + detailValue);
// console.log(`Другое значение в detail:`, parsedData.detail);
}
} catch (error) {
await ResponseCustomDialog(`Глобальная ошибка\n_Ошибка при парсинге JSON_\n` + error);
}
} catch (error) {
await ResponseCustomDialog(`Глобальная ошибка\n_Error performing POST request_\n` + error);
}
});
toolbar2_secondary.insertBefore(actionButton.firstChild, toolbar2_secondary.firstChild);
document.querySelector("#skynet-status-12 > span.dropdown-text").remove();
});
} else {
location.reload();
};
} catch (error) {
console.error(`Ошибка "fetching API" данных на запросе GET по статусам`, error);
}
} else {
console.error(`Невозможно найти нужный элемент на странице, попробуйте выполнить команду:\n document.querySelector("div.aui-toolbar2-secondary > div");`);
}
// Обновляем значение lastHref
}
}
async function ResponseCustomDialog(response) {
localStorage.removeItem(`skynet_key_token`);
return new Promise((resolve) => {
const resultDialog = document.createElement(`div`);
resultDialog.innerHTML = `
<div style="position: fixed;top: 0;left: 0;width: 100%;height: 100%;background: rgb(0 0 0 / 70%);z-index: 9998;"></div>
<div style="position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);background: white;padding: 20px;border: 2px solid #333;border-radius: 2px;box-shadow: 0 0 50px rgb(255 255 255 / 85%);z-index: 9999;">
<button id="closeButton" style="position: absolute; top: 0; right: 0; background: none; border: none; font-size: 20px; cursor: pointer;"></button>
<h2>Response Result</h2>
<pre>${response}</pre>
</div>`
;
document.body.appendChild(resultDialog);
const closeButton = document.getElementById(`closeButton`);
closeButton.addEventListener(`click`, () => {
resultDialog.remove();
resolve();
location.reload();
});
});
}
let lastHref = null;
console.info(`Skynet Code: Injected`);
if (window.location.href.indexOf(`/browse/`) != -1) {
// console.info(`browse`);
const handlePLSidebarChanges = () => {
const contentSection = document.querySelector(`#content > section`);
if (contentSection && !contentSection.classList.contains(`sidebar-placeholder`)) {
console.info(`Skynet Code: Page Load`);
if (localStorage.getItem(`skynet_key_token`)) {
CreateStatusElements();
} else {
CreateTokenElements();
}
observerBrowser.disconnect();
}
};
const observerBrowser = new MutationObserver(handlePLSidebarChanges);
observerBrowser.observe(document.getElementById(`content`), { childList: true});
}
if (window.location.href.indexOf(`/secure/`) != -1) {
// console.info(`secure`);
const targetElement = document.querySelector(`#gh`);
const observerRapidBoard = new MutationObserver((mutationsList, observer) => {
mutationsList.forEach((mutation) => {
if (mutation.type === `attributes` && mutation.attributeName === `class` && mutation.target === document.querySelector(`#attachmentmodule`)
) {
if (targetElement.classList.contains(`js-ghx-detail-loaded`)) {
setTimeout(CreateStatusElements2(), 500)
}
}
});
});
observerRapidBoard.observe(targetElement, { attributes: true, subtree: true });
}
})
();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":null,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://*.lkaz.ru/shares/*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":true,"position":14},"meta":{"name":"Joplin:Copy-Code-And-Fix-CSS","uuid":"003cc7d9-4b78-44d7-b58c-55e49f608ac8","modified":1728277729150}}

View File

@ -0,0 +1 @@
{"ts":1708679118027,"data":{}}

View File

@ -0,0 +1,73 @@
// ==UserScript==
// @name Joplin:Copy-Code-And-Fix-CSS
// @namespace https://github.com/le91
// @version 1.0.0
// @description Добавляет кнопку копирования кода с SVG-иконкой и уведомление о успешном копировании к элементам с классами "hljs" в Joplin иконка создается с помощью https://yqnn.github.io/svg-path-editor/
// @author Lukas Endigo
// @match https://*.lkaz.ru/shares/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=joplinapp.org
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Функция для копирования текста в буфер обмена
function copyToClipboard(text) {
const textarea = document.createElement('textarea');
textarea.value = text;
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
}
// Функция для отображения уведомления
function showNotification(pMessage, pTimer) {
const notification = document.createElement('div');
notification.textContent = pMessage;
notification.style.position = 'fixed';
notification.style.top = '10px';
notification.style.right = '10px';
notification.style.background = 'rgba(76, 175, 80, 0.8)';
notification.style.color = 'white';
notification.style.padding = '10px';
notification.style.borderRadius = '5px';
notification.style.whiteSpace = 'pre-wrap';
document.body.appendChild(notification);
setTimeout(() => {
document.body.removeChild(notification);
}, pTimer); // Убираем уведомление через 2 секунды
}
// Выбираем все элементы с классами "joplin-editable" и "hljs"
const elements = document.querySelectorAll('.hljs');
// Для каждого элемента добавляем кнопку "Копировать код" с SVG-иконкой и уведомлением
elements.forEach(element => {
element.style.border = 'solid 1px #767676';
element.style.borderRadius = '5px';
const copyButton = document.createElement('button');
copyButton.innerHTML = `<svg class="svg-icon" viewBox="0 -4 14 26" style="height: 14px;width: 30px;">
<path d="M0 0V19q0 2 2 2L13 21q2 0 2-2L15 6Q15 4 13 4L2 4Q0 4 0 6M3 6 12 6q1 0 1 1L13 18q0 1-1 1L3 19Q2 19 2 18L2 7Q2 6 3 6M4 0 17 0Q19 0 19 2L19 16C19 17 17 17 17 16L17 3Q17 2 16 2L4 2C3 2 3 0 4 0">
</path></svg>
<span style="padding-left: 10px;padding-right: 16px;">Копировать</span>`;
copyButton.style.position = 'absolute';
copyButton.style.top = '0';
copyButton.style.right = '0';
// copyButton.style.marginTop = '-10px';
copyButton.addEventListener('click', () => {
const code = element.textContent;
const isCopied = copyToClipboard(code);
//if (isCopied) {
showNotification('Код скопирован в буфер обмена!\n\n'+code, 1500);
//}
});
element.parentNode.style.position = 'relative'; // Устанавливаем позицию родительского элемента как относительную
element.parentNode.appendChild(copyButton); // Добавляем кнопку в родительский элемент
});
document.querySelector("body > main > div > div.note-main").style.maxWidth = "1400px";
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":1728276330303,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://*.lkaz.ru/apps/memories/facerecognition"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":true,"position":32},"meta":{"name":"Nextcloud:Show-Original-DB-User-ID","uuid":"3a6e0c90-1c88-426e-b870-7570f3a3880e","modified":1728276330300}}

View File

@ -0,0 +1 @@
{"ts":1727325805987,"data":{}}

View File

@ -0,0 +1,91 @@
// ==UserScript==
// @name Nextcloud:Show-Original-DB-User-ID
// @namespace http://tampermonkey.net/
// @version 2024-09-26
// @description Скрипт который добавляет кнопку в меню сайта, позволяющую извлекать и отображать ID элементов из списка, обновляя текстовые значения счетчиков на странице и выводя все ID в консоль.
// @author LukasEndigo
// @match https://*.lkaz.ru/apps/memories/facerecognition
// @icon https://nextcloud.com/c/uploads/2022/03/favicon.png
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Функция для обработки элементов
function processItems() {
// Ищем все элементы с классом vue-recycle-scroller__item-view
const items = document.querySelectorAll('.vue-recycle-scroller__item-view');
// Создаем массив для хранения всех lastPart
const ids = [];
items.forEach(function(item) {
// Находим элемент <a> внутри текущего элемента
const linkElement = item.querySelector('a.cluster');
if (linkElement) {
// Извлекаем href из элемента <a> и разбиваем его по "/"
const href = linkElement.getAttribute('href');
const parts = href.split('/');
const lastPart = parts[parts.length - 1]; // Последняя часть URL, то есть ID
// Находим элемент с классом counter-bubble__counter
const counterElement = item.querySelector('.counter-bubble__counter');
if (counterElement) {
// Получаем текущий текст (число)
const currentCount = counterElement.textContent.trim();
// Проверяем, является ли currentCount числом
if (!isNaN(currentCount) && currentCount !== '' && (lastPart/1)) {
// Вставляем текст " / ID=#ID" к числу
counterElement.textContent = `${currentCount} / ID=#${lastPart}`;
// Сохраняем lastPart в массив
ids.push(lastPart);
}
}
}
});
// Выводим все lastPart в консоль в одну строку, разделяя их запятыми
console.info(ids.join(','));
}
// Ожидаем загрузки страницы
window.addEventListener('load', function() {
// Ищем элемент ul с классом app-navigation__settings
const settingsMenu = document.querySelector('.app-navigation__settings');
if (settingsMenu) {
// Создаем новый элемент li
const newLi = document.createElement('li');
newLi.className = 'app-navigation-entry-wrapper'; // Добавляем класс как у других элементов
// Создаем содержимое li с flex-контейнером
newLi.innerHTML = `
<div class="app-navigation-entry" style="display: flex; align-items: center; padding: 5px;">
<a href="#" title="Отоброзить PERSON ID" class="app-navigation-entry-link" style="display: flex; align-items: center;">
<div class="app-navigation-entry-icon" style="margin-right: 8px;">
<span aria-hidden="true" role="img" class="material-design-icon bell-icon">
<svg fill="currentColor" width="20" height="20" viewBox="0 0 24 24" class="material-design-icon__svg">
<path d="M12,22A2,2 0 0,0 14,20H10A2,2 0 0,0 12,22M18,16V11A6,6 0 0,0 12,5V4A1,1 0 0,0 11,3A1,1 0 0,0 10,4V5A6,6 0 0,0 6,11V16L4,18V19H20V18L18,16Z"></path>
</svg>
</span>
</div>
<span class="app-navigation-entry__name">Отоброзить</span>
</a>
</div>
`;
// Добавляем новый элемент в ul
settingsMenu.appendChild(newLi);
// Добавляем обработчик клика для новой ссылки
newLi.querySelector('a').addEventListener('click', function(e) {
e.preventDefault(); // Останавливаем переход по ссылке
processItems(); // Вызов функции показа уведомления
});
}
});
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://lseo.jv.mt-s.kz:4443/service/f?p=4000:4500*","https://lseo.jv.mt-s.kz:4443/service/f?p=4000:8000*","https://online.lse.kz/service/f?p=4000:4500*","https://online.lse.kz/service/f?p=4000:8000*","https://asut-clone.erg.kz/apex/f?p=4000:4500*","https://asut-clone.erg.kz/apex/f?p=4000:8000*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":null},"settings":{"enabled":false,"position":21},"meta":{"name":"Oracle Apex 22, asut-clone.erg.kz","uuid":"bf21d4c0-e4c2-45b8-a01e-4cc1aafb4f4f","modified":1709614216895}}

View File

@ -0,0 +1 @@
{"ts":1709614216898,"data":{}}

View File

@ -0,0 +1,276 @@
// ==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 = `
<div class="a-Property-fieldContainer" id="P4500_LEMODALPAGEREVERS_CONT">
<select size="1" class="a-Property-field a-Property-field--select" id="P4500_LEMODALPAGEREVERS_SELECT" data-property-id="11">
</select>
</div>
`;
// Вставить новый элемент после "utilitiesMenu"
utilitiesMenu.insertAdjacentElement('afterend', newElement);
document.querySelector("#P4500_LEMODALPAGEREVERS_MAIN").setAttribute("style","margin-right: 5px;border-width:1px")
document.querySelector("#P4500_LEMODALPAGEREVERS_CONT").setAttribute("style","padding:3px")
}
}
// Получить элемент select
var selectElement = document.getElementById('P4500_LEMODALPAGEREVERS_SELECT');
// Проверка наличия элемента
if (selectElement) {
// Очистить содержимое элемента select
selectElement.innerHTML = '';
// Заполнить элементами от pagePathParts
foundPages.forEach(function (page, index) {
// Проверить, было ли уже добавлено значение
if (!addedValues[page]) {
var option = document.createElement('option');
option.value = index + 1;
option.innerHTML = `<a href="#" target="_blank">${page}</a>`;
selectElement.appendChild(option);
// Добавить значение в объект, чтобы избежать дублирования
addedValues[page] = true;
}
});
}
} else {
console.log('No pages found with id ' + vSearchString);
}
} else {
try {
var selectElementTry = document.getElementById('P4500_LEMODALPAGEREVERS_SELECT');
selectElementTry.innerHTML = '';
var option = document.createElement('option');
option.value = 1;
option.innerHTML = `Сессия изменена, попробуйте выполнить поиск, и после обновить страницу`;
selectElementTry.appendChild(option);
} catch {}
console.log('Element with id "search_results" not found');
}
})
.catch(error => console.error("Error:", error));
} else {
console.log('Ошибка'+'\n'+'vLength ||| ' +vLength
+'\n'+'localStorage.getItem(nameLE_pProtected).length ||| ' + localStorage.getItem(nameLE_pProtected).length
+'\n'+'localStorage.getItem(nameLE_pSession) ||| ' + localStorage.getItem(nameLE_pSession)
+'\n'+"apex.item('pInstance').getValue() ||| " + apex.item('pInstance').getValue()
)
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 = `
<div class="a-Property-fieldContainer" id="P4500_LEMODALPAGEREVERS_CONT">
<input class="a-Property-field a-Property-field--readOnly" readonly="true" value="Выполните поиск для запуска функционала" type="text">
</div>
`;
// Вставить новый элемент после "utilitiesMenu"
utilitiesMenu.insertAdjacentElement('afterend', newElement);
document.querySelector("#P4500_LEMODALPAGEREVERS_MAIN").setAttribute("style","margin-right: 5px;border-width:1px")
document.querySelector("#P4500_LEMODALPAGEREVERS_CONT").setAttribute("style","padding:3px; width:260px")
}
}
}};
// Начать наблюдение с возможностью повтора через 5 секунд
// startObservingWithRetry();
startObservingWithRetry(targetNode, observer, config);
// Функция для начала наблюдения с возможностью повтора через 5 секунд
function startObservingWithRetry(targetNode, observer, config) {
try {
if (targetNode === null) {
console.log ('NULL|'+observer)
startSearch()
} else {
targetNode = document.getElementById('a_PageDesigner');
observer.observe(targetNode, config);
}
} catch (error) {
console.error('Error starting observing:', error);
// Повторная попытка через 5 секунд
setTimeout(() => startObservingWithRetry(targetNode, observer, config), 5000);
}
}
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["http://online.intercom.kz/apex/*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":null},"settings":{"enabled":true,"position":1},"meta":{"name":"Oracle Apex Buttons - русский","uuid":"45ec050e-986b-4db9-bfed-39d116c208eb","modified":1684828951831,"file_url":"https://gitlabappserver.lkaz.ru/lukas91/js-tampermonkey-public-scripts/raw/branch/main/Oracle%20Apex%20Buttons%20-%20%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9.user.js"}}

View File

@ -0,0 +1 @@
{"ts":1707563388949,"data":{}}

View File

@ -0,0 +1,73 @@
// ==UserScript==
// @name Oracle Apex Buttons - русский
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match http://online.intercom.kz/apex/*
// @icon http://anpsthemes.com/constructo/wp-content/uploads/2014/12/favicon.png
// @grant GM_registerMenuCommand
// ==/UserScript==
console.log ("Меню интегрирован");
GM_registerMenuCommand ("Запуск", start);
GM_registerMenuCommand ("Изменить размер формы", form_fix);
GM_registerMenuCommand ("Выбрать все Items", select_all_items);
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function start () {
const tree_main = document.querySelector("#PDrenderingTree");
const all_li1 = tree_main.querySelectorAll("li");
const region_li = Array.from(all_li1).filter(li => li.outerText.includes("Region Buttons"));
//const region_lis = region_li.map(li => li.id);
const last_region_li = region_li[region_li.length - 1];
const last_region_id = last_region_li.id;
//console.log(last_region_id); // Выводим идентификатор последнего элемента
const all_buttoms = document.querySelector('#'+last_region_id);
const all_li2 = all_buttoms.querySelectorAll("li");
// Фильтруем элементы списка <li>, содержащие текст "SAVE"
const save_li = Array.from(all_li2).filter(li => li.outerText.includes("SAVE"));
// Создаем массив, содержащий идентификаторы элементов <li>, соответствующих отфильтрованным записям
const save_id = save_li.map(li => li.id)[0];
//console.log(save_ids); // Выводим массив идентификаторов
document.querySelector('#'+save_id).click();
setTimeout(() => {
document.querySelector("#peMain_2").value = "Применить";
}, 1000);
}
function form_fix () {
document.querySelector("body > div.ui-dialog.ui-corner-all.ui-widget.ui-widget-content.ui-front.ui-dialog--apex.a-Dialog--wizard.ui-draggable.ui-resizable").setAttribute("style","position: fixed; height: 850px; width: 800px; top: 30px; left: 498.5px; z-index: 903;")
document.querySelector("#apex_dialog_1").setAttribute("style","width: auto;min-height: 0px;max-height: none;height: auto;")
document.querySelector("#wwvFlowForm > div.a-Dialog.a-Dialog--wizard > div > div.a-Dialog-body").setAttribute("style","top: 58px;bottom: 64px;height: auto;paddinf:0px;")
}
function select_all_items () {
const selectedElement = document.querySelector("div.a-TreeView-content.is-selected");
if (selectedElement) {
const nextElement = selectedElement.nextElementSibling;
if (nextElement) {
console.log(nextElement);
} else {
console.log("Следующий элемент не найден.");
}
} else {
console.log("Выбранный элемент не найден.");
}
}

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":1728276682236,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://lseo.jv.mt-s.kz:4443/service/f?p=4000:4500*","https://lseo.jv.mt-s.kz:4443/service/f?p=4000:8000*","https://online.lse.kz/service/f?p=4000:4500*","https://online.lse.kz/service/f?p=4000:8000*","https://asut-clone.erg.kz/apex/f?p=4000:4500*","https://asut-clone.erg.kz/apex/f?p=4000:8000*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":true,"position":12},"meta":{"name":"OracleApex5:Get-External-Internal-Url-From-Page-Use-Search","uuid":"726b753c-c2a0-4048-94c3-592702b1ff97","modified":1728276682234,"file_url":"https://gitlabappserver.lkaz.ru/lukas91/js-tampermonkey-public-scripts/raw/branch/main/Oracle%20Apex%205%2C%20lseo.jv.mt-s.kz.user.js"}}

View File

@ -0,0 +1 @@
{"ts":1707812523929,"data":{}}

View File

@ -0,0 +1,271 @@
// ==UserScript==
// @name OracleApex5:Get-External-Internal-Url-From-Page-Use-Search
// @namespace http://tampermonkey.net/
// @version 2024-02-13
// @description Скрипт, который отслеживает изменения в элементе страницы с помощью MutationObserver, извлекает данные с сервера, добавляет их в выпадающий список и обновляет информацию в зависимости от полученных результатов поиска.
// @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://docs.oracle.com/favicon.ico
// @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.host + "/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 = `
<div class="a-Property-fieldContainer" id="P4500_LEMODALPAGEREVERS_CONT">
<select size="1" class="a-Property-field a-Property-field--select" id="P4500_LEMODALPAGEREVERS_SELECT" data-property-id="11">
</select>
</div>
`;
// Вставить новый элемент после "utilitiesMenu"
utilitiesMenu.insertAdjacentElement('afterend', newElement);
document.querySelector("#P4500_LEMODALPAGEREVERS_MAIN").setAttribute("style","margin-right: 5px;border-width:1px")
document.querySelector("#P4500_LEMODALPAGEREVERS_CONT").setAttribute("style","padding:3px")
}
}
// Получить элемент select
var selectElement = document.getElementById('P4500_LEMODALPAGEREVERS_SELECT');
// Проверка наличия элемента
if (selectElement) {
// Очистить содержимое элемента select
selectElement.innerHTML = '';
// Заполнить элементами от pagePathParts
foundPages.forEach(function (page, index) {
// Проверить, было ли уже добавлено значение
if (!addedValues[page]) {
var option = document.createElement('option');
option.value = index + 1;
option.innerHTML = `<a href="#" target="_blank">${page}</a>`;
selectElement.appendChild(option);
// Добавить значение в объект, чтобы избежать дублирования
addedValues[page] = true;
}
});
}
} else {
console.log('No pages found with id ' + vSearchString);
}
} else {
try {
var selectElementTry = document.getElementById('P4500_LEMODALPAGEREVERS_SELECT');
selectElementTry.innerHTML = '';
var option = document.createElement('option');
option.value = 1;
option.innerHTML = `Сессия изменена, попробуйте выполнить поиск, и после обновить страницу`;
selectElementTry.appendChild(option);
} catch {}
console.log('Element with id "search_results" not found');
}
})
.catch(error => console.error("Error:", error));
} else {
console.log('Ошибка'+'\n'+'vLength ||| ' +vLength
+'\n'+'localStorage.getItem(nameLE_pProtected).length ||| ' + localStorage.getItem(nameLE_pProtected).length
+'\n'+'localStorage.getItem(nameLE_pSession) ||| ' + localStorage.getItem(nameLE_pSession)
+'\n'+"apex.item('pInstance').getValue() ||| " + apex.item('pInstance').getValue()
)
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 = `
<div class="a-Property-fieldContainer" id="P4500_LEMODALPAGEREVERS_CONT">
<input class="a-Property-field a-Property-field--readOnly" readonly="true" value="Выполните поиск для запуска функционала" type="text">
</div>
`;
// Вставить новый элемент после "utilitiesMenu"
utilitiesMenu.insertAdjacentElement('afterend', newElement);
document.querySelector("#P4500_LEMODALPAGEREVERS_MAIN").setAttribute("style","margin-right: 5px;border-width:1px")
document.querySelector("#P4500_LEMODALPAGEREVERS_CONT").setAttribute("style","padding:3px; width:260px")
}
}
}};
// Начать наблюдение с возможностью повтора через 5 секунд
// startObservingWithRetry();
startObservingWithRetry(targetNode, observer, config);
// Функция для начала наблюдения с возможностью повтора через 5 секунд
function startObservingWithRetry(targetNode, observer, config) {
try {
if (targetNode === null) {
console.log ('NULL|'+observer)
startSearch()
} else {
targetNode = document.getElementById('a_PageDesigner');
observer.observe(targetNode, config);
}
} catch (error) {
console.error('Error starting observing:', error);
// Повторная попытка через 5 секунд
setTimeout(() => startObservingWithRetry(targetNode, observer, config), 5000);
}
}
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://lseo.jv.mt-s.kz:4443/service/f?p=4000:4500*","https://lseo.jv.mt-s.kz:4443/service/f?p=4000:8000*","https://online.lse.kz/service/f?p=4000:4500*","https://online.lse.kz/service/f?p=4000:8000*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":null},"settings":{"enabled":false,"position":20},"meta":{"name":"Search Menu - Oracle Apex 5, lseo.jv.mt-s.kz","uuid":"41ebf64f-b1a5-434f-802e-4df4f9d7f294","modified":1709396709447}}

View File

@ -0,0 +1 @@
{"ts":1709396799975,"data":{}}

View File

@ -0,0 +1,274 @@
// ==UserScript==
// @name Search Menu - Oracle Apex 5, lseo.jv.mt-s.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*
// @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 = `
<div class="a-Property-fieldContainer" id="P4500_LEMODALPAGEREVERS_CONT">
<select size="1" class="a-Property-field a-Property-field--select" id="P4500_LEMODALPAGEREVERS_SELECT" data-property-id="11">
</select>
</div>
`;
// Вставить новый элемент после "utilitiesMenu"
utilitiesMenu.insertAdjacentElement('afterend', newElement);
document.querySelector("#P4500_LEMODALPAGEREVERS_MAIN").setAttribute("style","margin-right: 5px;border-width:1px")
document.querySelector("#P4500_LEMODALPAGEREVERS_CONT").setAttribute("style","padding:3px")
}
}
// Получить элемент select
var selectElement = document.getElementById('P4500_LEMODALPAGEREVERS_SELECT');
// Проверка наличия элемента
if (selectElement) {
// Очистить содержимое элемента select
selectElement.innerHTML = '';
// Заполнить элементами от pagePathParts
foundPages.forEach(function (page, index) {
// Проверить, было ли уже добавлено значение
if (!addedValues[page]) {
var option = document.createElement('option');
option.value = index + 1;
option.innerHTML = `<a href="#" target="_blank">${page}</a>`;
selectElement.appendChild(option);
// Добавить значение в объект, чтобы избежать дублирования
addedValues[page] = true;
}
});
}
} else {
console.log('No pages found with id ' + vSearchString);
}
} else {
try {
var selectElementTry = document.getElementById('P4500_LEMODALPAGEREVERS_SELECT');
selectElementTry.innerHTML = '';
var option = document.createElement('option');
option.value = 1;
option.innerHTML = `Сессия изменена, попробуйте выполнить поиск, и после обновить страницу`;
selectElementTry.appendChild(option);
} catch {}
console.log('Element with id "search_results" not found');
}
})
.catch(error => console.error("Error:", error));
} else {
console.log('Ошибка'+'\n'+'vLength ||| ' +vLength
+'\n'+'localStorage.getItem(nameLE_pProtected).length ||| ' + localStorage.getItem(nameLE_pProtected).length
+'\n'+'localStorage.getItem(nameLE_pSession) ||| ' + localStorage.getItem(nameLE_pSession)
+'\n'+"apex.item('pInstance').getValue() ||| " + apex.item('pInstance').getValue()
)
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 = `
<div class="a-Property-fieldContainer" id="P4500_LEMODALPAGEREVERS_CONT">
<input class="a-Property-field a-Property-field--readOnly" readonly="true" value="Выполните поиск для запуска функционала" type="text">
</div>
`;
// Вставить новый элемент после "utilitiesMenu"
utilitiesMenu.insertAdjacentElement('afterend', newElement);
document.querySelector("#P4500_LEMODALPAGEREVERS_MAIN").setAttribute("style","margin-right: 5px;border-width:1px")
document.querySelector("#P4500_LEMODALPAGEREVERS_CONT").setAttribute("style","padding:3px; width:260px")
}
}
}};
// Начать наблюдение с возможностью повтора через 5 секунд
// startObservingWithRetry();
startObservingWithRetry(targetNode, observer, config);
// Функция для начала наблюдения с возможностью повтора через 5 секунд
function startObservingWithRetry(targetNode, observer, config) {
try {
if (targetNode === null) {
console.log ('NULL|'+observer)
startSearch()
} else {
targetNode = document.getElementById('a_PageDesigner');
observer.observe(targetNode, config);
}
} catch (error) {
console.error('Error starting observing:', error);
// Повторная попытка через 5 секунд
setTimeout(() => startObservingWithRetry(targetNode, observer, config), 5000);
}
}
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":1728276962016,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://app.huawei.com/iscp/esupplier/portal*"],"orig_noframes":null,"orig_run_at":"document-end","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":false,"position":28},"meta":{"name":"Sync:Extension-For-app.huawei.com-Actual","uuid":"eec3fe7b-1732-4770-a17b-f5a48904180b","modified":1728276962011}}

View File

@ -0,0 +1 @@
{"ts":1723457560544,"data":{}}

View File

@ -0,0 +1,197 @@
// ==UserScript==
// @name Sync:Extension-For-app.huawei.com-Actual
// @namespace https://github.com/le91
// @version 1.14--12.08.2024
// @description Перехватываем XMLHttpRequest и обновляем глобальные переменные для кнопки "Синхронизация"
// @author LukasEndigo
// @match https://app.huawei.com/iscp/esupplier/portal*
// @icon https://www.google.com/s2/favicons?sz=64&domain=app.huawei.com
// @run-at document-end
// ==/UserScript==
'use strict';
// Глобальные переменные
let Global_poHeaderId, Global_instanceId, Global_poReleaseId;
// Перехват XMLHttpRequest
(function() {
console.log('*************** ЛОГ function');
// Сохранение оригинальных методов XMLHttpRequest
const originalOpen = XMLHttpRequest.prototype.open;
const originalSend = XMLHttpRequest.prototype.send;
console.log('*************** ЛОГ originalOpen и originalSend');
// Переопределение метода open
XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
this._url = url; // Сохраняем URL запроса
return originalOpen.apply(this, arguments);
};
console.log('*************** ЛОГ originalOpen и originalSend');
// Переопределение метода send
XMLHttpRequest.prototype.send = function(body) {
console.log('*************** ЛОГ XMLHttpRequest.prototype.send = function(body)');
// Проверка URL с использованием includes для поиска части пути
if (this._url && this._url.includes('/iscp/esupplier/po/services/poList/findPoLineList/20/1')) {
console.log('*************** ЛОГ','XMLHttpRequest.prototype.send = function(body)');
try {
console.log('*************** ЛОГ','JSON.parse(body)');
const requestPayload = JSON.parse(body); // Пытаемся распарсить Request Payload
// Обновление глобальных переменных из requestPayload
if (requestPayload.poHeaderId) Global_poHeaderId = requestPayload.poHeaderId;
if (requestPayload.instanceId) Global_instanceId = requestPayload.instanceId;
if (requestPayload.poReleaseId) Global_poReleaseId = requestPayload.poReleaseId;
console.log('*************** ЛОГ','if Global_poHeaderId');
console.log('Перехваченный запрос на URL:', this._url);
console.log('Request Payload:', requestPayload); // Здесь requestPayload - это содержимое запроса
console.log('Request Payload, Global_poHeaderId:', Global_poHeaderId); // Здесь requestPayload - это содержимое запроса
console.log('Request Payload, Global_instanceId:', Global_instanceId); // Здесь requestPayload - это содержимое запроса
console.log('Request Payload, Global_poReleaseId:', Global_poReleaseId); // Здесь requestPayload - это содержимое запроса
} catch (e) {
console.error('Ошибка при парсинге Request Payload:', e);
console.log('*************** ЛОГ','Request Payload:');
}
}
if (1 == 1) {
console.log('*************** ЛОГ','1 == 1 ');
try {
console.log('*************** ЛОГ',' TRY 1 ');
const requestPayload = JSON.parse(body); // Пытаемся распарсить Request Payload
// Обновление глобальных переменных из requestPayload
if (requestPayload.poHeaderId) Global_poHeaderId = requestPayload.poHeaderId;
if (requestPayload.instanceId) Global_instanceId = requestPayload.instanceId;
if (requestPayload.poReleaseId) Global_poReleaseId = requestPayload.poReleaseId;
console.log('*************** ЛОГ','Global_poHeaderId 2222 ');
console.log('Перехваченный запрос на URL:', this._url);
console.log('Request Payload:', requestPayload); // Здесь requestPayload - это содержимое запроса
console.log('Request Payload, Global_poHeaderId:', Global_poHeaderId); // Здесь requestPayload - это содержимое запроса
console.log('Request Payload, Global_instanceId:', Global_instanceId); // Здесь requestPayload - это содержимое запроса
console.log('Request Payload, Global_poReleaseId:', Global_poReleaseId); // Здесь requestPayload - это содержимое запроса
} catch (e) {
console.error('Ошибка при парсинге Request Payload:', e);
}
}
console.log('*************** ЛОГ','END END END');
return originalSend.apply(this, arguments);
};
})();
console.log('*************** ЛОГ','FREEE 82');
// Наблюдатель для отслеживания изменений в DOM
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.addedNodes) {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1) { // элемент
checkAndAddSyncButton(node);
}
});
}
});
});
// Запуск наблюдателя
observer.observe(document.body, { childList: true, subtree: true });
// Проверка и добавление кнопки "Синхронизация"
function checkAndAddSyncButton(node) {
const targetClass = "webix_view webix_hwFlextableV2_toolbar webix_layout_line";
if (node.classList && node.classList.contains(targetClass)) {
addSyncButton(node);
}
node.querySelectorAll(`.${targetClass.split(" ").join(".")}`).forEach(addSyncButton);
}
function addSyncButton(container) {
console.log('ЗАПУСК Перехвачено 84 paramsNew:');
const exportTemplateButton = Array.from(container.querySelectorAll('button.webixtype_default'))
.find(button => button.textContent.trim() === 'Export Acceptance Template');
if (exportTemplateButton) {
// Создаем кнопку, если она еще не добавлена
if (!container.querySelector('.le-skynet-sync-button')) {
const syncButton = document.createElement('div');
syncButton.className = 'webix_view webix_control webix_el_button hwButtonV2 webix_hwFlextableV2_customBtn le-skynet-sync-button';
syncButton.style.cssText = 'display: inline-block; vertical-align: top; border-width: 0px; margin-top: 0px; margin-left: -1px; width: 188px; height: 34px;';
syncButton.innerHTML = '<div class="webix_el_box" style="width:188px; height:34px"><button type="button" class="webixtype_default" style="">Синхронизация</button></div>';
syncButton.querySelector('button').addEventListener('click', () => executeSyncRequest(syncButton));
exportTemplateButton.parentElement.parentElement.insertAdjacentElement('afterend', syncButton);
console.log('Добавлена кнопка "Синхронизация", Global_poHeaderId:', Global_poHeaderId);
}
}
}
// Function to execute sync request on button click
function executeSyncRequest(buttonContainer) {
const button = buttonContainer.querySelector('button');
button.disabled = true;
button.textContent = 'В процессе синхронизации';
button.style.cssText = 'border: 1px solid #ffffff; background-color: rgb(170 230 255); cursor: wait;';
console.log('ЗАПУСК Перехвачено 112 paramsNew:');
fetch("https://app.huawei.com/iscp/esupplier/po/services/poList/findPoLineList/20/1", {
headers: {
"Accept": "*/*",
"Accept-Language": "ru,en;q=0.9",
"Content-Type": "application/json"
},
referrer: "https://app.huawei.com/iscp/esupplier/portal/",
referrerPolicy: "strict-origin-when-cross-origin",
body: JSON.stringify({
instanceId: Global_instanceId,
poHeaderId: Global_poHeaderId,
poReleaseId: Global_poReleaseId,
poSubType: "E",
calculateOrderAmount: true
}),
method: "POST",
mode: "cors",
credentials: "include"
})
.then(response => response.json())
.then(data => {
// console.log('Синхронизация данные:', JSON.stringify(data, null, 2)); // Форматирование JSON для удобного просмотра
console.log('ЗАПУСК Перехвачено 135 paramsNew:');
return fetch("https://huawei-po-5m2hn5f7q75izgid.lse.kz/api/app_huawei_po", {
headers: {
"Content-Type": "application/json"
},
method: "POST",
body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => {
console.log('Отправка запросом poHeaderId как:', Global_poHeaderId, '| ответ:', JSON.stringify(result));
// console.log('Ответ от API:', JSON.stringify(result, null, 2));
if (result.detail !== "OK Status") {
throw new Error('Ошибка от API');
}
});
})
.catch(error => {
button.style.backgroundColor = 'rgb(255 200 200)';
console.error('Error:', error);
button.textContent = 'ОШИБКА';
button.disabled = true;
})
.finally(() => {
button.disabled = false;
if (button.textContent !== 'ОШИБКА') {
button.textContent = 'Успешно';
button.style.backgroundColor = 'rgb(200 245 200)';
button.style.cursor = '';
button.style.border = '1px solid #d9d9d9';
button.disabled = false;
}
});
console.log('ЗАПУСК Перехвачено 168 paramsNew:');
}
console.log('=======================================Успешно внедрен==============================================');

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":null,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["http://10.10.5.118:5000/","https://10.10.5.118:5001/","http://10.10.1.17:5000/"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":true,"position":22},"meta":{"name":"Synology:Update-FileStation-Tree-File-Lists","uuid":"c6d3a9b2-acf1-4506-93fd-fcc3d1559379","modified":1728277454393}}

View File

@ -0,0 +1 @@
{"ts":1716178023696,"data":{}}

View File

@ -0,0 +1,40 @@
// ==UserScript==
// @name Synology:Update-FileStation-Tree-File-Lists
// @namespace http://tampermonkey.net/
// @version 2024-05-20
// @description Скрипт, который добавляет новые CSS стили для элементов дерева на странице, изменяя их отображение, размеры и отступы.
// @author LukasEndigo
// @match http://10.10.5.118:5000/
// @match https://10.10.5.118:5001/
// @match http://10.10.1.17:5000/
// @icon https://www.google.com/s2/favicons?sz=64&domain=demo.synology.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Создаем новый элемент <style>
var style = document.createElement('style');
style.type = 'text/css';
// Добавляем CSS правила в элемент <style>
style.innerHTML = '.syno-ux-treepanel .x-tree-node-el {' +
'display: table;' +
'width: 100%;' +
'line-height: 14px;' +
'height: 14px;' +
'overflow: hidden;' +
'}' +
'' +
'.syno-ux-treepanel .x-tree-node .x-tree-ec-icon {' +
'height: 14px;' +
'width: 14px;' +
'margin: -2px 4px 0px 0px' +
'}'
;
// Находим элемент <head> и добавляем туда наш новый элемент <style>
document.head.appendChild(style);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":false,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["http://online.intercom.kz/apex/f?p=4000:4008*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":null},"settings":{"enabled":true,"position":2},"meta":{"name":"Tampermonkey Example - GET request with jQuery","uuid":"febc225d-a8a3-4252-a5d7-5b1a745ca858","modified":1684828911422}}

View File

@ -0,0 +1 @@
{"ts":1707563388950,"data":{}}

View File

@ -0,0 +1,129 @@
// ==UserScript==
// @name Tampermonkey Example - GET request with jQuery
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match http://online.intercom.kz/apex/f?p=4000:4008*
// @icon https://www.google.com/s2/favicons?sz=64&domain=intercom.kz
// @grant GM_xmlhttpRequest
// ==/UserScript==
(function() {
'use strict';
// Make GET request with jQuery
var text = ""
var str = ""
var arr = ""
setTimeout(() => {
var link = window.location.href.split(":")
var session = link[3];
$.get("http://online.intercom.kz/apex/f?p=4000:4070:"+session+":::::", function(data) {
var response = data;
var parser = new DOMParser();
var htmlDoc = parser.parseFromString(response, 'text/html');
var table = htmlDoc.querySelector('#R47949307778486335_data_panel');
var rows = table.querySelectorAll('tr');
//console.log(rows);
var cur_link = window.location.href.split(":")
var old_url = window.location.href.split("/");
var url_header = old_url[old_url.length - 1];
var v_parts = url_header.split(':');
v_parts.pop();
var new_url = v_parts.join(':') + ':';
//console.log(new_url);
var id_curr = cur_link[8];
var id_curr_text = ''
var id_next = ''
var id_next_text = ''
var id_prev = ''
var id_prev_text = ''
var my_id = 0;
// Loop through each row to find the index of the row with the specified selector
for (var i = 0; i < rows.length; i++) {
if (rows[i].innerHTML.includes(id_curr)) {
my_id = i
//console.log('my_id:'+my_id + ' or ' + i);
}
};
for (var i2 = 0; i2 < rows.length; i2++) {
try {
if ((my_id-1) == i2) {
//console.log("Моя предыщая запись:" + i2);
text = rows[i2].innerHTML.split(":")[7]
str = text.split("<")[0]
arr = str.split('">');
id_prev = arr[0];
id_prev_text = arr[1];
}
}
catch (e) {
id_prev = '';
id_prev_text = '.';
};
try {
if (my_id==i2) {
//console.log("Моя текущая запись:" + my_id + ' | это: '+ id_curr);
text = rows[i2].innerHTML.split(":")[7]
str = text.split("<")[0]
arr = str.split('">');
id_curr = arr[0];
id_curr_text = arr[1];
}
} catch(e) {
id_prev = '';
id_prev_text = '.';
};
try {
if (my_id+1==i2) {
//console.log("Моя следующая запись:" + i2);
text = rows[i2].innerHTML.split(":")[7]
str = text.split("<")[0]
arr = str.split('">');
id_next = arr[0];
id_next_text = arr[1];
}
} catch(e) {
id_prev = '';
id_prev_text = '.';
}
}
var old_buttons = document.querySelector("#R91255107460444101 > div > div.a-ButtonRegion-col.a-ButtonRegion-col--right > div").innerHTML
var rows_length = rows.length - 1
var v_counter = '<button class="a-Button " id="button_curr_text" disabled>('+ rows_length +') '+my_id +' </button>'
if (id_prev_text != '.') {id_prev_text = '<button onclick="apex.navigation.redirect(\''+ new_url+id_prev +'\');" class="a-Button " type="button" id="button_prev_text">'+id_prev_text+'</button>'} else {id_prev_text = ''}
id_curr_text = '<button onclick="apex.navigation.redirect(\''+ new_url+id_curr +'\');" class="a-Button a-Button--hot" type="button" id="button_curr_text" disabled>'+id_curr_text+'</button>'
if (id_next_text != '.') {id_next_text = '<button onclick="apex.navigation.redirect(\''+ new_url+id_next +'\');" class="a-Button " type="button" id="button_next_text">'+id_next_text+'</button>'} else {id_next_text = ''}
old_buttons = v_counter + id_prev_text + id_curr_text + id_next_text + '<span style="margin-right: 80px;"></span>' + old_buttons
document.querySelector(".a-ButtonRegion-col--right > div").innerHTML = old_buttons
//console.log(id_prev);
//console.log(id_prev_text);
//console.log(id_curr);
//console.log(id_curr_text);
//console.log(id_next);
//console.log(id_next_text);
});
}, 100);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://traefik-sdsdcrsoita9e6uknkyn.skynet.kz/dashboard/"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":null},"settings":{"enabled":false,"position":26},"meta":{"name":"Test 01 go link","uuid":"057f272d-20db-46c7-b457-eedbdf1c2c28","modified":1721713910449}}

View File

@ -0,0 +1 @@
{"ts":1721713910453,"data":{}}

53
Test 01 go link.user.js Normal file
View File

@ -0,0 +1,53 @@
// ==UserScript==
// @name Test 01 go link
// @namespace http://tampermonkey.net/
// @version 2024-07-23
// @description try to take over the world!
// @author You
// @match https://traefik-sdsdcrsoita9e6uknkyn.skynet.kz/dashboard/
// @icon https://www.google.com/s2/favicons?sz=64&domain=skynet.kz
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Функция для добавления ссылки
function addLink(element, url) {
const link = document.createElement('a');
link.href = url;
link.target = '_blank';
link.textContent = 'Open Link';
const div = document.createElement('div');
div.style.marginBottom = '10px'; // Добавляем отступ для красоты
div.appendChild(link);
element.parentNode.insertBefore(div, element);
}
// Функция для обработки каждой строки таблицы
function processTableRows() {
const rows = document.querySelectorAll('tbody > tr');
rows.forEach(row => {
const hostCell = row.querySelector('.app-chip-rule');
if (hostCell && hostCell.textContent.includes('Host(`oraclexe.skynet.kz`)')) {
const entryPointCell = row.querySelector('.app-chip-entry-points');
if (entryPointCell) {
const entryPoint = entryPointCell.textContent.trim();
const hostText = hostCell.textContent.replace('Host(', '').replace(')', '').trim();
let url;
if (entryPoint === 'http') {
url = `http://${hostText}`;
} else if (entryPoint === 'https') {
url = `https://${hostText}`;
}
if (url) {
addLink(hostCell, url);
}
}
}
});
}
// Запускаем обработку после загрузки страницы
window.addEventListener('load', processTableRows);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://traefik-sdsdcrsoita9e6uknkyn.skynet.kz/dashboard/"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1721714266531},"settings":{"enabled":true,"position":27},"meta":{"name":"Test Go link 2","uuid":"e2d7a86a-5250-469a-887f-d6a9fce089d5","modified":1721714266530}}

View File

@ -0,0 +1 @@
{"ts":1721713943952,"data":{}}

60
Test Go link 2.user.js Normal file
View File

@ -0,0 +1,60 @@
// ==UserScript==
// @name Test Go link 2
// @namespace http://tampermonkey.net/
// @version 2024-07-23
// @description try to take over the world!
// @author You
// @match https://traefik-sdsdcrsoita9e6uknkyn.skynet.kz/dashboard/
// @icon https://www.google.com/s2/favicons?sz=64&domain=skynet.kz
// @grant none
// ==/UserScript==
(function() {
'use strict';
console.log('Start 15')
// Utility function to select elements by attribute pattern
function querySelectorAllByAttrPattern(attributePattern) {
const allElements = document.getElementsByTagName('*');
const matchingElements = [];
for (let el of allElements) {
for (let attr of el.attributes) {
if (attributePattern.test(attr.name)) {
matchingElements.push(el);
break;
}
}
}
return matchingElements;
}
// Utility function to create and insert the link
function createAndInsertLink(hostElem, protocol) {
const hostName = hostElem.textContent.match(/Host\(`([^`]+)`\)/)[1];
const url = `${protocol}://${hostName}`;
const linkDiv = document.createElement('div');
const link = document.createElement('a');
link.href = url;
link.target = '_blank';
link.textContent = `Open ${hostName}`;
linkDiv.appendChild(link);
hostElem.parentNode.insertBefore(linkDiv, hostElem);
}
// Select all elements with the specified attribute pattern
const elements = querySelectorAllByAttrPattern(/^data-v-.*/);
console.log('Start 46')
elements.forEach(element => {
const hostElem = element.querySelector('.q-chip.app-chip-rule .q-chip__content');
const protocolElem = element.querySelector('.q-chip.app-chip-entry-points .q-chip__content');
if (hostElem && protocolElem) {
const protocol = protocolElem.textContent.trim();
if (protocol === 'http' || protocol === 'https') {
createAndInsertLink(hostElem, protocol);
console.log('Start 55')
}
}
});
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":1728276998333,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://*.skynet.kz/dashboard/*","https://*.lkaz.ru/dashboard/*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":true,"position":24},"meta":{"name":"Treafik:Update-Dashboard-Style","uuid":"88cfb989-65ad-4375-8857-338e3338b3c2","modified":1728276998332}}

View File

@ -0,0 +1 @@
{"ts":1721190583352,"data":{}}

View File

@ -0,0 +1,40 @@
// ==UserScript==
// @name Treafik:Update-Dashboard-Style
// @namespace http://tampermonkey.net/
// @version 2024-07-17
// @description Скрипт, который отслеживает изменения на странице и изменяет стили всех элементов с классом `.q-card__section`, добавляя отступы, рамку и скругление углов.
// @author LukasEndigo
// @match https://*.skynet.kz/dashboard/*
// @match https://*.lkaz.ru/dashboard/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=https://traefik.io
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Функция для изменения стилей элементов
function changeStyles(element) {
element.style.margin = '1px 0px 1px 0px';
element.style.padding = '2px';
element.style.border = 'solid 1px #dfdfdf';
element.style.borderRadius = '6px';
}
// Создаем MutationObserver для отслеживания изменений на странице
const observer = new MutationObserver(() => {
// Находим все элементы, соответствующие селектору
document.querySelectorAll('.q-card__section').forEach(element => {
changeStyles(element);
});
});
// Наблюдаем за всем телом документа на предмет изменений
observer.observe(document.body, { childList: true, subtree: true });
// Первоначальное изменение стилей при загрузке страницы
document.querySelectorAll('.q-card__section').forEach(element => {
changeStyles(element);
});
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":false,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://hub.docker.com/r/*","https://hub.docker.com/u/*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":"document-idle","sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1709395690332},"settings":{"enabled":true,"position":6},"meta":{"name":"TryShowDockerFileTag","uuid":"670cded8-896d-43d8-9de5-1b98c4dfec18","modified":1708921255741}}

View File

@ -0,0 +1 @@
{"ts":1707563388956,"data":{}}

View File

@ -0,0 +1,30 @@
// ==UserScript==
// @name TryShowDockerFileTag
// @namespace https://github.com/le91
// @version 1.0.0
// @description Попробовать показать вкладку DockerFile
// @author You
// @match https://hub.docker.com/r/*
// @match https://hub.docker.com/u/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=docker.com
// @grant none
// ==/UserScript==
(function() {
window.onload = setTimeout(function() {
// Ваш код скрипта здесь
const v_default = document.querySelector(".MuiTabs-flexContainer").innerHTML
const parts = window.location.href.split('/');
const baseUrl = parts.slice(0, 6).join('/') + '/DockerFile';
var v_dockerfile = document.querySelector(".MuiTabs-flexContainer > a:nth-child(2)").outerHTML
v_dockerfile = v_dockerfile.replace('tabindex="-1"','tabindex="-2"').replace('>Tags<','>DockerFile<')
var replacedText = v_dockerfile.replace(/href="[^"]*"/, 'href="' + baseUrl + '"');
document.querySelector(".MuiTabs-flexContainer").innerHTML = v_default + replacedText
}, 3000);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://mail.yandex.kz/?uid=*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":null},"settings":{"enabled":true,"position":17},"meta":{"name":"Yandex.Mail - Убрать лишнее рекламы на почте","uuid":"e5600f9b-d02d-4416-b5b0-a808cc4fe1dc","modified":1709396592798}}

View File

@ -0,0 +1 @@
{"ts":1709396799973,"data":{}}

View File

@ -0,0 +1,46 @@
// ==UserScript==
// @name Yandex.Mail - Убрать лишнее рекламы на почте
// @namespace http://tampermonkey.net/
// @version 2024-02-12
// @description try to take over the world!
// @author LukasEndigo™
// @match https://mail.yandex.kz/?uid=*
// @icon https://www.google.com/s2/favicons?sz=64&domain=yandex.kz
// @grant none
// ==/UserScript==
(function() {
setTimeout(function() {
try {
const elementsToRemove = document.querySelectorAll('div[style="width: 100%;"]');
elementsToRemove.forEach(element => {
let parent = element;
for (let i = 0; i < 5; i++) {
parent = parent.parentNode;
if (!parent) break; // Проверка на случай, если уровень родителя не существует
}
if (parent) {
parent.remove();
}
});
} catch {}
}, 3000);
setTimeout(function() {
try {
const elementsToRemove = document.querySelectorAll('div[style="width: 100%;"]');
elementsToRemove.forEach(element => {
let parent = element;
for (let i = 0; i < 5; i++) {
parent = parent.parentNode;
if (!parent) break; // Проверка на случай, если уровень родителя не существует
}
if (parent) {
parent.remove();
}
});
} catch { console.log('блок уже удален') }
}, 9000);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://mail.yandex.kz/?uid=*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1707712860862},"settings":{"enabled":true,"position":11},"meta":{"name":"Yandex.Mail - Убрать лишнее рекламы на почте","uuid":"6d20eb11-f5be-4383-a66d-fbfc7402d485","modified":1707712860860}}

View File

@ -0,0 +1 @@
{"ts":1707712744631,"data":{}}

View File

@ -0,0 +1,46 @@
// ==UserScript==
// @name Yandex.Mail - Убрать лишнее рекламы на почте
// @namespace http://tampermonkey.net/
// @version 2024-02-12
// @description try to take over the world!
// @author LukasEndigo™
// @match https://mail.yandex.kz/?uid=*
// @icon https://www.google.com/s2/favicons?sz=64&domain=yandex.kz
// @grant none
// ==/UserScript==
(function() {
setTimeout(function() {
try {
const elementsToRemove = document.querySelectorAll('div[style="width: 100%;"]');
elementsToRemove.forEach(element => {
let parent = element;
for (let i = 0; i < 5; i++) {
parent = parent.parentNode;
if (!parent) break; // Проверка на случай, если уровень родителя не существует
}
if (parent) {
parent.remove();
}
});
} catch {}
}, 3000);
setTimeout(function() {
try {
const elementsToRemove = document.querySelectorAll('div[style="width: 100%;"]');
elementsToRemove.forEach(element => {
let parent = element;
for (let i = 0; i < 5; i++) {
parent = parent.parentNode;
if (!parent) break; // Проверка на случай, если уровень родителя не существует
}
if (parent) {
parent.remove();
}
});
} catch { console.log('блок уже удален') }
}, 9000);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"user_modified":1728276793468,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://yandex.kz/search/?text=*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":true,"position":30},"meta":{"name":"Yandex:Hide-Fast-Data-Results-With-Toggle","uuid":"5331d60b-4051-40fb-92ad-7790cae5f1ed","modified":1728276793466,"file_url":"https://mygit.lkaz.ru/lukas91/js-tampermonkey-public-scripts/raw/branch/main/Hide%20Fast%20Data%20Results%20with%20Toggle.user.js"}}

View File

@ -0,0 +1 @@
{"ts":1725424593326,"data":{}}

View File

@ -0,0 +1,74 @@
// ==UserScript==
// @name Yandex:Hide-Fast-Data-Results-With-Toggle
// @namespace http://tampermonkey.net/
// @version 1.2
// @description Скрывает элементы с data-fast="2" на странице результатов поиска и добавляет меню для их отображения
// @author Lukas Endigo
// @match https://yandex.kz/search/?text=*
// @icon https://www.google.com/s2/favicons?sz=64&domain=yandex.kz
// @grant GM_registerMenuCommand
// ==/UserScript==
(function() {
'use strict';
// Функция для скрытия элементов с data-fast="2"
function hideFastDataElements() {
const searchResult = document.querySelector('#search-result');
if (searchResult) {
const items = searchResult.querySelectorAll('li[data-fast="2"]');
items.forEach(item => {
item.style.display = 'none';
});
}
}
// Функция для отображения всех скрытых элементов с data-fast="2"
function showFastDataElements() {
const searchResult = document.querySelector('#search-result');
if (searchResult) {
const items = searchResult.querySelectorAll('li[data-fast="2"]');
items.forEach(item => {
item.style.display = '';
});
}
}
// Настройка MutationObserver для отслеживания изменений в UL с id="search-result"
const observer = new MutationObserver((mutations) => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
hideFastDataElements();
}
});
});
// Опции для MutationObserver
const config = { childList: true, subtree: true };
// Инициализация наблюдения за изменениями в UL с id="search-result"
const searchResultContainer = document.querySelector('#search-result');
if (searchResultContainer) {
observer.observe(searchResultContainer, config);
}
// Первоначальный вызов функции для скрытия элементов сразу после загрузки страницы
hideFastDataElements();
// Наблюдение за изменением количества результатов в #search-result
const bodyObserver = new MutationObserver(() => {
const newSearchResultContainer = document.querySelector('#search-result');
if (newSearchResultContainer && newSearchResultContainer !== searchResultContainer) {
observer.disconnect(); // Отключаем старый observer
observer.observe(newSearchResultContainer, config); // Запускаем новый observer
hideFastDataElements();
}
});
// Запускаем наблюдение за изменением DOM, чтобы отследить появление нового #search-result
bodyObserver.observe(document.body, { childList: true, subtree: true });
// Добавление пункта в меню Tampermonkey для отображения скрытых элементов
GM_registerMenuCommand("Отобразить все", showFastDataElements);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://gitlabserver.skynet.kz/*/ci_cd"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1721190315322},"settings":{"enabled":true,"position":23},"meta":{"name":"gitlabserver.skynet.kz копировать данные","uuid":"b77102e8-c80c-4724-8b70-5d1dbeca4be7","modified":1721190315321}}

View File

@ -0,0 +1 @@
{"ts":1719903016343,"data":{}}

View File

@ -0,0 +1,31 @@
// ==UserScript==
// @name gitlabserver.skynet.kz копировать данные
// @namespace http://tampermonkey.net/
// @version 2024-07-02
// @description try to take over the world!
// @author You
// @match https://gitlabserver.skynet.kz/*/ci_cd
// @icon https://www.google.com/s2/favicons?sz=64&domain=skynet.kz
// @grant GM_registerMenuCommand
// ==/UserScript==
console.log ("Меню интегрирован");
GM_registerMenuCommand ("Копировать в буфер", start_to_menu);
function start_to_menu () {
'use strict';
// Настройка стилей модального окна
let modalDialog = document.querySelector('.modal-dialog.modal-md');
if (modalDialog) {
modalDialog.style.minWidth = '1600px';
modalDialog.style.minHeight = '930px';
}
// Настройка высоты текстового поля ввода
let textarea = document.getElementById('ci-variable-value');
if (textarea) {
textarea.style.height = '300px';
}
}

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":false,"user_modified":1728278648957,"comment":null,"compatopts_for_requires":true,"compat_wrappedjsobject":false,"compat_metadata":false,"compat_foreach":false,"compat_powerful_this":null,"sandbox":null,"noframes":null,"unwrap":null,"run_at":null,"tab_types":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://*.mynetname.net/*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]}},"settings":{"enabled":true,"position":9},"meta":{"name":"noVNC:Paste-For-Proxmox","uuid":"7392bda3-1675-43d8-9799-dd4eae68c20a","modified":1728278648955,"file_url":"https://gist.github.com/amunchet/4cfaf0274f3d238946f9f8f94fa9ee02/raw/0b84970f89e1f282f09b86d46227eda71178c040/noVNCCopyPasteProxmox.user.js"}}

View File

@ -0,0 +1 @@
{"ts":1707563388969,"data":{}}

View File

@ -0,0 +1,58 @@
// ==UserScript==
// @name noVNC:Paste-For-Proxmox
// @namespace http://tampermonkey.net/
// @version 0.3a
// @description Pastes text into a noVNC window (for use with Proxmox specifically)
// @author LukasEndigo
// @match https://*.mynetname.net/*
// @require http://code.jquery.com/jquery-3.3.1.min.js
// @icon https://www.google.com/s2/favicons?sz=64&domain=proxmox.com
// @grant none
// ==/UserScript==
const delay = 500;
(function () {
'use strict'
window.sendString = function(text) {
var el = document.getElementById("canvas-id")
text.split("").forEach(x=>{
setTimeout(()=>{
var needs_shift = x.match(/[A-Z!@#$%^&*()_+{}:\"<>?~|]/)
let evt
if (needs_shift) {
evt = new KeyboardEvent("keydown", {keyCode: 16})
el.dispatchEvent(evt)
evt = new KeyboardEvent("keydown", {key: x, shiftKey: true})
el.dispatchEvent(evt)
evt = new KeyboardEvent("keyup", {keyCode: 16})
el.dispatchEvent(evt)
}else{
evt = new KeyboardEvent("keydown", {key: x})
}
el.dispatchEvent(evt)
}, delay)
})
}
$(document).ready(function() {
setTimeout(()=>{
console.log("Starting up noVNC Copy/Paste (for Proxmox)")
$("canvas").attr("id", "canvas-id")
$("canvas").on("mousedown", (e)=>{
if(e.button == 2){ // Right Click
navigator.clipboard.readText().then(text =>{
window.sendString(text)
})
}
})
}, 1000);
})
})()

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"name":"jquery-3.3.1.min.js","url":"http://code.jquery.com/jquery-3.3.1.min.js","ts":1728278633835,"mimetype":"text/javascript"}

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://trello.com3/*"],"orig_noframes":null,"orig_run_at":"document-end","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1704340185601},"settings":{"enabled":true,"position":13},"meta":{"name":"setupObserver MutationObserver exapmle","uuid":"e2574f59-3279-44e4-ab95-48655b4b22f3","modified":1704340185598}}

View File

@ -0,0 +1 @@
{"ts":1707563388974,"data":{}}

View File

@ -0,0 +1,46 @@
// ==UserScript==
// @name setupObserver MutationObserver exapmle
// @namespace http://your.namespace.here/
// @version 0.1
// @description Your description here
// @author You
// @run-at document-end
// @match https://trello.com3/*
// @grant none
// ==/UserScript==
(async function () {
'use strict';
async function setupObserver() {
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.target.matches('#chrome-container > div.window-overlay > div')) {
const hasWindowClass = mutation.target.classList.contains('window');
if (hasWindowClass) {
console.log('ЕСТЬ!');
} else {
console.log('Ничего не изменилось');
}
}
});
});
const targetElement = document.querySelector('#chrome-container > div.window-overlay > div');
if (targetElement) {
observer.observe(targetElement, {
attributes: true,
subtree: true,
attributeFilter: ['class'],
});
} else {
// Если элемент еще не существует, повторно вызываем setupObserver через некоторое время
setTimeout(setupObserver, 1000);
}
}
setupObserver();
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://aliexpress.ru/item/*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":"document-end","sandbox":null,"tab_types":null,"unwrap":null,"user_modified":null},"settings":{"enabled":true,"position":8},"meta":{"name":"Вывод в дооларах к Тенге","uuid":"409d6884-9375-4251-a447-78e62a29a0af","modified":1711516699839,"file_url":"https://gitlabappserver.lkaz.ru/lukas91/js-tampermonkey-public-scripts/raw/branch/main/Withdrawal%20in%20dollars%20to%20tenge.js"}}

View File

@ -0,0 +1 @@
{"ts":1707563388960,"data":{}}

View File

@ -0,0 +1,44 @@
// ==UserScript==
// @name Вывод в дооларах к Тенге
// @namespace http://tampermonkey.net/
// @version 0.3
// @description try to take over the world!
// @author You
// @match https://aliexpress.ru/item/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=aliexpress.ru
// @downloadURL https://gitlabappserver.lkaz.ru/lukas91/js-tampermonkey-public-scripts/raw/branch/main/Withdrawal%20in%20dollars%20to%20tenge.js
// @updateURL https://gitlabappserver.lkaz.ru/lukas91/js-tampermonkey-public-scripts/raw/branch/main/Withdrawal%20in%20dollars%20to%20tenge.js
// @grant none
// ==/UserScript==
// Функция для ожидания загрузки страницы
console.log('start');
function waitForPageLoad(callback) {
if (document.readyState === "complete") {
callback();
console.log('complete');
} else {
window.addEventListener("load", callback);
console.log('load');
}
}
// Функция для выполнения вычислений и обновления страницы
function performCalculations() {
const priceElement = document.querySelector('[class^="snow-price_SnowPrice__mainS__"]');
if (priceElement) {
const priceText = priceElement.innerText;
const priceInKZT = parseFloat(priceText.replace(/\s/g, '').replace('₸', '').replace(',', '.'));
const priceInUSD = (priceInKZT / 462.105).toFixed(2);
// Обновление страницы с новыми данными
priceElement.innerHTML = `${priceText} / (${priceInUSD}$)`;
}
}
// Ожидание загрузки страницы и выполнение вычислений
waitForPageLoad(performCalculations);

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":false,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://m.bcc.kz/home"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":null},"settings":{"enabled":true,"position":3},"meta":{"name":"Отоброжать проценты по Ипотеке","uuid":"10f09243-54f3-4eec-94fc-5cfadd6fe409","modified":1694982251893}}

View File

@ -0,0 +1 @@
{"ts":1707563388952,"data":{}}

View File

@ -0,0 +1,77 @@
// ==UserScript==
// @name Отоброжать проценты по Ипотеке
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://m.bcc.kz/home
// @icon https://m.bcc.kz/favicon.ico
// @grant none
// ==/UserScript==
(function() {
'use strict';
setTimeout(function() {
(function() {
function decimalAdjust(type, value, exp) {
// Если степень не определена, либо равна нулю...
if (typeof exp === 'undefined' || +exp === 0) {
return Math[type](value);
}
value = +value;
exp = +exp;
// Если значение не является числом, либо степень не является целым числом...
if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
return NaN;
}
// Сдвиг разрядов
value = value.toString().split('e');
value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
// Обратный сдвиг
value = value.toString().split('e');
return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
}
// Десятичное округление к ближайшему
if (!Math.round10) {
Math.round10 = function(value, exp) {
return decimalAdjust('round', value, exp);
};
}
// Десятичное округление вниз
if (!Math.floor10) {
Math.floor10 = function(value, exp) {
return decimalAdjust('floor', value, exp);
};
}
// Десятичное округление вверх
if (!Math.ceil10) {
Math.ceil10 = function(value, exp) {
return decimalAdjust('ceil', value, exp);
};
}
})();
});
setTimeout(function() {
var v1, v2, v3, v4, v5, v6;
v1 = parseFloat(getComputedStyle(document.querySelector("div.service__progress.ng-star-inserted")).width)
v1 = v1 / 70 * 100
v2 = parseFloat(getComputedStyle(document.querySelector('div.service__progress-done')).width)
v2 = v2 / 70 * 100
//v3 = v1 - v2
v4 = v2 / v1 * 100
v5 = Math.floor10(v4, -4)
//v6 = document.querySelector("#content-container > div.flex-grow-1 > app-home > div > div.col-12.col-lg-7.col-xl-8.pr-0 > div > div:nth-child(4) > app-home-banking-service > div > div.services__list > app-home-banking-service-item > div > div.d-flex.flex-grow-1.flex-wrap.flex-xl-nowrap.fw-min-width-0 > div.col-12.pl-2.col-xl-8 > div > div.fw-text-600")
v6 = document.querySelector("app-home-banking-service-item > div > div.d-flex.flex-grow-1.flex-wrap.flex-xl-nowrap.fw-min-width-0 > div.col-12.pl-2.col-xl-8 > div > div.fw-text-600")
// v6.innerHTML = v6.innerText + " | оплачено: "+ v5 + "%" + " ( 1 948 092.84 )"
v6.innerHTML = v6.innerText + " | оплачено: "+ v5 + "%"
}, 5000);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":false,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://e.mail.ru/*"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1709395674846},"settings":{"enabled":true,"position":4},"meta":{"name":"Убрать 3-ий блок новостей в просмотре писем","uuid":"5214871f-45bd-4bf2-a6a6-c2490cb0b8af","modified":1708921106317}}

View File

@ -0,0 +1 @@
{"ts":1707563388953,"data":{}}

View File

@ -0,0 +1,67 @@
// ==UserScript==
// @name Убрать 3-ий блок новостей в просмотре писем
// @namespace https://github.com/le91
// @version 1.0.1
// @description try to take over the world!
// @author You
// @match https://e.mail.ru/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=mail.ru
// @grant none
// ==/UserScript==
(function() {
'use strict';
function startRemove(){
var main = document.querySelector("#app-canvas > div > div.application-mail > div.application-mail__overlay > div > div.application-mail__layout.application-mail__layout_main > span")
main.children[2].remove();
console.log('блок уже удален первый эпат')
// Находим элемент
const targetElement = document.querySelector(".ReactVirtualized__Grid__innerScrollContainer");
// Получаем все div элементы внутри него
const divElements = targetElement.querySelectorAll('div');
let firstDivHeight = '';
// Проходимся по каждому div элементу
divElements.forEach(divElement => {
// Проверяем, если у div элемента высота больше 0px
if (divElement.style.height && parseInt(divElement.style.height) > 0) {
if (firstDivHeight === '') {
firstDivHeight = divElement.style.height;
}
// Удаляем все div элементы до данного элемента
let previousElement = divElement.previousElementSibling;
while (previousElement && previousElement.tagName === 'DIV' && firstDivHeight != '') {
const toRemove = previousElement;
previousElement = previousElement.previousElementSibling;
// toRemove.remove();
var cssStyle = document.querySelector(".ReactVirtualized__Grid__innerScrollContainer").getAttribute("style")
cssStyle = cssStyle + "margin-top: -"+firstDivHeight+";"
document.querySelector(".ReactVirtualized__Grid__innerScrollContainer").setAttribute("style",cssStyle)
}
// Выходим из цикла после удаления
return;
}
});
}
// удалить новости с правой части экрана
setTimeout(function() {
try {
startRemove()
} catch { console.log('блок уже удален первый эпат') }
}, 3000);
setTimeout(function() {
try {
startRemove()
} catch { console.log('блок уже удален второй эпат') }
}, 13000);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://www.youtube.com/results?search_query=irDA+windows+software"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":null},"settings":{"enabled":true,"position":19},"meta":{"name":"Удалить блок Рекомендации","uuid":"66dbe732-dfa6-4661-a6fc-8924a33ef810","modified":1709396614232}}

View File

@ -0,0 +1 @@
{"ts":1709396799974,"data":{}}

View File

@ -0,0 +1,49 @@
// ==UserScript==
// @name Удалить блок Рекомендации
// @namespace https://github.com/le91
// @version 1.0
// @description Удалить блок Рекомендации где выводиться всякая хуйня!!!
// @author Lukas Endigo
// @match https://www.youtube.com/results?search_query=irDA+windows+software
// @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
function startRemove(){
//============================================================
var contentsElement = document.getElementById('contents');
if (contentsElement) {
var spans = contentsElement.querySelectorAll('.style-scope.ytd-item-section-renderer');
spans.forEach(function(span) {
// Проверить, начинается ли текст span с "Рекомендации"
if (span.innerText.trim().startsWith('Рекомендации')) {
//console.log(span.innerText);
span.remove();
}
});
}
//============================================================
}
// удалить новости с правой части экрана
setTimeout(function() {
try {
startRemove()
} catch { console.log('блок уже удален первый эпат') }
}, 3000);
setTimeout(function() {
try {
startRemove()
} catch { console.log('блок уже удален второй эпат') }
}, 13000);
})();

View File

@ -0,0 +1 @@
{"options":{"check_for_updates":true,"comment":null,"compat_foreach":false,"compat_metadata":false,"compat_powerful_this":null,"compat_wrappedjsobject":false,"compatopts_for_requires":true,"noframes":null,"override":{"merge_connects":true,"merge_excludes":true,"merge_includes":true,"merge_matches":true,"orig_connects":[],"orig_excludes":[],"orig_includes":[],"orig_matches":["https://www.youtube.com/results?search_query=irDA+windows+software"],"orig_noframes":null,"orig_run_at":"document-idle","use_blockers":[],"use_connects":[],"use_excludes":[],"use_includes":[],"use_matches":[]},"run_at":null,"sandbox":null,"tab_types":null,"unwrap":null,"user_modified":1709010046136},"settings":{"enabled":true,"position":16},"meta":{"name":"Удалить блок Рекомендации","uuid":"19770608-adcc-46bc-a90e-d348a5ecd1a2","modified":1709010046135}}

View File

@ -0,0 +1 @@
{"ts":1709009758342,"data":{}}

Some files were not shown because too many files have changed in this diff Show More