미디어위키:Gadget-quickpage.js

삼쩌모 (토론 | 기여)님의 2026년 1월 24일 (토) 18:01 판 (새 문서: mw.loader.using( ['oojs-ui-core', 'oojs-ui.styles.icons-editing'], function () { ────────── CSS (1회 삽입) ──────────: if (!document.getElementById('qp-style')) { mw.util.addCSS(` .qp-card { padding:16px; border:1px solid light-dark(#ccc,#555); border-radius:8px; background:light-dark(#f9f9f9,#222); } `).id = 'qp-style'; } /* ────────── UI 주입 ────────...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

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

  • 파이어폭스 / 사파리: 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')) {
      mw.util.addCSS(`
.qp-card {
  padding:16px;
  border:1px solid light-dark(#ccc,#555);
  border-radius:8px;
  background:light-dark(#f9f9f9,#222);
}
      `).id = 'qp-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);
      });
    });
  }
);