Greasy Fork

Greasy Fork is available in English.

Popmundo Forum Post Timestamp

The script run only on forms pages and show timestamps of messages

当前为 2022-02-17 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Popmundo Forum Post Timestamp
// @description  The script run only on forms pages and show timestamps of messages

// @author       Criyessei
// @version      1.0.0

// @include      /^https?://\d+.popmundo.com/Forum/Popmundo.aspx/Thread/*/

// @grant        unsafeWindow
// @require      https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js

// @namespace http://greasyfork.icu/users/805141
// ==/UserScript==

/*globals moment*/

let $ = unsafeWindow.jQuery;
let displayPreference = {
    1: "left",
    2: "onTimeText"
}[2];

(async function() {
    'use strict';

    await sleep(100);

    let messages = $('#ppm-content >div.marginWrapper >.tb:has(>.tbfblr)');
    let timeText2Date = timeText=>{
        let {groups:{day, month, year, hour, minute}} = timeText.trim().match(/(?<day>\d{1,2})\.(?<month>\d{1,2})\.(?<year>\d{4}),\s(?<hour>\d{1,2}):(?<minute>\d{1,2})/);
        return new Date(year, month-1, day, hour, minute);
    }

    for(let i=0, len=messages.length; i<len; i++){
        let message = messages.eq(i);

        // 1
        let p1 = message.find('>.tbc >div >p.em');
        if(p1.length){
            let timeEl1 = p1.contents().last()[0];
            let label1 = moment(timeText2Date(timeEl1.textContent)).fromNow();
            p1.append(` <span style="font-family:monospace; font-size:12px; vertical-allign:middle; color:maroon; white-space:nowrap;">(${label1})</span>`);
        }

        // 2
        let p2 = message.find('>.tbfblr p:first');
        let timeEl2 = p2.contents().last()[0];
        let label2 = moment(timeText2Date(timeEl2.textContent)).fromNow();

        //DISPLAY
        if(displayPreference == "left"){
            let span = $(`<span style=" position: absolute; top: 0; font-size:11px; color:maroon; writing-mode: vertical-rl; /* text-orientation: upright; */ /* z-index: 2; */ ">${label2}</span>`).appendTo(message);
            message.css({'overflow':'unset', 'position':'relative'});
            console.log(message.find('>div:first').height()+" - "+span.height());
            span.css('top', Math.max(3, parseInt((message.find('>div:first').height()-span.height())/2)))
                .css('left', -13-(span.width()-13.6));
        }
        else if(displayPreference == "onTimeText"){
            p2.append(` <span style="font-family:monospace; font-size:12px; vertical-allign:middle; color:maroon; white-space:nowrap;">(${label2})</span>`);
        }
    }


})();

function sleep(ms=1e3){
    return new Promise(res=> setTimeout(()=>res(), ms));
}