Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name DreamWidth - hide from latest
- // @author Red2, based on script by Tenno Seremel, with permission
- // @license CC BY-NC-SA
- // @namespace red-2
- // @match https://*.dreamwidth.org/*
- // @version 0.1
- // @grant GM_setValue
- // @grant GM_getValue
- // @run-at document-end
- // @noframes
- // ==/UserScript==
- 'use strict';
- function find_parent_by_rule(element, parent_class_rule)
- {
- let result = null;
- let x = element;
- while (x && !result && (x !== document)) {
- if (x.matches(parent_class_rule)) {
- result = x;
- }
- x = x.parentNode;
- }
- return result;
- }
- function hide_post(ev)
- {
- ev.preventDefault();
- let item = find_parent_by_rule(ev.currentTarget, '.usercontent');
- if (item) {
- item.parentNode.removeChild(item);
- }
- }
- function get_user_name(entry)
- {
- let username = '';
- let user_el = entry.querySelector('.author > .ljuser');
- if (user_el && user_el.hasAttribute('lj:user')) {
- username = user_el.getAttribute('lj:user');
- }
- return username;
- }
- function block_author(ev)
- {
- ev.preventDefault();
- let aUserName = '';
- let item = find_parent_by_rule(ev.currentTarget, '.usercontent');
- if (item) {
- aUserName = get_user_name(item);
- item.innerHTML = "Blocked posts by " + aUserName;
- if (aUserName) {
- add_user_name(aUserName);
- remove_user(aUserName);
- }
- }
- }
- function add_user_name(aName)
- {
- if (aName && (hiddenArray.indexOf(aName) < 0)){
- hiddenArray.push(aName);
- GM_setValue('hidden', hiddenArray.join(","));
- }
- }
- function remove_user(aName)
- {
- let entries = document.querySelectorAll('.latest-entry');
- for(let entry of entries) {
- let myAuthor = get_user_name(entry);
- if (myAuthor && (myAuthor == aName)){
- entry.parentNode.removeChild(entry);
- }
- }
- }
- function add_button(container, text, handler)
- {
- let list_item = document.createElement('div');
- list_item.setAttribute('class', 'link');
- let button = document.createElement('button');
- button.textContent = text;
- button.setAttribute('type', 'button');
- button.setAttribute('style', 'border:none;background:transparent;color:inherit;font:inherit;padding:0;cursor:pointer');
- button.addEventListener('click', handler, false);
- list_item.appendChild(button);
- container.appendChild(list_item);
- }
- let actions = document.querySelectorAll('.author');
- let entries = document.querySelectorAll('.latest-entry');
- let hiddenArray = GM_getValue('hidden', '').split(",");
- for(let entry of entries) {
- let myAuthor = get_user_name(entry);
- if (myAuthor && (hiddenArray.indexOf(myAuthor) >= 0)){
- entry.parentNode.removeChild(entry);
- }
- }
- for (let action of actions) {
- add_button(action, 'Скрыть пост', hide_post);
- add_button(action, 'Заблокировать', block_author);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement