Greasy Fork is available in English.

MCBBS 自定义背景

自定义mcbbs的背景

// ==UserScript==
// @name         MCBBS 自定义背景
// @namespace    http://fang.blog.miri.site/
// @version      2.4.0
// @icon         https://s2.ax1x.com/2020/02/25/3twNzq.png
// @description  自定义mcbbs的背景
// @author       Mr_Fang
// @match        https://*.mcbbs.net/*
// @grant        none
// ==/UserScript==

(function() {
    // 定义变量
    var storage = window.localStorage;
    var mbg_url = storage.getItem('mbg_url');
    var mbg_opacity = storage.getItem('mbg_opacity');
    var mbg_border_top = storage.getItem('mbg_border_top');
    var mbg_bg_xoffset = storage.getItem('mbg_bg_xoffset');
    var version = "2.4.0"; // 不要动版本号

    // 无法加载jq自动禁用
    if (typeof jQuery == 'undefined') {
        console.error("%cMCBBS 自定义背景脚本已停止运行:\n无法加载jQuery。", "font-weight:bold");
        return false;
    }
    // 在手机版自动禁用
    if (document.getElementsByTagName('meta').viewport) {
        console.error("%cMCBBS 自定义背景脚本已停止运行:\n不支持手机版论坛运行。", "font-weight:bold");
        return false;
    }

    // 更新提醒
    if(storage.getItem('mbg_version') != version){
        showDialog('<style>.alert_info {background-image: none;padding-right: 0px;padding-left: 0px;}</style><div class=""><b>MCBBS 自定义背景已成功从 V'+ storage.getItem('mbg_version') +' 更新至 V'+ version +'</b><hr><p>此次更新内容:</p> <p ><ol style="margin-left: 25px"><li>同步抢先体验版特性</li></ol></div>',
                   'confirm',
                   '<div style="line-height:30px;"><img src="https://s2.ax1x.com/2020/02/25/3twNzq.png" width="20px"> 自定义背景</div>',
                   function() {
            storage["mbg_version"] = version;
        }
                  );
    }

    console.log(" %c MCBBS 自定义背景 %c V"+ version +" ", "color: #fff; background: #f8981d; padding:5px;", "color:#fff; background: #000; padding:5px;");
    console.log(" %c Made by %c 快乐小方 ", "color: #fff; background: #815098; padding:5px;", "color:#fff; background: #000; padding:5px;");


    // 判断透明度是否为空
    if(mbg_opacity == null){
        mbg_opacity = 100;
    }

    // 判断X偏移量是否为空
    if(mbg_bg_xoffset == null){
        mbg_bg_xoffset = 50;    // 默认是居中显示的(50%)
    }

    // 判断此页中是否存个人信息菜单
    if(jq('.user_info_menu_btn').length>0) {
        // 如存在,在个人信息菜单中添加按钮
        jq('.user_info_menu_btn').append('<li><a id="bg_setting">自定义背景</a></li>');
        // 设置窗口
        document.getElementById('bg_setting').addEventListener('click',function(){
            showDialog('<style>.alert_right {background-image: none;padding-right: 0px;padding-left: 0px;}</style><div class=""><b>点击确定保存 刷新后生效</b><hr><p>自定义背景图 <font color="gray">- 请填写图片链接(多行即启用随机显示)</font></p><textarea id="mbg_url_input" style="width: 98%;" rows="5">' + storage.getItem('mbg_url') + '</textarea><p>背景X偏移量 <font color="gray">- 当前' + mbg_bg_xoffset + '%</font></p><input min="0" max="100" type="range" value="' + mbg_bg_xoffset + '" id="mbg_xoffset_input" style="width: 98%;"><div style="margin-top: -8px;"><font>0%</font><font style="float: right;">100%</font></div><p>透明度 <font color="gray">- 当前' + mbg_opacity + '%</font></p><input min="0" max="100" type="range" value="' + mbg_opacity + '" id="mbg_opacity_input" style="width: 98%;"><div style="margin-top: -8px;"><font>0%</font><font style="float: right;">100%</font></div><p>自定义挂件 <font color="gray">- 请填写图片链接(留空或null即不显示)</font></p><input id="mbg_border_top_input" value="'+ storage.getItem('mbg_border_top') +'" style="width: 98%;" ></div>',
                       'right',
                       '<div style="line-height:30px;"><img src="https://s2.ax1x.com/2020/02/25/3twNzq.png" width="20px"> 自定义背景</div>',
                       function() {
                storage["mbg_url"] = document.getElementById("mbg_url_input").value;
                storage["mbg_opacity"] = document.getElementById("mbg_opacity_input").value;
                storage["mbg_bg_xoffset"] = document.getElementById("mbg_xoffset_input").value;
                storage["mbg_border_top"] = document.getElementById("mbg_border_top_input").value;
            },
                       true,
                       {},
                       '<span onclick="showWindow(\'mbg_box\', \'https://www.mcbbs.net/home.php?mod=space&uid=1970274\')" title="点击查看作者"><span style="background: #f8981d; color: #fff; padding: 5px;">MCBBS 自定义背景 </span><span style="background: #000; color: #fff; padding: 5px;"> V2.4</span></span>'
                      );
        })
    }

    //***** 反馈版发帖警告 开始 *****//
    var filename = window.location.href.split("/").slice(window.location.href.split("/").length - 1,window.location.href.split("/").length).toString(String).split(".")[0];
    function GetQueryValue(queryName) {
        var query = decodeURI(window.location.search.substring(1));
        var vars = query.split("&");
        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split("=");
            if (pair[0] == queryName) { return pair[1]; }
        }
        return null;
    }
    if(filename == "forum" && GetQueryValue('mod') == "post" && GetQueryValue('action') == "newthread" && GetQueryValue('fid') == "246"){
        showDialog('<style>.alert_right {background-image: none;padding-right: 0px;padding-left: 0px;} .m_c{background: #e74b3c url(https://s1.ax1x.com/2020/05/28/tVeOhQ.jpg) -100px 15px no-repeat; background-size:80%} .m_c .o{ background: #ffffff00;} .alert_right{margin-left: 25%; color: #fff;}</style><font size="4"><b>你正在向反馈与投诉版发布帖子</b></font><p>如果你正在反馈BUG,请先关闭此脚本再次尝试触发BUG。如果你能确定并不是由此脚本引发的BUG,请忽略本提醒。</p>',
                   'right',
                   '<div style="line-height:30px;"><img src="https://s2.ax1x.com/2020/02/25/3twNzq.png" width="20px"> <font color="#fff">来自MCBBS自定义背景脚本的警告</font></div>',
                   {},
                   true,
                   {},
                   '<span onclick="showWindow(\'mbg_box\', \'https://www.mcbbs.net/forum.php?mod=post&action=reply&fid=43&tid=1041361&reppost=18115011&extra=page%3D1&page=1\')" style="color: #fff;" title="点击打开反馈对话框">反馈脚本BUG</span>'
                  );
    }
    //***** 反馈版发帖警告 结束 *****//

    var mbg_urlList = [];
    var bg_css = '';

    // 判断是背景否为空
    if(mbg_url == null || mbg_url == ""){
        // 如果为空直接用mcbbs自己的背景
        mbg_urlList = [''];
    }else{
        // 如果不为空使用自定义背景
        mbg_url = "['" + storage.getItem('mbg_url') + "']";
        var n = mbg_url.split('\n').length - 1;
        for(var l=0;l<n;l++){
            mbg_url = mbg_url.replace('\n',"','");
            //console.log(mbg_url);
        }
        mbg_urlList = eval("(" + mbg_url + ")");
        console.log(mbg_urlList);

        var hsv = mbg_urlList.length; // 获取数组长度
        var ran = Math.floor(Math.random() * hsv); // 取0至数组最大下标值中的随机数(因为floor是向下取整)

        bg_css = 'background-image: url(' + mbg_urlList[ran] + ');';
    }

    // 判断挂件是否为空或“null”
    if(mbg_border_top != null && mbg_border_top != "null"){
        // 这个挂件是论坛自带的,但是被注释掉了
        // 泥潭吉祥物泥猪的路径地址:template/mcbbs/image/muddy_pig_subhero_updated6-19.png
        jq('<img class="mc_top" src="' + mbg_border_top + '" draggable="false"/>').insertBefore(".mc_map_border_top");
    }

    // 在head里添加css
    jq("head").append('<style id="mbg_css">img.mc_top{z-index:99;} #body_fixed_bg {' + bg_css + 'background-position: ' + mbg_bg_xoffset + '%; height: 100%;} div.mc_map_wp,div.mw>div.bm.bw0 { opacity: ' + mbg_opacity/100 + '; transition: opacity 0.5s; -webkit-transition: opacity 0.5s; } div.mc_map_wp:hover,div.mw>div.bm.bw0:hover { opacity: 1; }</style>');

})();