// ======================================= // СПИСОК ЗАБЛОКИРОВАННЫХ ПЕРСОНАЖЕЙ // blocklist = 1 - ЧС работает; 0 - ЧС не работает // сообщения от заблокированных персонажей не отображаются // ======================================= var block = [ "Чужая2_3", "Ник1", "Ник2", ]; // ======================================= // СПИСОК ЗАБЛОКИРОВАННЫХ ТЕМ // blokirovat_temy_po_frazam = 1 - ЧС тем работает; 0 - ЧС тем не работает // blokirovat_temy_po_useram = 1 - блокирует темы от персонажей из ЧС; 0 - не блокирует // ======================================= var blokirovat_temy_po_frazam = 1; var blokirovat_temy_po_useram = 0; var themes = [ "Вечеринка", "Что нужно изменить", "о помощи", ]; // ======================================= // ОТКРЫВАТЬ ТЕМЫ С ПОСЛЕДНЕГО СООБЩЕНИЯ // 1 открывать с последнего сообщения // не 1 открывать как обычно // ======================================= var open_bottom = 1; // ======================================= // ВАШИ СМАЙЛЫ // 1 панель смайлов по умолчанию открыта // не 1 (например 0) панель смайлов по умолчанию скрыта // массив смайлов - url картинки и bbcode смайла, брать отсюда: // http://forums.kuban.ru/misc.php?do=getsmilies&editorid=vB_Editor_001 // ======================================= var smiles = 0; var smiles_array = [ ['http://forums.kuban.ru/images/smilies/shocked.gif', ':shocked:'], ['http://forums.kuban.ru/images/smilies/Cry.gif', ':Cry:'], ['http://forums.kuban.ru/images/smilies/music.gif', ':music:'], ['http://forums.kuban.ru/images/smilies/eek.gif', ':eek:'], ['http://forums.kuban.ru/images/smilies/pop2.gif', ':pop2:'], ['http://forums.kuban.ru/images/smilies/banplease.gif', ':banplease:'], ['http://forums.kuban.ru/images/smilies/boink.gif', ':boink:'], ['http://forums.kuban.ru/images/smilies/drum.gif', ':drum:'], ['http://forums.kuban.ru/images/smilies/heh.gif', ':heh:'], ['http://forums.kuban.ru/images/smilies/rolleyes.gif', ':rolleyes:'], ['http://forums.kuban.ru/images/smilies/yo.gif', ':yo:'], ['http://forums.kuban.ru/images/smilies/thumb.gif', ':thumb:'], ['http://forums.kuban.ru/images/smilies/ban.gif', ':ban:'], ['http://forums.kuban.ru/images/smilies/crazy.gif', ':crazy:'], ['http://forums.kuban.ru/images/smilies/high5.gif', ':high5:'], ['http://forums.kuban.ru/images/smilies/sleep.gif', ':sleep:'], ['http://forums.kuban.ru/images/smilies/pizza.gif', ':pizza:'], ['http://forums.kuban.ru/images/smilies/drama.gif', ':drama:'], ['http://forums.kuban.ru/images/smilies/ranger.gif', ':ranger:'], ['http://forums.kuban.ru/images/smilies/doh.gif', ':doh:'], ['http://forums.kuban.ru/images/smilies/popcorn.gif', ':popcorn:'], ['http://forums.kuban.ru/images/smilies/cheer2.gif', ':cheer2:'], ['http://forums.kuban.ru/images/smilies/rant.gif', ':rant:'], ]; // ======================================= // ЧС персонажей исполняемый код // ======================================= var regExpPath = /^\/f\w+\/$|^\/f\w+\/i\d+\.html$/; var matchPath = window.location.pathname.match(regExpPath); var regExpPathMsg = /^\/f\w+\/.+\.html.*/i; var matchPathMsg = window.location.pathname.match(regExpPathMsg); if(matchPathMsg && !matchPath) { /* var posts = document.querySelectorAll("td[class=\"alt2\"][align=\"right\"][width=\"15%\"][valign=\"top\"][style=\"padding: 5px;\"]"); */ var posts = document.querySelectorAll('div[id^=postmenu_]'); var posts_quotes = document.querySelectorAll("table[cellpadding=\"6\"][cellspacing=\"0\"][border=\"0\"][width=\"100%\"] td[class=\"alt2\"][style=\"border:1px inset\"] strong"); // скрываем сообщения заблокированных пользователей и обращения в тексте if(posts) { for (var i = 0; i < posts.length; i++) { // скрываем сообщения от пользователей из ЧС if(posts[i].querySelector("a > b") != null) { if(block.indexOf(posts[i].querySelector("div > a > b").innerText) != -1) { var el = posts[i].querySelector("div > a > b").parentNode.parentNode.parentNode.parentNode; if(el.tagName == "TR") el.style.display = "none"; } } // end ------------------------------------ // скрываем обращения в тексте "0000-ник > block.forEach( function (item) { var post_item = posts[i].closest("tr[valign=\"top\"]").querySelector('span[id^=post_message_]'); if(post_item.innerText.indexOf("-"+item+" >") != -1) { //var re = new RegExp("\\d+-"+item+" >\\s*"); //post_item.innerText = post_item.innerText.replace(re, 'Empty, '); post_item.innerText = post_item.innerText.replace(item, 'Empty'); } } ); // end ------------------------------------ } } // убираем цитаты заблокированных пользователей if(posts_quotes) { for (var i = 0; i < posts_quotes.length; i++) { if(block.indexOf(posts_quotes[i].innerText) != -1) { posts_quotes[i].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.style.display = "none"; } } } // end ------------------------------------ } // ======================================= // ЧС тем исполняемый код // ======================================= if(blokirovat_temy_po_frazam == 1 || blokirovat_temy_po_useram == 1) { if(matchPath) { var t_list = [].slice.call(document.querySelectorAll('[id^=td_threadtitle_]')); if(t_list) { for (var i = 0; i < t_list.length; i++) { if(t_list[i].querySelector("div > a") != null) { // Блокировка тем по заголовкам if(blokirovat_temy_po_frazam == 1) { var t = t_list[i].querySelector("div > a"); for (var n = 0; n= 2) return match[2]; } function addTextAtCursorPosition(textArea, cursorPosition, text) { var front = (textArea.value).substring(0, cursorPosition); var back = (textArea.value).substring(cursorPosition, textArea.value.length); textArea.value = front + text + back; } function updateCursorPosition(cursorPosition, text, textArea) { cursorPosition = cursorPosition + text.length; textArea.selectionStart = cursorPosition; textArea.selectionEnd = cursorPosition; textArea.focus(); } function addTextAtCaret(textAreaId, text) { var videoID = youtube_parser(text); if(videoID !== undefined) { videoID = '[youtube]' + videoID + '[/youtube]'; var textArea = document.getElementById(textAreaId); var cursorPosition = textArea.selectionStart; addTextAtCursorPosition(textArea, cursorPosition, videoID); updateCursorPosition(cursorPosition, videoID, textArea); } } function addYouTube() { result = prompt("Введите полный URL YouTube:"); if(result) addTextAtCaret('vB_Editor_QR_textarea', result); } // ======================================= // ЦИТИРОВАНИЕ справочно, неисполняемый код // ======================================= function quote_parser(str) { var result = new Array(); var regexp_num = new RegExp(/\d+/); var num = regexp_num.exec(str)[0]; result.push(num); var regexp_name = new RegExp(/'(.*?)'/); var name = regexp_name.exec(str)[0].toString(); name = name.replace(/[']/g,''); result.push(decodeURI(name)); return result; } function quote_selection_new() { var str; var result; var txt = ""; var quote; if (window.getSelection) { txt = window.getSelection().toString(); } else if (document.getSelection) { txt = document.getSelection(); } else if (document.selection) { txt = document.selection.createRange().text; } if (txt != "" && window.getSelection().getRangeAt(0).startContainer.nodeName === "#text") { var s = window.getSelection().focusNode.parentElement; for (i = 0; i < document.getElementsByTagName('*').length; i++) { if (s.tagName == "BODY") break; else if (s.tagName == "TR") break; else if (s.parentElement.querySelector('td[style="padding: 5px 5px 20px; color: #0000cc;"]')) { str = s.parentElement.querySelector('a[title="Цитировать выделенный фрагмент"]'); break; } s = s.parentElement; } result = quote_parser(str); quote = '[quote=' + quote_parser(str)[1] + ';' + quote_parser(str)[0] + "]" + txt + "[/quote]"; var textArea = document.getElementById("vB_Editor_QR_textarea"); var cursorPosition = textArea.selectionStart; addTextAtCursorPosition(textArea, cursorPosition, quote); updateCursorPosition(cursorPosition, quote, textArea); } else bbcode('[quote]', '[/quote]'); } // ======================================= // SCRIPT (аналог eval) делает неисполняемый код исполняемым) // ======================================= var textscript = "function youtube_parser(e){var t=/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\\&v=)([^#\\\&\\?]{11,11}).*/,o=e.match(t);return o\&\&o.length>=2?o[2]:void 0}function addTextAtCursorPosition(e,t,o){var u=e.value.substring(0,t),n=e.value.substring(t,e.value.length);e.value=u+o+n}function updateCursorPosition(e,t,o){e+=t.length,o.selectionStart=e,o.selectionEnd=e,o.focus()}function addTextAtCaret(e,t){var o=youtube_parser(t);if(void 0!==o){o=\"[youtube]\"+o+\"[/youtube]\";var u=document.getElementById(e),n=u.selectionStart;addTextAtCursorPosition(u,n,o),updateCursorPosition(n,o,u)}}function addYouTube(){result=prompt(\"Введите полный URL YouTube:\"),result\&\&addTextAtCaret(\"vB_Editor_QR_textarea\",result)}function quote_parser(e){var t=new Array,o=new RegExp(/\\d+/),u=o.exec(e)[0];t.push(u);var n=new RegExp(/\'(.*?)\'/),r=n.exec(e)[0].toString();return r=r.replace(/[\']/g,\"\"),t.push(decodeURI(r)),t}function quote_selection_new(){var e,t,o,u=\"\";if(window.getSelection?u=window.getSelection().toString():document.getSelection?u=document.getSelection():document.selection\&\&(u=document.selection.createRange().text),\"\"!=u\&\&\"#text\"===window.getSelection().getRangeAt(0).startContainer.nodeName){var n=window.getSelection().focusNode.parentElement;for(i=0;i 1) { fieldset = document.getElementsByClassName("fieldset").item(2); } else { fieldset = document.getElementsByClassName("fieldset").item(0); } if(fieldset) { // HILIGHT var highlight = document.createElement('a'); highlight.href = 'javascript:bbcode(\'[highlight]\',\'[/highlight]\')'; highlight.setAttribute('style', 'margin-left: 10px; vertical-align: 4px; background-color: #ffff9e;'); highlight.textContent = "Highlight"; fieldset.querySelector("div").appendChild(highlight); // URL var link = document.createElement('a'); link.href = 'javascript:bbcode(\'[url]\',\'[/url]\')'; link.setAttribute('style', 'margin-left: 10px; vertical-align: 4px;'); link.textContent = "URL"; fieldset.querySelector("div").appendChild(link); // YouTube var youtube = document.createElement('a'); // youtube.setAttribute('href', 'javascript:bbcode(\'[youtube]\',\'[/youtube]\')'); youtube.href = 'javascript:addYouTube()'; youtube.setAttribute('style', 'margin-left: 10px; vertical-align: 4px; text-decoration: none;'); var youtube_text_1 = document.createElement('span'); youtube_text_1.innerText = "YouTube"; youtube_text_1.setAttribute('style', 'text-decoration: underline;'); youtube.appendChild(youtube_text_1); var youtube_text_2 = document.createElement('span'); youtube_text_2.innerText = " 🎬"; //youtube_text_2.style.color = "red"; youtube.appendChild(youtube_text_2); fieldset.querySelector("div").appendChild(youtube); // QUOTE var quote = document.createElement('a'); // quote.href = 'javascript:bbcode(\'[quote]\',\'[/quote]\')'; quote.href = 'javascript:quote_selection_new()'; quote.setAttribute('style', 'margin-left: 10px; vertical-align: 4px; text-decoration: none;'); var quote_text_1 = document.createElement('span'); quote_text_1.innerText = "Цитата"; quote_text_1.setAttribute('style', 'text-decoration: underline;'); quote.appendChild(quote_text_1); var quote_text_2 = document.createElement('span'); quote_text_2.innerText = " 📃"; //quote_text_2.style.color = "red"; quote.appendChild(quote_text_2); fieldset.querySelector("div").appendChild(quote); } // ======================================= // МЕГА РАЗДЕЛ СМАЙЛОВ // ======================================= var div_smiles = document.createElement('div'); var div_smiles_show = document.createElement('div'); div_smiles_show.setAttribute('style', 'margin-top: 5px; text-align: right; padding: 2px; padding-right: 5px;'); if(smiles == 1) div_smiles_show.innerHTML = "Скрыть смайлы ⬆"; else div_smiles_show.innerHTML = "Показать смайлы ⬇"; div_smiles_show.setAttribute('id', 'div_smiles_show'); var div_smiles_panel = document.createElement('div'); div_smiles_panel.setAttribute('style', ''); div_smiles_panel.setAttribute('id', 'div_smiles_panel'); if(smiles == 1) div_smiles_panel.style.display = "inline-block"; else div_smiles_panel.style.display = "none"; for(i = 0; iСкрыть смайлы ⬆\"):(e.style.display=\"none\",document.getElementById(\"div_smiles_show\").innerHTML=\"Показать смайлы ⬇\")}function addSmile(e){e+=\" \";var i=document.getElementById(\"vB_Editor_QR_textarea\"),s=i.selectionStart;addTextAtCursorPosition(i,s,e),updateCursorPosition(s,e,i)}"; var script_smile = document.createElement("script"); script_smile.type="text/javascript"; script_smile.innerHTML = textscript_smile; document.getElementsByTagName('head')[0].appendChild(script_smile); /* // ======================================= // SPECIAL for AdelDiamond // ======================================= var imgs = document.getElementById('posts').getElementsByTagName("img"); var regExpGif = /\.gif\b/; for (var i = 0; i < imgs.length; i++) { var match = imgs[i].src.match(regExpGif); if (match) { imgs[i].src = ""; } } */ // ======================================= // Визуальные улучшения // ======================================= var threadadminform = document.getElementsByName('threadadminform'); var threadadminform_table = threadadminform[0].getElementsByTagName('table'); if(threadadminform_table[0].getAttribute('cellpadding') == '4' && threadadminform_table[0].getAttribute('cellspacing') == '1' && threadadminform_table[0].getAttribute('border') == '0') { threadadminform_table[0].style.display = "none"; document.getElementById('vB_Editor_QR_textarea').style.width = "500px"; document.getElementById('vB_Editor_QR_textarea').style.height = "155px"; document.getElementById('vB_Editor_QR_textarea').style.backgroundColor = "white"; document.getElementById('vB_Editor_QR_textarea').style.resize = "both"; } var divs_class_panel = document.getElementsByClassName('panel'); if(divs_class_panel[0].parentNode.getAttribute('class')) { if(divs_class_panel[0].getElementsByTagName('div')[0].getAttribute('align') == "left" && divs_class_panel[0].getElementsByTagName('div')[0].getAttribute('style') == "width: 450px;") { divs_class_panel[0].getElementsByTagName('div')[0].style.width = "500px"; } } // ======================================= // Открываем страницу с последнего сообщения // ======================================= if(open_bottom == 1) { const open_el = document.getElementById('vB_Editor_QR_textarea'); open_el.scrollIntoView(); }