- // ==UserScript==
- // @name Hide Mandiner User
- // @name:hu Mandiner Hozzászóló Elrejtő
- // @description Userscript for hiding mandiner.hu's users
- // @description:hu Felhasználói szkript a mandiner.hu felhasználóinak elrejtéséhez
- // @icon https://mandiner.hu/images/favicon.png
- // @version 5.0
- // @license MIT
- // @include https://*mandiner.hu/cikk/*
- // @grant none
- // @namespace https://greasyfork.org/users/412587
- // ==/UserScript==
- let comments = document.querySelectorAll('.comment'),
- disabledUsers = window.localStorage.getItem('disabledUsers') === null ? [] : JSON.parse(window.localStorage.getItem('disabledUsers')),
- hideDisabledUsers = window.localStorage.getItem('hideDisabledUsers') === null ? 'false' : window.localStorage.getItem('hideDisabledUsers'),
- commentsHead = document.querySelector('.comments-head'),
- headerDisabledUsers = document.createElement('h5'),
- searchBox = document.createElement('div'),
- searchHeader = document.createElement('div'),
- searchContent = document.createElement('div'),
- searchField = document.createElement('input'),
- searchButton = document.createElement('button'),
- searchBreak = document.createElement('br'),
- resultField = document.createElement('textarea'),
- searchFooter = document.createElement('div'),
- addUsersButton = document.createElement('button'),
- buttonImportUsers = document.createElement('button');
- console.log('Comments: ' + comments.length);
- console.log('Disabled users: ' + disabledUsers.length);
-
- headerDisabledUsers.innerText = '▼ Némított felhasználók';
- headerDisabledUsers.style.cursor = 'pointer';
- buttonImportUsers.style.padding = '0.25em';
- buttonImportUsers.style.margin = '0.25em';
- buttonImportUsers.style.backgroundColor = '#517491';
- buttonImportUsers.style.color = '#fff';
- buttonImportUsers.style.fontWeight = 'bold';
- buttonImportUsers.innerText = '📂 Importálás';
-
- searchBox.setAttribute('id', 'searchBox');
- searchBox.style.border = '1px solid #000';
- searchBox.style.margin = '0.25em';
- searchBox.style.width = 'fit-content';
-
- searchHeader.setAttribute('id', 'searchHeader');
- searchHeader.innerText = '▶ Tömeges felhasználó tiltás';
- searchHeader.style.borderBottom = '1px solid #000';
- searchHeader.style.padding = '0.25em';
- searchHeader.style.cursor = 'pointer';
- searchHeader.onclick = () => {
- if (searchContent.style.display == 'none') {
- searchContent.style.display = 'block';
- searchFooter.style.display = 'block';
- searchHeader.innerText = searchHeader.innerText.replace('▶', '▼');
- } else {
- searchContent.style.display = 'none';
- searchFooter.style.display = 'none';
- searchHeader.innerText = searchHeader.innerText.replace('▼', '▶');
- }
- };
-
- searchContent.setAttribute('id', 'searchContent');
- searchContent.style.padding = '0.25em';
- searchContent.style.display = 'none';
- searchField.setAttribute('id', 'searchField');
- searchField.setAttribute('placeholder','Felhasználónév-részlet');
- searchField.style.border = '1px solid #000';
- searchButton.innerText = '🔎';
- searchButton.setAttribute('title', 'Felhasználó keresése')
- searchButton.style.padding = '0 0.25em';
- searchButton.style.marginLeft = '0.25em';
- searchButton.style.backgroundColor = '#517491';
- resultField.style.marginTop = '0.25em';
- resultField.setAttribute('rows','5');
- resultField.setAttribute('placeholder','Talált felhasználók');
- resultField.style.border = '1px solid #000';
- searchContent.appendChild(searchField);
- searchContent.appendChild(searchButton);
- searchContent.appendChild(searchBreak);
- searchContent.appendChild(resultField);
-
- searchButton.onclick = () => {
- let searchUser = searchField.value,
- searchUserRegexp = new RegExp(searchUser, 'gi'),
- users = [];
- resultField.innerHTML = '';
-
- for (let comment of comments) {
- let user = comment.querySelector('.commentuser').text;
- if (user != null || user != undefined) {
- users.push(user);
- }
- }
- users = [...new Set(users)].filter((v)=>v.match(searchUserRegexp));
- for (let user of users) {
- resultField.innerHTML += user + '\n';
- }
- addUsersButton.removeAttribute('disabled');
- };
-
- searchFooter.setAttribute('id', 'searchFooter');
- searchFooter.style.borderTop = '1px solid #000';
- searchFooter.style.display = 'none';
- addUsersButton.innerText = '👥 Felhasználók tiltása';
- addUsersButton.style.padding = '0.25em';
- addUsersButton.style.margin = '0.25em';
- addUsersButton.style.backgroundColor = '#517491';
- addUsersButton.style.color = '#fff';
- addUsersButton.style.fontWeight = 'bold';
- addUsersButton.setAttribute('disabled', 'disabled');
- searchFooter.appendChild(addUsersButton);
-
- addUsersButton.onclick = () => {
- let users = resultField.innerHTML.split('\n').filter((v) => v != '');
- users = [...new Set(users)]
- if (users.length !== 0) {
- for (let user of users) {
- if (user != '' && (disabledUsers.length == 0 || !disabledUsers.includes(user))) {
- disabledUsers.push(user);
- }
- }
- window.localStorage.setItem('disabledUsers', JSON.stringify(disabledUsers));
- window.location.reload(true);
- }
- };
-
- searchBox.appendChild(searchHeader);
- searchBox.appendChild(searchContent);
- searchBox.appendChild(searchFooter);
-
- commentsHead.appendChild(headerDisabledUsers);
- commentsHead.appendChild(searchBox);
- commentsHead.appendChild(buttonImportUsers);
-
- buttonImportUsers.onclick = () => {
- let fileInput = document.createElement('input');
- fileInput.setAttribute('type', 'file');
- fileInput.setAttribute('accept', '.txt');
- fileInput.onchange = () => {
- let reader = new FileReader(),
- file = fileInput.files[0];
- reader.onload = (event) => {
- let newUsers = event.target.result.split('\n');
- if (newUsers.length !== 0) {
- for (let newUser of newUsers) {
- if (newUser != '' && (disabledUsers.length == 0 || !disabledUsers.includes(newUser))) {
- disabledUsers.push(newUser);
- }
- }
- window.localStorage.setItem('disabledUsers', JSON.stringify(disabledUsers));
- window.location.reload(true);
- }
- };
- reader.readAsText(file);
- };
- fileInput.click();
- };
-
- if (disabledUsers.length > 0) {
- let commentsHead = document.querySelector('.comments-head'),
- listDisabledUsers = document.createElement('ul'),
- buttonExportUsers = document.createElement('button'),
- buttonClearUsers = document.createElement('button');
- if (hideDisabledUsers === 'true') {
- listDisabledUsers.setAttribute('style', 'display: none;');
- headerDisabledUsers.innerText = headerDisabledUsers.innerText.replace('▼', '▶');
- } else {
- listDisabledUsers.removeAttribute('style');
- headerDisabledUsers.innerText = headerDisabledUsers.innerText.replace('▶', '▼');
- }
- headerDisabledUsers.onclick = () => {
- if (listDisabledUsers.hasAttribute('style')) {
- listDisabledUsers.removeAttribute('style');
- headerDisabledUsers.innerText = headerDisabledUsers.innerText.replace('▶', '▼');
- window.localStorage.setItem('hideDisabledUsers', 'false');
- } else {
- listDisabledUsers.setAttribute('style', 'display: none;');
- headerDisabledUsers.innerText = headerDisabledUsers.innerText.replace('▼', '▶');
- window.localStorage.setItem('hideDisabledUsers', 'true');
- }
- };
- buttonClearUsers.innerText = '✓ Összes felhasználó engedélyezése';
- buttonClearUsers.style.padding = '0.25em';
- buttonClearUsers.style.margin = '0.25em';
- buttonClearUsers.style.backgroundColor = '#070';
- buttonClearUsers.style.color = '#fff';
- buttonClearUsers.style.fontWeight = 'bold';
- buttonExportUsers.style.padding = '0.25em';
- buttonExportUsers.style.margin = '0.25em';
- buttonExportUsers.style.backgroundColor = '#517491';
- buttonExportUsers.style.color = '#fff';
- buttonExportUsers.style.fontWeight = 'bold';
- buttonExportUsers.innerText = '💾 Exportálás';
- for (let disabledUser of disabledUsers) {
- let listItemDisabledUser = document.createElement('li'),
- spanDisabledUser = document.createElement('span'),
- buttonEnableUser = document.createElement('button');
- spanDisabledUser.innerText = disabledUser;
- buttonEnableUser.setAttribute('data-username',disabledUser);
- buttonEnableUser.innerText = '✓';
- buttonEnableUser.setAttribute('title', 'Engedélyezés');
- buttonEnableUser.style.border = '1px solid #fff';
- buttonEnableUser.style.backgroundColor = '#070';
- buttonEnableUser.style.color = '#fff';
- buttonEnableUser.style.padding = '0.25em';
- buttonEnableUser.style.margin = '0 0.25em';
- buttonEnableUser.style.fontWeight = 'bold';
- buttonEnableUser.onclick = () => {
- let userName = buttonEnableUser.getAttribute('data-username');
- disabledUsers = disabledUsers.filter(item => item !== userName);
- window.localStorage.setItem('disabledUsers', JSON.stringify(disabledUsers));
- window.location.reload(true);
- };
- listItemDisabledUser.appendChild(spanDisabledUser);
- listItemDisabledUser.appendChild(buttonEnableUser);
- listDisabledUsers.appendChild(listItemDisabledUser);
- }
- buttonExportUsers.onclick = () => {
- if (disabledUsers.length > 0) {
- let users = disabledUsers.join('\n'),
- downloadLink = document.createElement('a');
- downloadLink.setAttribute(
- 'href',
- window.URL.createObjectURL(
- new Blob(
- [users],
- {type: 'text/plain'}
- )
- )
- );
- downloadLink.setAttribute('download', 'users.txt');
- downloadLink.click();
- }
- };
- buttonClearUsers.onclick = () => {
- disabledUsers = [];
- window.localStorage.setItem('disabledUsers', JSON.stringify(disabledUsers));
- window.location.reload(true);
- };
- commentsHead.appendChild(buttonExportUsers);
- commentsHead.appendChild(buttonClearUsers);
- commentsHead.appendChild(listDisabledUsers);
- }
-
- for (let comment of comments) {
- let user = comment.querySelector('.commentuser'),
- buttonDisableUser = document.createElement('button');
- if (user != null || user != undefined) {
- if (disabledUsers.includes(user.text)) {
- comment.style.display = 'none';
- comment.style.visibility = 'hidden';
- }
- buttonDisableUser.innerText = 'X';
- buttonDisableUser.setAttribute('title', 'Tiltás');
- buttonDisableUser.style.border = '1px solid #fff';
- buttonDisableUser.style.backgroundColor = '#f00';
- buttonDisableUser.style.color = '#fff';
- buttonDisableUser.style.padding = '0.25em';
- buttonDisableUser.style.margin = '0 0.25em';
- buttonDisableUser.style.fontWeight = 'bold';
- buttonDisableUser.setAttribute('data-username', user.text);
-
- buttonDisableUser.onclick = () => {
- let userName = buttonDisableUser.getAttribute('data-username');
- if (
- disabledUsers.length == 0 ||
- !disabledUsers.includes(userName)
- ) {
- disabledUsers.push(userName);
- window.localStorage.setItem('disabledUsers', JSON.stringify(disabledUsers));
- }
- window.location.reload(true);
- };
- user.after(buttonDisableUser);
- }
- }