미디어위키:Gadget-HamWiki-HomeCards.js
HamWiki
더 많은 작업
참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.
- 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
- 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
- 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
(function () {
'use strict';
function loadRandomDocument() {
var $box = $('#hamwiki-random-document');
var $button = $('#hamwiki-random-refresh');
if (!$box.length) {
return;
}
$box
.addClass('hamwiki-random-loading')
.text('문서를 불러오는 중입니다...');
$button.addClass('is-loading');
var api = new mw.Api();
api.get({
action: 'query',
list: 'random',
// 일반 문서 네임스페이스만
rnnamespace: 0,
rnlimit: 1,
formatversion: 2
}).done(function (data) {
if (
!data ||
!data.query ||
!data.query.random ||
!data.query.random.length
) {
throw new Error('랜덤 문서를 찾을 수 없습니다.');
}
var page = data.query.random[0];
var title = page.title;
var $link = $('<a>')
.attr('href', mw.util.getUrl(title))
.addClass('hamwiki-random-title')
.text(title);
var $description = $('<div>')
.addClass('hamwiki-random-description')
.text('이 문서는 어떠신가요?');
$box
.empty()
.removeClass('hamwiki-random-loading')
.append($description)
.append($link);
}).fail(function () {
$box
.removeClass('hamwiki-random-loading')
.text('추천 문서를 불러오지 못했습니다.');
}).always(function () {
$button.removeClass('is-loading');
});
}
$(function () {
if (!$('#hamwiki-random-document').length) {
return;
}
loadRandomDocument();
$('#hamwiki-random-refresh').on('click', function (e) {
e.preventDefault();
if ($(this).hasClass('is-loading')) {
return;
}
loadRandomDocument();
});
});
}());