미디어위키:Gadget-quickpage.js

삼쩌모 (토론 | 기여)님의 2026년 1월 24일 (토) 18:15 판

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
mw.loader.using(
  ['oojs-ui-core', 'oojs-ui.styles.icons-editing'],
  function () {

    /* ────────── CSS (1회 삽입) ────────── */
if (!document.getElementById('qp-style')) {
  var style = document.createElement('style');
  style.id = 'qp-style';
  style.textContent = `
.qp-card {
  padding:16px;
  border:1px solid light-dark(#ccc,#555);
  border-radius:8px;
  background:light-dark(#f9f9f9,#222);
}
  `;
  document.head.appendChild(style);
}

    /* ────────── UI 주입 ────────── */
    mw.hook('wikipage.content').add(function ($content) {
      $content.find('.quickpage-container').each(function () {
        var $box = $(this);
        if ($box.children().length) return;

        var input = new OO.ui.TextInputWidget({
          placeholder: '문서 제목 입력…'
        });

        var button = new OO.ui.ButtonWidget({
          label: '문서 생성',
          icon: 'edit',
          flags: ['progressive']
        });

        var field = new OO.ui.ActionFieldLayout(
          input, button, { align: 'top' }
        );

        $box.append(field.$element);

        function go() {
          var title = input.getValue().trim();
          if (!title) return;

          var encoded = mw.util.wikiUrlencode(title);

          // MediaWiki는 존재 여부와 상관없이 edit로 가면
          // 없으면 생성, 있으면 편집
          var url = mw.util.getUrl(encoded, { action: 'edit' });
          window.location.href = url;
        }

        button.on('click', go);
        input.on('enter', go);
      });
    });
  }
);