사용자:낙엽1124/스크립트/포크 프로젝트 원클릭 이동.js

최근 편집: 2022년 4월 16일 (토) 10:05

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

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: Ctrl-F5를 입력.
(function () {
  function onClick() {
    mw.notify('이동 중...');

    var oldTitle = mw.config.get('wgPageName').replace(/_/g, ' ');
    var newTitle = oldTitle.replace('페미위키:포크 프로젝트/리브레 위키/', '');
    var params = {
        action: 'move',
        from: oldTitle,
        to: newTitle,
        movetalk: '1',
        noredirect: '1',
        format: 'json'
      },
      api = new mw.Api();

    api
      .postWithToken('csrf', params)
      .done(function (data) {
        mw.notify('성공했습니다. ' + newTitle + ' 문서로 이동합니다.', {
          type: 'success'
        });
        window.location = mw.config
          .get('wgArticlePath')
          .replace('$1', newTitle);
      })
      .fail(function (data) {
        switch (data) {
          case 'articleexists':
            mw.notify(
              '실패했습니다. (' + newTitle + ' 문서가 이미 존재합니다)',
              { type: 'error' }
            );
            break;
          case 'missingtitle':
            mw.notify(
              '실패했습니다. (' + oldTitle + ' 문서는 이미 이동되었습니다)',
              { type: 'error' }
            );
            break;
          default:
            mw.notify('실패했습니다. (알 수 없는 오류: ' + data + ')', {
              type: 'error'
            });
            console.log(params);
        }
      });
  }

  if (
    mw.config
      .get('wgPageName')
      .startsWith('페미위키:포크_프로젝트/리브레_위키/') &&
    mw.config.get('wgArticleId')
  ) {
    var link = document.createElement('a');
    link.innerHTML = '<span style="color:red;">여기를 클릭하세요</span>';
    link.addEventListener('click', onClick);
    document.body.appendChild(link);

    $(
      mw.util.addPortletLink(
        /*portletId*/ 'p-cactions',
        /*href*/ '#',
        /*text*/ '원클릭 이동',
        /*id*/ 'p-oneclickmove',
        /*tooltip*/ '이 포크를 일반 이름공간 아래로 이동합니다.',
        /*accesskey*/ null,
        /*nextnode*/ '#ca-move'
      )
    ).on('click', onClick);
  }
})();