사용자:기나ㅏㄴ/rcsidebar-modern.js
< 사용자:기나ㅏㄴ
참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다. 구글 크롬, 파이어폭스, 마이크로소프트 엣지, 사파리: ⇧ Shift 키를 누른 채 "새로 고침" 버튼을 클릭하십시오. 더 자세한 정보를 보려면 위키백과:캐시 무시하기 항목을 참고하십시오.
(function() {
const baseURI = 'https://ko.wikipedia.org/w/api.php?action=query&list=recentchanges&rcprop=title|timestamp|user&format=json&origin=*';
const refreshInterval = 2000;
var recentChangesURI = baseURI + '&rctype=edit|new|log';
if (window.rc_sidebar_modern) {
const config = window.rc_sidebar_modern;
if (config.rctype && Array.isArray(config.rctype) && config.rctype.length > 0) {
recentChangesURI = baseURI + '&rctype=' + config.rctype.join('|');
}
if (config.rcshow && Array.isArray(config.rcshow) && config.rcshow.length > 0) {
recentChangesURI += '&rcshow=' + config.rcshow.join('|');
}
if (Number.isInteger(config.rclimit)) {
recentChangesURI += '&rclimit=' + config.rclimit;
}
if (config.rcnamespace && Array.isArray(config.rcnamespace) && config.rcnamespace.length > 0) {
recentChangesURI += '&rcnamespace=' + config.rcnamespace.join('|');
}
}
var $html;
$html = $("<div class='portlet mw-portlet mw-portlet-test' id='p-test' role='navigation'></div>");
$html.append("<h3>최근 바뀜 사이드바</h3>");
$html.append("<div class='pBody'><ul></ul></div>");
$("#p-tb").before($html);
function updateRecentChanges() {
$.getJSON(recentChangesURI, function(data) {
var recentChanges = data.query.recentchanges;
var $ul = $html.find("ul");
$ul.empty(); // 기존 목록 비움
// 최근 변경 사항 추가
recentChanges.forEach(function(change) {
var targetPage = change.title;
var pageUrl = 'https://ko.wikipedia.org/wiki/' + encodeURIComponent(targetPage);
var contriUrl = 'https://ko.wikipedia.org/wiki/Special:Contributions/' + encodeURIComponent(change.user);
var timestamp = new Date(change.timestamp);
var formattedTime = timestamp.getHours() + ':' + ('0' + timestamp.getMinutes()).slice(-2);
var info = `
<li>
<a href="${pageUrl}">${targetPage}</a>
<br><small><a href="${contriUrl}">${change.user}</a> - (${formattedTime})</small>
</li>`;
$ul.append(info);
});
}).fail(function() {
console.error('최근 변경 사항을 가져오지 못했습니다.');
$html.find("ul").html('<li>최근 변경 사항을 가져오지 못했습니다.</li>');
});
}
// 갱신 주기
setInterval(updateRecentChanges, refreshInterval);
//최초 실행을 위함
updateRecentChanges();
}());