🏠 Home 

Forum Master・Discuz! Revision

Forum Master - Discuz! Beautify the interface, Remove ads, Enhance functions.


Install this script?
// ==UserScript==
// @name         Forum Master・Discuz! Revision
// @name:en      Forum Master・Discuz! Revision
// @name:zh-CN   论坛大师・Discuz!修改版
// @name:zh-TW   論壇大師・Discuz!修改版
// @namespace    Forum Master・Discuz!-mxdh
// @version      0.9.2
// @icon         https://www.discuz.net/favicon.ico
// @description  Forum Master - Discuz! Beautify the interface, Remove ads, Enhance functions.
// @description:en    Forum Master - Discuz! Beautify the interface, Remove ads, Enhance functions.
// @description:zh-CN 论坛大师(简体中文)・Discuz! 界面美化、移除广告、功能增强……
// @description:zh-TW 論壇大師(繁體中文)・Discuz! 界面美化、移除廣告、功能增強……
// @author       hostname,mxdh
// @match        https://www.52pojie.cn/thread-*.html
// @match        https://www.52pojie.cn/forum.php?mod=viewthread&tid=*
// @match        https://www.right.com.cn/forum/thread-*.html
// @match        https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=*
// @match        https://bbs.kafan.cn/thread-*.html
// @match        https://bbs.kafan.cn/forum.php?mod=viewthread&tid=*
// @match        https://hostloc.com/thread-*.html
// @match        https://hostloc.com/forum.php?mod=viewthread&tid=*
// @match        https://www.hostloc.com/thread-*.html
// @match        https://www.hostloc.com/forum.php?mod=viewthread&tid=*
// @match        http://bbs.pcbeta.com/thread-*.html
// @match        http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=*
// @match        http://bbs.pcbeta.com/viewthread-*.html
// @match        https://bbs.pcbeta.com/thread-*.html
// @match        https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=*
// @match        https://bbs.pcbeta.com/viewthread-*.html
// @match        https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=*
// @match        http://bbs.huorong.cn/thread-*.html
// @match        http://bbs.huorong.cn/forum.php?mod=viewthread&tid=*
// @match        https://bbs.huorong.cn/thread-*.html
// @match        https://bbs.huorong.cn/forum.php?mod=viewthread&tid=*
// @match        https://iya.app/thread-*.html
// @match        https://iya.app/forum.php?mod=viewthread&tid=*
// @match        https://www.dospy.wang/thread-*.html
// @match        https://www.dospy.wang/forum.php?mod=viewthread&tid=*
// @match        http://www.aihao.cc/thread-*.html
// @match        http://www.aihao.cc/forum.php?mod=viewthread&tid=*
// @match        https://www.aihao.cc/thread-*.html
// @match        https://www.aihao.cc/forum.php?mod=viewthread&tid=*
// @grant        GM_addStyle
// @grant        GM_getValue
// @grant        GM_log
// @grant        GM_setValue
// @grant        GM_xmlhttpRequest
// @supportURL   https://github.com/mxdh/Forum-Master-Discuz-
// @license GPL-3.0
// ==/UserScript==
(function () {
'use strict';
//This is the original author's statement:
/**
* Forum Master・Discuz! - https://greasyfork.org/scripts/400250
*
* == BEGIN LICENSE ==
*
* Open name: Forum Master・Discuz!
* Open home: https://greasyfork.org/scripts/400250
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
* 1. GPL - GNU General Public License
*    https://www.gnu.org/licenses/gpl-3.0.html
*
* 2. MPL - Mozilla Public License
*    https://www.mozilla.org/MPL/2.0/
*
* Copyright statement is prohibited from modification and must be retained.
*
* == END LICENSE ==
*/
// Global Settings · Start
const GLOBAL_CONFIG = {
// Clean posts' format: true/false
// 清除帖子格式: true/false
// 清除帖子格式: true/false
clean_post: false,
// Display the users' online status: 'None', 'Standard', 'Advanced'
// 显示用户的在线状态: 'None', 'Standard', 'Advanced'
// 顯示用戶的在線狀態: 'None', 'Standard', 'Advanced'
detection_mode: 'Advanced',
// Text Beautification: true/false
// 文本美化: true/false
// 文字美化: true/false
text_beautification: false,
// Code Beautification: true/false
// 代码美化:true/false
// 程式碼美化:true/false
code_beautification: true,
// Scene Mode: 'Standard', 'Family', 'Office'
// 场景模式: 'Standard', 'Family', 'Office'
// 場景模式: 'Standard', 'Family', 'Office'
scene_mode: 'Standard',
// Automatically refresh after modifying settings on webpage: true/false,
// 在网页上修改设置后自动刷新: true/false,
// 在網頁上修改設置後自動刷新: true/false,
auto_reload: true,
// Display Eomji: true/false
// 显示Emoji: true/false
// 顯示Emoji: true/false
display_emoji: true,
}
// Global Settings · End
// Below is the core code
// Host Name
const hn = window.location.hostname;
function get_site_pos() {
if (!!~hn.indexOf('.com.cn')) return -3;
return -2;
}
const site_pos = get_site_pos();
const site = hn.split('.').slice(site_pos, site_pos + 1).join().toUpperCase();
GM_log("Site name:", site);
// Scene mode: Standard, Family, Office
var scene_mode = GM_getValue(site + '_SCENE_MODE') || GLOBAL_CONFIG.scene_mode;
// Display the users online status
var detection_mode = GM_getValue(site + '_DETECTION_MODE') || GLOBAL_CONFIG.detection_mode;
// Clean posts' format
var clean_post = GM_getValue(site + '_CLEAN_POST') || GLOBAL_CONFIG.clean_post;
// Test code
const ua = window.navigator.userAgent;
GM_log('User-Agent:', ua);
GM_log('');
GM_log('Scene mode:', scene_mode);
GM_log(typeof scene_mode);
GM_log('Detection mode:', detection_mode);
GM_log(typeof detection_mode);
GM_log('');
const clean_post_dic = {
false: '关闭',
true: '开启'
}
const clean_post_cutover_dic = {
false: true,
true: false
}
const detection_mode_dic = {
None: '关闭',
Standard: '普通',
Advanced: '高级'
}
const detection_mode_cutover_dic = {
None: 'Standard',
Standard: 'Advanced',
Advanced: 'None'
}
const scene_mode_dic = {
Standard: '标准模式',
Family: '家庭模式',
Office: '办公模式'
}
const scene_mode_cutover_dic = {
Standard: 'Family',
Family: 'Office',
Office: 'Standard'
}
// Cascading Style Sheets・Global
GM_addStyle(`
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #fff;
--gray: #6c757d;
--gray-dark: #343a40;
--primary: #007bff;
--secondary: #6c757d;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #f8f9fa;
--dark: #343a40;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Noto Sans CJK", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei New", "Microsoft Yahei", "WenQuanYi Micro Hei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: "Fira Code", Hack, "Source Code Pro", "Source Code Variable", SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", "Noto Sans Mono CJK", "Microsoft YaHei Mono", "WenQuanYi Zen Hei Mono", monospace;
}
.ads,
.plc .dnch_eo_pt,
.plc .dnch_eo_pb,
#diynavtop,
#drk_colee_left1,
#drk_colee_left2,
#drk_ledtd,
#hd .wp .a_mu,
table .a_pr,
.ad .plc .a_p,
.a_h,
.a_t,
.a_pt,
.a_pb {
display: none;
}
.pls .avatar {
padding-top: 1px;
position: relative;
text-align: center;
object-fit: contain;
}
.pls .avatar img {
width: 120px;
height: 120px;
object-fit: contain;
background: none;
border-radius: 50%;
padding: 0;
border: 2px solid #fff;
box-shadow: 0 0 10px #00BFFF;
}
.pls .m img {
width: 120px;
height: 120px;
object-fit: contain;
border-radius: 50%;
background: none;
}
.pls .m img:hover {
background: #fff;
object-fit: contain;
background: #fff;
border-radius: 0;
}
.avt img,
#tath img,
.rate table img,
.cm .vm img,
.card_mn .avt img {
border: 2px solid #fff;
border-radius: 50%;
box-shadow: 0 0 2px #bbb;
}
.avt img:hover,
#tath img:hover,
.rate table img:hover,
.cm .vm img:hover,
.card_mn .avt img:hover {
border-radius: 0;
box-shadow: none;
}
.pls .avatar img,
.avtm img,
.avt img,
#tath img,
.rate table img,
.cm .vm img,
.card_mn .avt img,
.pls .m img {
-webkit-transition: 0.5s;
-moz-transition: 0.5s;
-ms-transition: 0.5s;
-o-transition: 0.5s;
transition: 0.5s;
}
.pls .avatar img:hover,
.avt img:hover,
#tath img:hover,
.rate table img:hover,
.cm .vm img:hover,
.card_mn .avt img:hover {
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-ms-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
}
.user-online-status {
display: block;
margin: 0;
border-collapse: collapse;
text-align: center;
position: absolute;
left: 0;
top: 0;
width: 10px;
height: 10px;
cursor: help;
}
.user-status-expression {
display: block;
position: absolute;
left: 0;
top: 0;
margin: 0;
padding: 0;
text-align: center;
border-collapse: collapse;
cursor: help;
}
.user-status-expression-online::after {
content: '🌝';
}
.user-status-expression-offline::after {
content: '🌚';
}
.offline {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
}
#hd .wp,
#um {
padding-top: 0;
}
.function-buttons {
padding: 0 0 4px 0;
text-align: right;
white-space: nowrap;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.custom-function-button {
margin: 4px 4px;
padding: 2px 8px;
background-color: #FFFFFF;
text-align: center;
border:#DCDCDC solid 1px;
border-radius: 4px;
outline: none;
cursor: pointer;
font-weight: bold;
}
.custom-function-button:hover {
box-shadow: 0 1px 2px #bbb;
border-top: #00BFFF solid 1px;
background-color: #F0FFFF;
}
.button-disabled {
color: #808080;
cursor: default;
}
.button-disabled:hover {
box-shadow: none;
}
`);
if (GLOBAL_CONFIG.text_beautification) {
GM_addStyle(`
body, table, input, button, select, textarea, a {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei New", "Microsoft Yahei", "WenQuanYi Micro Hei", "Noto Sans CJK", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
`)
}
if (GLOBAL_CONFIG.code_beautification) {
GM_addStyle(`
.mono, .md, .code, .pre, .tt, mono, md, code, pre, tt,
.blockcode ol li {
font-family: "Fira Code", Hack, "Source Code Pro", SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", "Microsoft YaHei Mono", "WenQuanYi Zen Hei Mono", "Noto Sans Mono CJK", monospace !important;
}
`)
}
if (clean_post) {
GM_addStyle(`
.t_f font{
font-size:inherit !important;
color:inherit !important;
background-color:inherit !important;
font-family:inherit !important;
}
.t_f u{
text-decoration:inherit !important;
}
.t_f strong{
font-weight:inherit !important;
}
.t_f i{
font-style:inherit !important;
}
.plhin {
background: none !important;
}
`)
}
// Login status
const member = !!document.getElementById('extcreditmenu') || !!document.getElementById('myprompt') || !!document.getElementById('myrepeats');
GM_log('Login status:', member);
GM_log('');
// Default avatar
function default_avatar() {
// https://herder.cdn.bcebos.com/uc_server/images/noavatar_big.gif
// https://herder.cdn.bcebos.com/uc_server/images/noavatar_middle.gif
// https://herder.cdn.bcebos.com/uc_server/images/noavatar_small.gif
if (site === '52POJIE') {
GM_addStyle(`
.pls .avatar img,
.avtm img {
content: url('//avatar.52pojie.cn/images/noavatar_middle.gif');
}
#um .avt img,
#tath img,
.rate table img,
.cm .vm img,
.card_mn .avt img {
content: url('//avatar.52pojie.cn/images/noavatar_small.gif');
}
`);
} else {
GM_addStyle(`
.pls .avatar img,
.avtm img {
content: url('//herder.cdn.bcebos.com/uc_server/images/noavatar_middle.gif');
}
#um .avt img,
#tath img,
.rate table img,
.cm .vm img,
.card_mn .avt img {
content: url('//herder.cdn.bcebos.com/uc_server/images/noavatar_small.gif');
}
`);
}
}
// Default avatar for Family attach
function default_avatar_for_family_attach() {
GM_addStyle(`
.pls .avatar img:hover,
.avtm img:hover,
.avt img:hover,
#tath img:hover,
.rate table img:hover,
.cm .vm img:hover,
.card_mn .avt img:hover,
.pls .m img {
content: none;
}
`);
}
// Simplified avatar
function simplified_avatar() {
GM_addStyle(`
.pls .avatar {
margin: 10px auto;
width: 60px;
height: 60px;
}
.pls .avatar img {
width: 60px;
height: 60px;
}
.pls .avatar img:hover {
border-radius: 0;
}
.md_ctrl,
p.xg1,
nav.toc,
.scbar_hot_td,
.pls .avatar_p .vm,
img.authicn.vm,
fieldset {
display: none;
}
.plhin {
background: none !important;
}
`);
}
// Hidden Signature
function hidden_signature() {
GM_addStyle(`
.sign,
.signature {
display: none;
}
`);
}
// Show Dialog
function show_dialog(message) {
try {
if (typeof showDialog === 'function') {
showDialog(message, 'right');
} else if (typeof showError === 'function') {
showError(message);
} else {
alert(message);
}
} catch (error) {
alert(message);
}
}
// Scene mode
switch (scene_mode) {
case 'Standard':
break;
case 'Family':
// Set as Default avatar
default_avatar();
// Set as Default avatar for Family attach
default_avatar_for_family_attach();
break;
case 'Office':
// Set as Default avatar
default_avatar();
// Set as Simplified avatar
simplified_avatar();
// Set as Hidden Signature
hidden_signature();
break;
default:
break;
}
// Display the user real online status
function display_user_real_online_status(avatar, id) {
let request = new XMLHttpRequest();
let url = './home.php?mod=spacecp&ac=pm&op=showmsg&touid=' + id + '&inajax=1';
request.open('GET', url);
request.send();
request.addEventListener('readystatechange', function () {
if (this.readyState === 4 && this.status === 200) {
let status = !!~this.response.indexOf('[在线]');
let span = document.createElement('span');
span.className = status ? 'user-status-expression user-status-expression-online' : 'user-status-expression user-status-expression-offline';
span.title = status ? '当前在线' : '当前离线';
avatar.appendChild(span);
}
}, false);
}
// Show users online status
function show_users_online_status() {
const avatar = document.getElementsByClassName('avatar');
const info = document.getElementsByClassName('i');
const wait = site === 'PCBETA' ? 3000 : 1111;
switch (detection_mode) {
case 'None':
break;
case 'Standard':
// Show default users online status
for (let i = 0; i < info.length; i++) {
if (!!~info[i].innerHTML.indexOf('<em>当前在线</em>')) {
let div = document.createElement('div');
div.className = 'user-online-status online gol';
div.title = '当前在线';
avatar[i].appendChild(div);
} else {
let div = document.createElement('div');
div.className = 'user-online-status offline gol';
div.title = '当前离线';
avatar[i].appendChild(div);
// avatar[i].classList.add('offline');
}
}
break;
case 'Advanced':
// Show real users online status
for (let i = 0; i < info.length; i++) {
setTimeout(() => {
let html = avatar[i].innerHTML;
let id = /\d/.test(html) ? html.match(/\d+/)[0] : info[i].innerHTML.match(/\d+/)[0];
display_user_real_online_status(avatar[i], id);
}, i * wait + 1000);
}
break;
default:
break;
}
}
// Execution as Show users online status
if (member) {
show_users_online_status();
} else if (site === 'PCBETA' || site === 'DOSPY') {
detection_mode = 'Standard';
show_users_online_status();
}
var display_check_in_button = true;
if (site === 'KAFAN') {
// Auto Check-in
if (member) {
const status_images = document.getElementsByClassName('qq_bind');
if (!!status_images.length) {
!!status_images[0].src.slice(-6, -4) === 'dk' && document.getElementById('pper_a').click();
}
}
display_check_in_button = false;
}
if (site === 'HUORONG' || site === 'DOSPY') display_check_in_button = false;
// Create Button Group
function create_button_group() {
// Function buttons
const function_buttons = document.createElement('div');
function_buttons.id = 'function-buttons';
function_buttons.className = 'function-buttons';
let function_buttons_package;
switch (true) {
case !!document.getElementsByClassName('xm_header_top_ul').length:
function_buttons_package = document.getElementsByClassName('xm_header_top_ul')[0];
break;
case !!document.getElementById('extcreditmenu'):
function_buttons_package = document.getElementById('extcreditmenu').parentElement;
break;
case site === 'PCBETA' && !!document.getElementsByClassName('hdc').length:
function_buttons_package = document.getElementsByClassName('hdc')[0];
break;
case !!document.getElementsByClassName('menu').length:
function_buttons_package = document.getElementsByClassName('menu')[0];
break;
case !!document.getElementById('pt'):
function_buttons_package = document.getElementById('pt');
break;
default:
break;
}
if (!!function_buttons_package === false) {
GM_log('No nodes');
return false;
}
// Scene mode button
function scene_mode_mouseenter() {
scene_mode = GM_getValue(site + '_SCENE_MODE') || scene_mode;
this.innerHTML = scene_mode_dic[scene_mode];
}
function scene_mode_switch() {
this.disabled = true;
this.classList.add('button-disabled');
scene_mode = scene_mode_cutover_dic[scene_mode];
this.innerHTML = scene_mode_dic[scene_mode];
GM_setValue(site + '_SCENE_MODE', scene_mode);
if (GLOBAL_CONFIG.auto_reload) {
window.location.reload();
return;
}
let message = '场景模式切换成功,刷新页面即可进入 <span style="color: var(--info);">' + scene_mode_dic[scene_mode] + '</span>。';
show_dialog(message);
this.disabled = false;
this.classList.remove('button-disabled');
}
const scene_mode_button = document.createElement('button');
scene_mode_button.className = 'custom-function-button scene-mode-button';
scene_mode_button.innerHTML = scene_mode_dic[scene_mode];
scene_mode_button.addEventListener('mouseenter', scene_mode_mouseenter, false);
scene_mode_button.addEventListener('click', scene_mode_switch, false);
function_buttons.appendChild(scene_mode_button);
// Detection mode button
function detection_mode_mouseenter() {
detection_mode = GM_getValue(site + '_DETECTION_MODE') || detection_mode;
this.innerHTML = '探测模式:' + detection_mode_dic[detection_mode];
}
function detection_mode_switch() {
this.disabled = true;
this.classList.add('button-disabled');
detection_mode = detection_mode_cutover_dic[detection_mode];
this.innerHTML = '探测模式:' + detection_mode_dic[detection_mode];
GM_setValue(site + '_DETECTION_MODE', detection_mode);
if (GLOBAL_CONFIG.auto_reload) {
window.location.reload();
return;
}
let message = '探测模式切换成功,刷新页面即可进入 <span style="color: var(--info);">' + detection_mode_dic[detection_mode] + '</span>。';
show_dialog(message);
this.classList.remove('button-disabled');
}
if (member) {
const detection_mode_button = document.createElement('button');
detection_mode_button.className = 'custom-function-button detection-mode-button';
detection_mode_button.innerHTML = '探测模式:' + detection_mode_dic[detection_mode];
detection_mode_button.addEventListener('mouseenter', detection_mode_mouseenter, false);
detection_mode_button.addEventListener('click', detection_mode_switch, false);
function_buttons.appendChild(detection_mode_button);
}
// Clean post button
function clean_post_mouseenter() {
clean_post = GM_getValue(site + '_CLEAN_POST') || clean_post;
this.innerHTML = '清除格式:' + clean_post_dic[clean_post];
}
function clean_post_switch() {
this.disabled = true;
this.classList.add('button-disabled');
clean_post = clean_post_cutover_dic[clean_post];
this.innerHTML = '清除格式:' + clean_post_dic[clean_post];
GM_setValue(site + '_CLEAN_POST', clean_post);
if (GLOBAL_CONFIG.auto_reload) {
window.location.reload();
return;
}
let message = '清除格式模式切换成功,刷新页面即可进入 <span style="color: var(--info);">' + clean_post_dic[clean_post] + '</span>。';
show_dialog(message);
this.classList.remove('button-disabled');
}
if (member) {
const clean_post_button = document.createElement('button');
clean_post_button.className = 'custom-function-button detection-mode-button';
clean_post_button.innerHTML = '清除格式:' + clean_post_dic[clean_post];
clean_post_button.addEventListener('mouseenter', clean_post_mouseenter, false);
clean_post_button.addEventListener('click', clean_post_switch, false);
function_buttons.appendChild(clean_post_button);
}
// Check in
if (member && display_check_in_button) {
function check_in() {
const check_in = document.getElementsByClassName('check-in')[0];
check_in.innerHTML = '正在签到';
check_in.disabled = true;
check_in.classList.add('button-disabled');
setTimeout(() => {
let message = '签到完成';
check_in.innerHTML = message;
show_dialog(message)
}, 1234);
if (site === 'PCBETA') {
window.open('//i.pcbeta.com/home.php?mod=task&do=apply&id=149');
return false;
}
for (let i = 0; i < 10; i++) {
setTimeout(() => {
let request = new XMLHttpRequest();
let space = './home.php?mod=task&do=apply&id='.concat(i);
request.open('get', space);
request.send();
}, i * 100);
}
if (site === 'HOSTLOC') {
for (let i = 0; i < 20; i++) {
setTimeout(() => {
let request = new XMLHttpRequest();
let space = '//www.hostloc.com/space-uid-'.concat(Math.ceil(Math.random() * 47000 + 100), '.html');
request.open('get', space);
request.send();
}, i * 100 + 1000);
}
}
}
const check_in_button = document.createElement('button');
check_in_button.className = 'custom-function-button check-in';
check_in_button.innerHTML = '每日签到';
check_in_button.addEventListener('click', check_in, false);
function_buttons.appendChild(check_in_button);
}
function_buttons_package.appendChild(function_buttons);
}
// Execution as Create Button Group
create_button_group();
// Click the main building reply to skip to the bottom of the page
function skip_bottom(params) {
try {
params.removeAttribute('onclick');
params.addEventListener('click', function (event) {
params.href = 'javascript:;';
window.scrollTo(0, 54321);
let fastPostMessage = document.getElementById('fastpostmessage');
!!fastPostMessage && fastPostMessage.focus();
}, false);
} catch (error) {
GM_log('You don\'t have permission to post content.');
}
}
if (document.getElementsByClassName('prev').length === 0) {
const locked = member && document.getElementsByClassName('locked');
if (typeof locked === 'object' && !!locked.length) {
for (let i = 0; i < locked.length; i++) {
skip_bottom(locked[i].getElementsByTagName('a')[0]);
}
}
const fastre = member && document.getElementsByClassName('fastre')[0];
!!fastre && skip_bottom(fastre);
}
function get_attach_content() {
switch (site) {
case 'KAFAN':
return '';
case 'HOSTLOC':
return '󠀠'.repeat(10);
default:
return '\n\n[img]' + window.location.protocol + '//herder.cdn.bcebos.com/images/dot.gif[/img]';
}
}
const attachContent = get_attach_content();
const fastPostMessage = document.getElementById('fastpostmessage');
function editor_content() {
let fastPostMessageContent = fastPostMessage.value;
if (fastPostMessageContent && fastPostMessageContent.length < 20) {
fastPostMessageContent = fastPostMessageContent.trim();
fastPostMessage.style.opacity = '0';
fastPostMessage.value = fastPostMessageContent.concat(attachContent);
setTimeout(() => {
fastPostMessage.value = fastPostMessageContent;
fastPostMessage.style.opacity = '1';
}, 100);
}
}
!!fastPostMessage && fastPostMessage.removeAttribute('onkeydown');
!!fastPostMessage && fastPostMessage.addEventListener('keydown', function (event) {
if (event.ctrlKey && event.which === 13) {
editor_content();
seditor_ctlent(event, 'fastpostvalidate($(\'fastpostform\'))');
}
if (event.altKey && event.which === 83) {
editor_content();
seditor_ctlent(event, 'fastpostvalidate($(\'fastpostform\'))');
}
}, false);
const fastPostSubmit = document.getElementById('fastpostsubmit');
!!fastPostSubmit && fastPostSubmit.addEventListener('click', editor_content, false);
// Automatically expand all posts
// if (typeof display_blocked_post === 'function') display_blocked_post();
// Display Emoji
if (GLOBAL_CONFIG.display_emoji) {
const post = document.getElementsByClassName('t_f');
for (let i = 0; i < post.length; i++) {
post[i].innerHTML = post[i].innerHTML.replace(/\&amp;#.*?;/g, function (char) {
if (char.length === 13) {
return String.fromCodePoint(parseInt(char.match(/[0-9]+/)));
}
return char;
}
);
}
}
// Compatibility settings
// Cascading Style Sheets・www.hostloc.com
site === 'HOSTLOC' && GM_addStyle(`
#hiddenpoststip {
padding: 0;
}
#hiddenpoststip a {
height: 32px;
line-height: 32px;
font-size: 16px;
}
#hiddenpoststip a:hover {
color: #f33;
}
#hiddenpoststip a::before {
padding-right: 8px;
content: "🌜";
}
#hiddenpoststip a::after {
padding-left: 8px;
content: "🌛";
}
`);
// Cascading Style Sheets・bbs.pcbeta.com
site === 'PCBETA' && GM_addStyle(`
#wp > div:first-child  {
display: none !important;
}
#wp > div,
#nv_forum > span,
.pls .tip,
ignore_js_op .tip {
display: none;
}
#wp > div.cl,
#wp > div.wp,
#nv_forum #scrolltop {
display: block;
}
.pls .avatar {
overflow: unset;
}
.pb_pls .avatar img {
border-radius: 50%;
background: none;
-webkit-transition: 0.5s;
-moz-transition: 0.5s;
-ms-transition: 0.5s;
-o-transition: 0.5s;
transition: 0.5s;
}
.pb_pls .avatar img:hover {
border-radius: 0;
}
.hdc {
position: relative;
}
.function-buttons {
position: absolute;
right: 0;
padding: 0 8px 4px 0;
}
.custom-function-button {
margin: 0 4px;
}
.wp .pgs {
-moz-user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
user-select: none;
}
`);
})();