- // ==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://gf.qytechs.cn/scripts/400250
- *
- * == BEGIN LICENSE ==
- *
- * Open name: Forum Master・Discuz!
- * Open home: https://gf.qytechs.cn/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(/\&#.*?;/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;
- }
- `);
- })();