도움말:사용자 자바스크립트: 두 판 사이의 차이

(→‎사용자 활동 상태를 알려주는 스크립트: 비활동 사용자에게 나타나지 않는 오류 정정)
(→‎사용자 활동 상태를 알려주는 스크립트: class 속성자 주기, 설명문 다듬기 이외)
340번째 줄: 340번째 줄:
// 소스 원본 : 사용자:Utolee90/status.js
// 소스 원본 : 사용자:Utolee90/status.js
// 사용 방법 : 다음 소스코드를 "특수:내사용자문서/common.js" 에 복사하시면 사용자 문서의 주인의 현재 편집 상태 또는 차단 여부를 확인하실 수 있습니다.  
// 사용 방법 : 다음 소스코드를 "특수:내사용자문서/common.js" 에 복사하시면 사용자 문서의 주인의 현재 편집 상태 또는 차단 여부를 확인하실 수 있습니다.  
// mw.loader.load('//librewiki.net/index.php?title=사용자:Utolee90/status.js&action=raw&ctype=text/javascript');


// API로 사용자가
// 사용 방법 : 자산의 사용자 자바스크립트 문서에 주석기호 '//'를 빼고 아래 문구를 입력하시면 사용가능합니다.
// mw.loader.load('//librewiki.net/index.php?title=사용자:Utolee90/status.js&action=raw&ctype=text/javascript');
let username = mw.config.get('wgTitle').split("/")[0];
let username = mw.config.get('wgTitle').split("/")[0];
var params = {
var params = {
364번째 줄: 362번째 줄:
         var bkt = (bk[0].expiry == 'infinity')? 'infinity' :new Date(bk[0].expiry);
         var bkt = (bk[0].expiry == 'infinity')? 'infinity' :new Date(bk[0].expiry);
         var bktstring = (bkt == 'infinity')? '무기한': (bkt.getFullYear()+'년 '+(bkt.getMonth()+1)+'월 '+(bkt.getDate())+'일')
         var bktstring = (bkt == 'infinity')? '무기한': (bkt.getFullYear()+'년 '+(bkt.getMonth()+1)+'월 '+(bkt.getDate())+'일')
         $('#mw-content-text').prepend('<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Stop_x_nuvola.svg/40px-Stop_x_nuvola.svg.png" width=40 /> <span style="font-size:5">차단된 사용자&nbsp;&nbsp;</span> <small>차단기한 : '+bktstring);
         $('#mw-content-text').prepend('<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);
         }
         }
         else if (rc.length == 0){ // 최근 바뀜 폭록이 없을 때
         else if (rc.length == 0){ // 최근 바뀜 폭록이 없을 때
         $('#mw-content-text').prepend('<img src="https://image.librewiki.net/f/f9/Ledibug2.png" width=40 /> <span style="font-size:5">3개월간 활동하지 않는 사용자.</span>');
         $('#mw-content-text').prepend('<img src="https://image.librewiki.net/f/f9/Ledibug2.png" width=40 /> <span class="status-text">3개월간 활동하지 않는 사용자.</span>');
}
}
         else {
         else {
374번째 줄: 372번째 줄:
         var now = new Date().getTime(); //현재시간 getTime
         var now = new Date().getTime(); //현재시간 getTime
         if (now-at.getTime() <=3600*1000){ // 마지막 편집이 최근 1시간 이후.
         if (now-at.getTime() <=3600*1000){ // 마지막 편집이 최근 1시간 이후.
           $('#mw-content-text').prepend('<img src="https://image.librewiki.net/4/47/Ledibug-Louis-Fact.png" width=40 /> <span style="font-size:5">편집중&nbsp;&nbsp;</span> <small>마지막 편집 시간 :'+' '+at.getHours()+'시 '+at.getMinutes()+'분</small>');
           $('#mw-content-text').prepend('<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시간 이전  
         else if(now-at.getTime()<=24*3600*1000) { // 마지막 편집이 최근 24시간 이전  
         $('#mw-content-text').prepend('<img src="https://image.librewiki.net/8/8b/Ledibug-Lucy-False.png" width=40 /> <span style="font-size:5">휴식중&nbsp;&nbsp;</span><small>마지막 편집 시간 :'+at.getHours()+'시 '+at.getMinutes()+'분</small>');
         $('#mw-content-text').prepend('<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 {  
         else {  
       $('#mw-content-text').prepend('<img src="https://image.librewiki.net/8/8b/Ledibug-Lucy-False.png" width=40 /> <span style="font-size:5">휴식중&nbsp;&nbsp;</span> <small>마지막 편집 날짜 :&nbsp;'+(at.getMonth()+1)+'월 '+(at.getDate())+'일</small>');
       $('#mw-content-text').prepend('<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>');
       }
       }
}  
}  

2020년 10월 24일 (토) 21:32 판

리브레 위키를 비롯한 미디어위키 기반의 위키에서는 사용자 환경설정에서 특정한 기능을 제공하는 사용자 고유의 자바스크립트를 삽입하는 기능을 지원하고 있습니다. 이 문서는 이러한 자바스크립트를 사용하는 방법과 그 예제에 대해 올리는 곳입니다.

사용 방법

특:내사용자문서/common.js에 자신이 원하는 기능을 제공하는 자바스크립트 코드를 넣으면 사용할 수 있습니다.

특정 스킨에만 적용되게 사용자 자바스크립트를 적용할 수도 있습니다. "사용자:(계정 필요)/(스킨 식별자, 기본 스킨의 경우 liberty).js" 문서에 코드를 작성하면 됩니다.

이미 있는 스크립트 파일을 사용하실 때에는 mw.loader.load('//(자바스크립트의 주소)');를 입력해주시면 됩니다. 단, 미디어위키 문서를 불러오실 때는 ?action=raw&ctype=text/javascript를 주소 뒤에 붙여주셔야 작동합니다.

미디어위키 내부 인터페이스

미디어위키는 기본적인 DOM 자바스크립트와 JQuery 문법을 기본적으로 제공합니다. 그 외에도 미디어위키에서는 문서 자체의 정보를 긁어올 수 있는 mw 오브젝트를 포함해서 여러 오브젝트를 지원하고 있습니다.

예시 - mw.config.get('(속성)')을 통해 지금 읽고 있는 문서의 정보를 긁어오실 수 있습니다. 아니면 그냥 아래 속성명을 직접 입력해도 확인할 수 있지만 추천문법은 아닙니다. 속성 관련 표

미디어위키 전역 내부 속성
속성 설명
skin 현재 사용하고 있는 스킨 이름을 확인할 수 있습니다.
wgArticlePath 현재 위키의 문서 경로명을 확인할 수 있습니다. 리브레 위키에서는 "wiki/$1"형식으로 출력됩니다.
wgNamespaceIds 현재 위키가 사용하고 있는 이름공간의 명칭과 번호를 오브젝트 형식으로 확인할 수 있습니다.
미디어위키 각 문서별 속성
속성 설명
wgAction 현재 미디어위키 문서에서 사용하는 동작을 확인합니다. 문서를 볼 때는 'view', 문서를 편집할 때는 'edit'이 출력됩니다.
wgArticleId 현재 페이지의 id값을 출력합니다.
wgCategories 현재 문서의 분류 목록을 출력합니다.
wgNamespaceNumber 현재 문서의 이름공간 번호를 출력합니다.
wgPageName 이름공간 포함한 전체 문서명을 출력합니다.
wgRestrictionEdit 편집이 제한된 문서의 경우 편집 가능한 권한을 출력합니다.
wgRestrictionMove 이동이 제한된 문서의 경우 이동 가능한 권한을 출력합니다.
wgRevisionId 현재 문서의 최신판 ID를 출력합니다.
wgTitle 이름공간을 제외한 문서명을 출력합니다.
사용자 관련 속성
속성 설명
wgUserEditCount 편집횟수를 기록합니다.
wgUserGroups 사용자가 소속된 그룹을 보여줍니다.
wgUserName 사용자 계정명을 출력합니다.

유용한 외부 자바스크립트

외부 스크립트를 가져다 쓸 수 있습니다. 다만, 외부에서 자바스크립트를 불러오는 것은 해당 내용이 변경되었을 때 부정적인 영향[1]을 받으실 수 있기 때문에 주의하실 필요가 있습니다.

주석[2]을 이용하면 향후 유지보수가 편해질 수 있습니다.

더 많은 정보는 Wikipedia:Wikipedia:User scripts를 참조하시면 됩니다.

/* 토론 문서에서 편집 시에 서명하지 않을 경우 경고 메시지를 출력하는 스크립트입니다. 한위백 IRTC1015님이 작성 */
mw.loader.load('//ko.wikipedia.org/w/index.php?title=User:IRTC1015/qSig.js&action=raw&ctype=text/javascript');

예제

코드가 상당히 길기에 {{숨김 시작}} 틀을 이용해서 내용을 숨겨주시기 바랍니다. 사용하실 때에는 상자 안에 있는 코드 전체를 복사한 뒤에 사용자 자바스크립트에 붙여넣기 하시면 적용이 됩니다.

문서 위/아래 버튼

화면 왼쪽 아래에 맨 위로 올리거나 맨 아래로 내리는 버튼을 삽입할 수 있습니다.

Ambox warning pn.svg {{숨김 시작}}이나 {{숨기기}} 등의 기능을 사용할 경우 숨긴 내용을 풀 경우 맨 아래로 내리는 기능이 올바르게 작동하지 않을 수 있습니다.

Vector 스킨에서 우측 최근 바뀐 문서 보여주는 상자 만들기

특수:내사용자문서/vector.js에 아래 코드를 삽입할 경우 Vector(벡터) 스킨을 사용할 때 Liberty 스킨의 최근 바뀐 문서를 한눈에 보여주는 상자를 삽입하실 수 있습니다. 현재 디자인이나 코딩 최적화가 부족한 점 양해해주시기 바랍니다. 참조. Liberty 스킨의 최근 바뀜 상자를 만들어주는 live-recent.js 코드를 이용해서 재구성했습니다.

Ambox warning pn.svg 원인 미상의 오류로 인해 특수:내사용자문서/vector.js에 직접 아래 소스를 붙여놓으면 자바스크립트가 제대로 작동하지 않습니다. 하위 문서에 아래 소스를 붙여넣은 뒤 mw.loader.load 명령어를 붙여넣거나 아니면 아래 코드를 특수:내사용자문서/vector.js에 붙여넣으시면 됩니다. 그러면 벡터 스킨을 기본 스킨으로 지정할 경우 최근에 편집한 문서를 보여주는 상자를 띄울 수 있습니다.

mw.loader.load('https://librewiki.net/index.php?title=사용자:Utolee90/recentchange.js&action=raw&ctype=text/javascript');

편집 요약창 아래 편집요약 상용구 입력 버튼 추가

사용자 활동 상태를 알려주는 스크립트

아래의 코드 혹은

mw.loader.load('//librewiki.net/index.php?title=사용자:Utolee90/status.js&action=raw&ctype=text/javascript');

특수:내사용자문서/common.js에 입력하시면 div 태그 안에 사용자 문서의 주인의 편집상태를 확인할 수 있습니다.

각주

  1. 계정이 탈취되거나 위키를 정상적으로 이용할 수 없게 되는 등
  2. /**/ 사이에 내용을 쓰면 사이의 내용이 주석 처리 되고, //를 사용하면 해당 줄에서 이후 모든 텍스트가 주석처리 됩니다.