// ==UserScript== // @name Add additional discussion list on main page. // @namespace http://tampermonkey.net/ // @version 1.0 // @description Добавляет дополнительный блок с темами из определенного раздела на главную страницу. // @author Yowori // @match https://lolz.live/* // @match https://zelenka.guru/* // @match https://lolz.guru/* // @icon https://i.imgur.com/xnJeB3f.png // @grant none // @run-at document-end // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/512147/Add%20additional%20discussion%20list%20on%20main%20page.user.js // @updateURL https://update.greasyfork.icu/scripts/512147/Add%20additional%20discussion%20list%20on%20main%20page.meta.js // ==/UserScript== (function() { 'use strict'; let savedNodeId = localStorage.getItem('customDiscussionNodeId'); const defaultNodeId = savedNodeId ? parseInt(savedNodeId) : 8; let nodeId = isNaN(defaultNodeId) ? 8 : defaultNodeId; const isHidden = localStorage.getItem('customDiscussionIsHidden') === 'true'; const hostname = window.location.hostname; let baseURL = ''; if (hostname === 'lolz.live') { baseURL = 'https://lolz.live'; } else if (hostname === 'zelenka.guru') { baseURL = 'https://zelenka.guru'; } else if (hostname === 'lolz.guru') { baseURL = 'https://lolz.guru'; } else { console.error('Неизвестный домен:', hostname); return; } function addGlobalStyle(css) { const head = document.getElementsByTagName('head')[0]; if (!head) { return; } const style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } addGlobalStyle(` .customDiscussionContainer { display: flex; gap: 20px; box-sizing: border-box; max-width: 1200px; flex-wrap: nowrap; position: relative; } body.index .discussionList { max-width: 520px; flex: 0 0 400px; transition: max-width 0.3s ease; /* Добавлено плавное изменение */ } .customDiscussionList { max-height: 1040px; max-width: 400px; flex: 0 0 400px; height: auto; overflow: hidden; position: relative; transition: max-width 0.3s ease, display 0.3s ease; /* Добавлено плавное изменение */ } .customDiscussionList .loading, .customDiscussionList .error { text-align: center; font-size: 16px; color: #555; } .customDiscussionList .ForumViewMoreButton { display: none; } .customDiscussionList .discussionListItems { display: flex; flex-direction: column; gap: 10px; } .toggleButton { padding: 5px 10px; cursor: pointer; background-color: transparent; color: white; border: none; border-radius: 4px; font-size: 14px; margin-left: 10px; margin-top: 10px; } .showButton { display: none; cursor: pointer; background-color: transparent; color: white; border: none; border-radius: 4px; font-size: 14px; padding: 5px 10px; } @media (max-width: 900px) { .customDiscussionContainer { flex-direction: column; align-items: center; } body.index .discussionList, .customDiscussionList { flex: 0 0 90%; max-width: 90%; } } `); function createHideButtons(discussionList) { const hideButton = document.createElement('button'); hideButton.textContent = 'Скрыть'; hideButton.className = 'toggleButton hideButton'; hideButton.style.float = 'right'; hideButton.style.marginTop = '10px'; hideButton.addEventListener('click', () => { hideDiscussionList(); }); const nodeIdButton = document.createElement('button'); nodeIdButton.textContent = 'Раздел'; nodeIdButton.className = 'toggleButton nodeIdButton'; nodeIdButton.style.float = 'right'; nodeIdButton.style.marginTop = '10px'; nodeIdButton.style.marginRight = '10px'; nodeIdButton.addEventListener('click', () => { const newNodeId = prompt('Введите ID раздела:', nodeId); if (newNodeId !== null) { const parsedNodeId = parseInt(newNodeId); if (!isNaN(parsedNodeId)) { nodeId = parsedNodeId; localStorage.setItem('customDiscussionNodeId', nodeId); const container = discussionList.querySelector('.discussionListItems'); loadDiscussionList(nodeId, container, true); } else { alert('Некорректный ID.'); } } }); const aboveThreadList = discussionList.querySelector('.aboveThreadList'); if (aboveThreadList) { aboveThreadList.style.position = 'relative'; aboveThreadList.appendChild(nodeIdButton); aboveThreadList.appendChild(hideButton); } } function createShowButton() { const showButton = document.createElement('button'); showButton.textContent = 'Показать'; showButton.className = 'showButton'; showButton.style.position = 'absolute'; showButton.style.top = '10px'; showButton.style.right = '10px'; showButton.addEventListener('click', () => { showDiscussionList(); }); const mainDiscussionList = document.querySelector('body.index .discussionList'); if (mainDiscussionList) { mainDiscussionList.style.position = 'relative'; mainDiscussionList.appendChild(showButton); } } function hideDiscussionList() { const customList = document.querySelector('.customDiscussionList'); if (customList) { customList.style.display = 'none'; localStorage.setItem('customDiscussionIsHidden', 'true'); } const mainDiscussionList = document.querySelector('body.index .discussionList'); if (mainDiscussionList) { mainDiscussionList.style.maxWidth = 'none'; } const showButton = document.querySelector('.showButton'); const hideButton = document.querySelector('.hideButton'); if (showButton) { showButton.style.display = 'block'; } if (hideButton) { hideButton.style.display = 'none'; } } function showDiscussionList() { const customList = document.querySelector('.customDiscussionList'); if (customList) { customList.style.display = 'block'; localStorage.setItem('customDiscussionIsHidden', 'false'); } const mainDiscussionList = document.querySelector('body.index .discussionList'); if (mainDiscussionList) { mainDiscussionList.style.maxWidth = '520px'; } const showButton = document.querySelector('.showButton'); const hideButton = document.querySelector('.hideButton'); if (showButton) { showButton.style.display = 'none'; } if (hideButton) { hideButton.style.display = 'block'; } } function createNewDiscussionList() { let container = document.querySelector('.customDiscussionContainer'); if (!container) { container = document.createElement('div'); container.className = 'customDiscussionContainer'; const existingDiscussionList = document.querySelector('body.index .discussionList'); if (existingDiscussionList) { existingDiscussionList.parentNode.insertBefore(container, existingDiscussionList.nextSibling); container.appendChild(existingDiscussionList); } else { const bodyIndex = document.querySelector('body.index'); if (bodyIndex) { bodyIndex.appendChild(container); } } } const newDiscussionList = document.createElement('div'); newDiscussionList.className = 'discussionList customDiscussionList'; newDiscussionList.innerHTML = `