사용자:기나ㅏㄴ/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();
  }());