소도구:rc-lazy-load.js

최근 편집: 2022년 12월 25일 (일) 10:29
// <nowiki>
(function () {
  'use strict';

  function init() {
    // 만일 개선된 필터를 사용하고 있지 않다면 아무것도 하지 않습니다.
    if (mw.user.options.get('rcenhancedfilters-disable') == 1) return;

    // 바뀐글 링크를 limit가 0인 링크로 바꿉니다.
    $('#site-navigation .changes a').attr(
      'href',
      $('#site-navigation .changes a').attr('href') + '?limit=0'
    );

    if (
      mw.config.get('wgCanonicalSpecialPageName') == 'Recentchanges' &&
      new URLSearchParams(window.location.search).get('limit') === '0'
    ) {
      // "주어진 기간 동안에 이 조건들에 맞는 바뀜이 없습니다." 메시지를 안 보여줍니다.
      var css = document.createElement('style');
      css.type = 'text/css';
      css.innerHTML =
        '.mw-rcfilters-ui-changesListWrapperWidget-results-noresult { display: none; }';
      document.body.appendChild(css);

      // 최근 바뀜 필터가 초기화된 다음
      mw.hook('structuredChangeFilters.ui.initialized').add(function () {
        var limitOption = mw.user.options.get('rclimit'),
          limitButtonIndex = 1;

        if (limitOption > 500) {
          limitButtonIndex = 5;
        } else if (limitOption > 250) {
          // limitOption = 500;
          limitButtonIndex = 4;
        } else if (limitOption > 100) {
          // limitOption = 250;
          limitButtonIndex = 3;
        } else if (limitOption > 50) {
          // limitOption = 100;
          limitButtonIndex = 2;
        } else {
          // limitOption = 50;
          limitButtonIndex = 1;
        }

        // limit를 50으로 변경하는 버튼
        var btn = $(
          '.mw-rcfilters-ui-changesLimitPopupWidget .oo-ui-buttonSelectWidget a'
        ).eq(limitButtonIndex);

        // 버튼을 누르는 동작을 흉내냅니다. 즉 limit를 50으로 다시 설정합니다.
        btn.trigger(
          jQuery.Event('mousedown', { which: OO.ui.MouseButtons.LEFT })
        );
        btn[0].dispatchEvent(new MouseEvent('mouseup'));
      });
    }
  }

  $(init);
})();
// </nowiki>