XD-Enhance

优化 PC 端的使用体验!样式美化 / 饼干备注 / 快捷切换饼干

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         XD-Enhance
// @namespace    http://tampermonkey.net/
// @version      1.0.3
// @description  优化 PC 端的使用体验!样式美化 / 饼干备注 / 快捷切换饼干
// @author       syrinka
// @match        https://www.nmbxd1.com/*
// @grant        GM_addStyle
// @grant        GM_getValue
// @grant        GM_setValue
// @license      MIT
// ==/UserScript==
 
var custom_style = '.h-threads-item-reply, .h-threads-item-ref { margin: 12px; width: 100%; border-radius: 16px; } .h-threads-item-reply > .h-threads-item-reply-icon, .h-threads-item-ref > .h-threads-item-reply-icon { display: none !important; } .h-threads-item-reply > .h-threads-item-reply-main, .h-threads-item-ref > .h-threads-item-reply-main { padding: 12px; border-radius: 16px; } .h-threads-item-reply > .h-threads-item-reply-main > .h-threads-info, .h-threads-item-ref > .h-threads-item-reply-main > .h-threads-info { width: 100%; } .h-threads-item-reply > .h-threads-item-reply-main > .h-threads-info > .h-threads-info-id, .h-threads-item-ref > .h-threads-item-reply-main > .h-threads-info > .h-threads-info-id { float: right; } .h-threads-img-box img { margin: 15px !important; } #h-content .uk-container { margin: 0 auto; transform: translate(-75px, 0); } #h-content .uk-pagination { margin: 0px auto; } #h-menu { transition: left 0.4s; height: 100% !important; width: 150px; left: -150px; } #h-menu:hover { left: 0px; } #h-bottom-nav { display: none; } #h-post-form > form > div:nth-child(2) { display: none; } #h-post-form > .h-forum-header { display: none; } .ae-box { display: none; position: fixed; right: 24px; bottom: 24px; font-size: 21px; background: #f0e0d6; padding: 15px; border-radius: 8px; font-family: Consolas; } .ae-cookie { display: block; margin: 5px; } #ae-toast { font-size: 16px; }'
 
 
function toast(msg) {
    $('#ae-toast').html(msg).fadeIn(500)
    setTimeout(function() {
        $('#ae-toast').fadeOut(500)
    }, 2000)
}
 
 
function init_check() {
    if (!GM_getValue('now-cookie', false) || !GM_getValue('cookies', false)) {
        toast('当前饼干信息不明! 请前往饼干列表页面并手动切换一次饼干')
        return false
    }
    return true
}
 
 
function get_desc(id) {
    var c = GM_getValue('cookies', null)
    if (!c || !c[id] || !c[id].desc) {
        return null
    } else {
        return c[id].desc
    }
}
 
 
function iset_desc(id) { // with prompt
    var c = GM_getValue('cookies')
    var ndesc = prompt('新备注:', c[id].desc)
    c[id].desc = ndesc
    GM_setValue('cookies', c)
}
 
 
function switch_cookie(cookie) {
    var url = 'https://www.nmbxd1.com/Member/User/Cookie/switchTo/id/' + cookie.id + '.html'
    $.ajax({
        type: 'get',
        url: url,
        success: function(r, status, xhr) {
            toast('切换成功! 当前饼干为 ' + cookie.name)
            GM_setValue('now-cookie', cookie)
        }
    })
}
 
 
function show_switch_panel() {
    $('#ae-switch-panel').remove() // 删除上次创建的 panel
    if (!init_check()) {
        return
    }
 
    $('body').append('<div id="ae-switch-panel" class="ae-box"></div>')
    var sp = $('#ae-switch-panel')
    sp.fadeIn(500)
 
    sp.on('mouseleave',
        ()=>$('#ae-switch-panel').fadeOut(500)
    )
    var cookies = GM_getValue('cookies', null)
    var nc = GM_getValue('now-cookie', null)
    var nc_id = nc?nc.id:null
    for (var id in cookies){
        var c = cookies[id]
        sp.append(
            '<a class="ae-cookie" title="' + c.desc + '">' + ((id===nc_id)?'● ':'○ ') + c.name + ' - ' + c.desc + '</a>'
        )
        sp.children().eq(-1).data('c', c)
        .on('click',
            function() {sp.fadeOut(500); switch_cookie($(this).data('c'))}
        )
    }
}
 
 
function threads_resolve(index, node) { // 对每个串的格式进行处理
    // 将图片盒移动到正文之后
    var box = $(this).children('.h-threads-img-box').remove()
    $(this).append(box)
}
 
 
function on_cookies_manager() {
    $('th.table-title').after('<th class="ae-table-desc">饼干备注</th>')
    $('tbody>tr>td:nth-child(3)').after('<td></td>')
    $('tbody>tr>td:nth-child(7) a:first-child').before('<a href="#" class="am-btn am-btn-default"><span class="am-icon-tag"></span> 修改备注 </a>')
    // 0       1   2     3         4         5         6
    // 多选框  ID  饼干  饼干备注  有效时间  领取时间  操作
 
    var cookies = {}
    $('tbody>tr').each(function(i, n) {
        var td = $(this).children()
        var id = td.eq(1).text()
        var desc = get_desc(id)
        cookies[id] = {
            id: id,
            name: td.eq(2).children().first().text(),
            desc: desc
        }
        td.eq(3).text(desc)
        td.eq(6).find('a:first-child').data('id', id)
            .on('click', function() {iset_desc($(this).data('id'))})
        td.eq(6).find('a:nth-child(2)').data('cookie', cookies[id]).attr('href', '#').off('click')
            .on('click', function() {switch_cookie($(this).data('cookie'))})
    })
    GM_setValue('cookies', cookies);
    console.log('♦ 饼干信息更新完毕 √')
 
    var nc = GM_getValue('now-cookie', null)
    var info = nc?('当前饼干为 ' + nc.name):('当前饼干信息不明,请手动切换一次饼干')
    $('table').after('<span>' + info + '</span>')
}
 
 
(function() {
    GM_addStyle(custom_style)
    // 插入 toast
    $('body').append('<div id="ae-toast" class="ae-box" style="text-align: center;"></div>')
 
    if (window.location.pathname === "/Member/User/Cookie/index.html") {
        // 饼干管理页面
        on_cookies_manager()
    } else {
        init_check()
 
        $('#h-tool').prepend(
            '<a id="ae-mem-page" href="/Member/User/Index/index.html" title="用户系统" class="h-tool-btn"><i class="uk-icon-home"></i></a>'
        )
        $('#h-tool').append(
            '<a id="ae-switcher-toggle" title="切换饼干" class="h-tool-btn"><i class="uk-icon-paper-plane"></i></a>'
        )
        $('#ae-switcher-toggle').on('click', ()=>show_switch_panel())
        // 处理串样式
        $('.h-threads-item-reply-main').each(threads_resolve)
    }
})();