Greasy Fork

8chan Reports Page Enhancer

Enhances the usability and appearance of the 8chan board moderation reports page.

目前为 2025-04-23 提交的版本。查看 最新版本

// ==UserScript==
// @name         8chan Reports Page Enhancer
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Enhances the usability and appearance of the 8chan board moderation reports page.
// @author       Grok
// @match        *://8chan.moe/openReports.js*
// @grant        GM_addStyle
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Inject CSS styles
    GM_addStyle(`
        /* General Layout */
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
            background-color: #f5f6f5;
            color: #333;
            line-height: 1.5;
        }

        .titleWrapper {
            max-width: 1200px;
            margin: 20px auto;
            padding: 0 15px;
        }

        .titleFieldset {
            background: #fff;
            border: 1px solid #ddd;
            border-radius: 8px;
            padding: 20px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.05);
        }

        legend {
            font-size: 1.5em;
            font-weight: 600;
            color: #222;
            padding: 0 10px;
        }

        /* Report Cells */
        #reportDiv {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
            gap: 15px;
            margin-top: 20px;
        }

        .reportCell {
            background: #fff;
            border: 1px solid #e0e0e0;
            border-radius: 6px;
            padding: 15px;
            transition: box-shadow 0.2s;
        }

        .reportCell:hover {
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
        }

        .reportCell label {
            display: block;
            margin-bottom: 8px;
            font-size: 0.95em;
        }

        .boardLabel, .totalLabel, .categoryLabel, .reasonLabel {
            font-weight: 500;
            color: #1a73e8;
        }

        .reasonLabel {
            background: #f1f3f4;
            padding: 4px 8px;
            border-radius: 4px;
            display: inline-block;
        }

        .closureCheckbox {
            margin-right: 8px;
            vertical-align: middle;
        }

        .link {
            color: #d32f2f;
            font-weight: 500;
            text-decoration: none;
            padding: 4px 8px;
            border-radius: 4px;
            transition: background 0.2s;
        }

        .link:hover {
            background: #ffebee;
            text-decoration: none;
        }

        /* Post Content */
        .postingDiv .innerPost {
            background: #fafafa;
            padding: 10px;
            border-radius: 4px;
            margin-top: 10px;
        }

        .labelBoard {
            font-size: 1.1em;
            color: #0288d1;
            margin: 0 0 10px;
        }

        .postInfo {
            font-size: 0.9em;
            color: #555;
        }

        .labelId {
            padding: 2px 6px;
            border-radius: 3px;
            color: #fff;
        }

        .panelIp, .panelASN, .panelBypassId {
            font-size: 0.85em;
            color: #666;
            margin-top: 5px;
            word-break: break-all;
        }

        .divMessage {
            margin-top: 10px;
            font-size: 0.95em;
            color: #333;
            padding: 8px;
            background: #f5f5f5;
            border-radius: 4px;
        }

        .quoteLink {
            color: #388e3c;
            text-decoration: none;
            font-weight: 500;
        }

        .quoteLink:hover {
            text-decoration: underline;
        }

        /* Uploads */
        .panelUploads {
            margin-top: 10px;
        }

        .uploadCell {
            margin-bottom: 10px;
        }

        .imgLink img {
            border-radius: 4px;
            max-width: 150px;
            height: auto;
        }

        .originalNameLink {
            color: #0288d1;
            text-decoration: none;
        }

        .originalNameLink:hover {
            text-decoration: underline;
        }

        /* Forms */
        #filterForm, form[action="/closeReports.js"] {
            background: #f9f9f9;
            padding: 15px;
            border-radius: 6px;
            margin-bottom: 20px;
        }

        #filterForm label, form[action="/closeReports.js"] label {
            display: block;
            margin-bottom: 10px;
            font-weight: 500;
            color: #444;
        }

        #filterCategoriesDiv {
            margin: 10px 0;
        }

        .categoryCheckbox {
            margin-right: 8px;
        }

        input[type="text"], select {
            padding: 8px;
            border: 1px solid #ccc;
            border-radius: 4px;
            font-size: 0.95em;
            width: 200px;
            margin-left: 10px;
        }

        input[type="text"]:focus, select:focus {
            border-color: #1a73e8;
            outline: none;
            box-shadow: 0 0 0 2px rgba(26,115,232,0.2);
        }

        button, #filterSubmitButton, #closeReportsFormButton {
            background: #1a73e8;
            color: #fff;
            border: none;
            padding: 8px 16px;
            border-radius: 4px;
            font-size: 0.95em;
            cursor: pointer;
            transition: background 0.2s;
        }

        button:hover, #filterSubmitButton:hover, #closeReportsFormButton:hover {
            background: #1565c0;
        }

        /* Checkboxes */
        .closeReportsField, .deletionCheckBox {
            margin-right: 8px;
            vertical-align: middle;
        }

        /* Navigation */
        .navHeader {
            background: #fff;
            border-bottom: 1px solid #ddd;
            padding: 10px 20px;
            position: sticky;
            top: 0;
            z-index: 1000;
        }

        .navLinkSpan a {
            color: #0288d1;
            text-decoration: none;
            margin: 0 5px;
        }

        .navLinkSpan a:hover {
            text-decoration: underline;
        }

        /* Responsive Adjustments */
        @media (max-width: 768px) {
            #reportDiv {
                grid-template-columns: 1fr;
            }

            input[type="text"], select {
                width: 100%;
            }
        }
    `);
})();