사용자:하늘/userinfo.js

< 사용자:하늘
하늘 (토론 | 기여)님의 2021년 9월 19일 (일) 09:00 판 (수정하다보니 GPL 라이선스 부분이 지워짐)

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: Ctrl-F5를 입력.
// 사용 방법 : 자산의 사용자 자바스크립트 문서에 주석기호 '//'를 빼고 아래 문구를 입력하시면 사용가능합니다.
// mw.loader.load('//librewiki.net/index.php?title=사용자:Cerulean/userinfo.js&action=raw&ctype=text/javascript');

// Userinfo.js by librewiki [[User:cerulean]]

//원저작자 : [[사용자:Utolee90]]

//BY-SA-3.0 unported

var doc = document;
var wiki_username = mw.config.get('wgTitle').split("/")[0];
var params = {
    action: 'query',
    list: ['blocks', 'recentchanges', 'users'],
    utf8: 1,
    bklimit: '1',
    rclimit: '1',
    bkusers: wiki_username,
    rcuser: wiki_username,
    ususers: wiki_username,
    format: 'json',
    usprop: 'editcount',
},
    api = new mw.Api(); // api action=query

api.get(params).done(function (data) {
    var bk = data.query.blocks; // 차단 목록
    var rc = data.query.recentchanges; //최근 바뀜 목록
    var editcount = data.query.users[0].editcount; //editcount
    var div = doc.createElement('div');
    div.id = "user-status-infos";
    doc.querySelector('.title').appendChild(div);
    if (mw.config.get('wgNamespaceNumber') == 2) {
        if (bk.length != 0) { // 차단 목록이 존재할 때...
            var bkt = (bk[0].expiry === 'infinity') ? 'infinity' : new Date(bk[0].expiry);
            var bktstring = (bkt === 'infinity') ? '무기한' : (bkt.getFullYear() + '년 ' + (bkt.getMonth() + 1) + '월 ' + (bkt.getDate()) + '일');
            div.innerHTML = '<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Stop_x_nuvola.svg/40px-Stop_x_nuvola.svg.png" width=40 /> <span class="status-text">차단된 사용자&nbsp;&nbsp;</span> <small>차단기한 : ' + bktstring + '</small>';
        }
        else if (rc.length == 0) { // 최근 바뀜 목록이 없을 때
            div.innerHTML = '<img src="https://image.librewiki.net/f/f9/Ledibug2.png" width=40 /> <span class="status-text">3개월간 활동하지 않는 사용자.</span>';
        }
        else {
            var x = rc[0].timestamp; // 마지막 편집 시간 확인
            var at = new Date(x); //시간 데이터 추출
            var now = new Date().getTime(); //현재시간 getTime
            if (now - at.getTime() <= 3600 * 1000) { // 마지막 편집이 최근 1시간 이후.
                div.innerHTML = '<img src="https://image.librewiki.net/4/47/Ledibug-Louis-Fact.png" width=40 /> <span class="status-text">편집중&nbsp;&nbsp;</span> <small>마지막 편집 시간 :' + ' ' + at.getHours() + '시 ' + at.getMinutes() + '분</small>';
            }
            else if (now - at.getTime() <= 24 * 3600 * 1000) { // 마지막 편집이 최근 24시간 이전 
                div.innerHTML = '<img src="https://image.librewiki.net/8/8b/Ledibug-Lucy-False.png" width=40 /> <span class="status-text">휴식중&nbsp;&nbsp;</span><small>마지막 편집 시간 :' + at.getHours() + '시 ' + at.getMinutes() + '분</small>';
            }
            else {
                div.innerHTML = '<img src="https://image.librewiki.net/8/8b/Ledibug-Lucy-False.png" width=40 /> <span class="status-text">휴식중&nbsp;&nbsp;</span> <small>마지막 편집 날짜 :&nbsp;' + (at.getMonth() + 1) + '월 ' + (at.getDate()) + '일</small>';
            }
        }
        var editcount = '' + editcount + '회';
        var span = doc.createElement('span');
        span.className = 'user-edit-counter';
        span.style.cssText = '';
        span.innerHTML = editcount;
        doc.querySelector('#user-status-infos').appendChild(span);
    }
});
//////////////////////////////////////