Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Hide thread iichan
- // @namespace http://iichan.hk/
- // @license WTFPL
- // @version 0.1
- // @description adds hide thread feature to iichan
- // @author Cirno
- // @match http://iichan.hk/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- var THREAD_TITLE_LENGTH = 50; // Сколько первых символов из поста показывать в заголовке скрытого треда
- function removeClass(element, className) {
- var reg = new RegExp('(\\s|^)' + className + '(\\s|$)');
- element.className = element.className.replace(reg, ' ');
- }
- function addHideBtns() {
- var threads = document.querySelectorAll('[id^=thread]');
- for (var i = threads.length - 1; i >= 0; i--) {
- var thread = threads[i];
- var label = thread.querySelector('label');
- if (!label) continue;
- var btn = document.createElement('a');
- btn.innerHTML = '[-]';
- btn.className = 'iichan-hide-thread-btn';
- btn.title = 'Скрыть тред';
- btn.addEventListener('click', function() {hideThread(thread.id);});
- thread.insertBefore(btn, label.nextSibling);
- }
- }
- function unHideThread(threadId) {
- var hiddenThreads = JSON.parse(window.localStorage.getItem('iichan_hidden_threads') || "[]");
- var index = hiddenThreads.indexOf(threadId);
- if (index === -1) {
- return;
- }
- hiddenThreads.splice(index, 1);
- window.localStorage.setItem('iichan_hidden_threads', JSON.stringify(hiddenThreads));
- var thread = document.getElementById(threadId);
- if(!thread) {
- return;
- }
- removeClass(thread, 'iichan-thread-hidden');
- var placeholder = document.getElementById('iichan-hidden-' + threadId);
- if (placeholder) {
- placeholder.parentElement.removeChild(placeholder);
- }
- }
- function hideThread(threadId) {
- var thread = document.getElementById(threadId);
- if(!thread) {
- return;
- }
- var parent = thread.parentNode;
- var threadHiddenDiv = document.createElement('div');
- var threadNo = threadId.split('-')[1];
- var threadTitle = thread.querySelector('.filetitle').innerText || thread.querySelector('blockquote').innerText || 'картинка';
- threadTitle = threadTitle.substr(0, THREAD_TITLE_LENGTH);
- threadHiddenDiv.innerHTML = 'Тред №' + threadNo + ' скрыт (' + threadTitle + ')';
- threadHiddenDiv.id = 'iichan-hidden-' + threadId;
- threadHiddenDiv.className = 'reply iichan-hidden-thread-placeholder';
- threadHiddenDiv.addEventListener('click', function() {unHideThread(threadId);});
- thread.className += ' iichan-thread-hidden';
- parent.insertBefore(threadHiddenDiv, thread);
- // save result
- var hiddenThreads = JSON.parse(window.localStorage.getItem('iichan_hidden_threads') || "[]");
- if (hiddenThreads.indexOf(threadId) === -1) {
- hiddenThreads.push(threadId);
- window.localStorage.setItem('iichan_hidden_threads', JSON.stringify(hiddenThreads));
- }
- }
- function hideAllHiddenThreads() {
- var hiddenThreads = JSON.parse(window.localStorage.getItem('iichan_hidden_threads') || "[]");
- for (var i = hiddenThreads.length - 1; i >= 0; i--) {
- hideThread(hiddenThreads[i]);
- }
- }
- function appendCSS() {
- var css = document.createElement('style');
- css.type = 'text/css';
- css.innerHTML = '\
- .iichan-hidden-thread-placeholder {\
- cursor: pointer;\
- }\
- .iichan-hidden-thread-placeholder:hover + div, .iichan-hidden-thread-placeholder:hover + div + br {\
- display: block !important;\
- }\
- .iichan-thread-hidden {\
- display: none;\
- }\
- .iichan-thread-hidden + br {\
- display: none;\
- }\
- .iichan-hide-thread-btn {\
- margin-left: 0.2em;\
- cursor: pointer;\
- }\
- ';
- document.body.appendChild(css);
- }
- appendCSS();
- addHideBtns();
- hideAllHiddenThreads();
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement