コンテンツにスキップ

利用者:JuthaDDA/SpecialLinkGenerator.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

/******/ (function() { // webpackBootstrap
/******/ 	"use strict";
var __webpack_exports__ = {};


function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }

var SpecialLinkGeneratorCore = /*#__PURE__*/function () {
  function SpecialLinkGeneratorCore() {
    _classCallCheck(this, SpecialLinkGeneratorCore);

    this.curRevisionId = mw.config.get('wgCurRevisionId');
    this.diffOldId = mw.config.get('wgDiffOldId');
    this.diffNewId = mw.config.get('wgDiffNewId');
    this.pageName = mw.config.get('wgPageName');
    this.articleId = mw.config.get('wgArticleId');
    this.language = mw.config.get('wgContentLanguage');
  }
  /**
   * @param redirectType
   * @param text Write null for non-piped link.
   * @return ex. [[Special:Redirect/page/xxx|ID:xxx]]
   */


  _createClass(SpecialLinkGeneratorCore, [{
    key: "generateRedirect",
    value: function generateRedirect(redirectType) {
      var _this = this;

      var text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'auto';

      var generateText = function generateText() {
        return redirectType === 'page' ? "ID:".concat(_this.articleId) : null;
      };

      return this.generateLinkToSpecialPage('Redirect', redirectType, redirectType === 'page' ? this.articleId.toString() : null, text === 'auto' ? generateText() : text);
    }
    /**
     * @param text
     * @return
     */

  }, {
    key: "generatePermalink",
    value: function generatePermalink() {
      var _this2 = this;

      var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'auto';

      var generateText = function generateText() {
        return text === 'pageName' ? _this2.pageName : "\u56FA\u5B9A\u30EA\u30F3\u30AF:".concat(_this2.curRevisionId);
      };

      return this.generateLinkToSpecialPage('Permalink', this.curRevisionId.toString(), null, text === 'auto' ? "\u56FA\u5B9A\u30EA\u30F3\u30AF:".concat(this.curRevisionId) : text === 'pageName' ? this.pageName : text);
    }
  }, {
    key: "generateDiffLink",
    value: function generateDiffLink() {
      var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'auto';
      var diffType = arguments.length > 1 ? arguments[1] : undefined;
      var diffOldId = this.diffOldId,
          diffNewId = this.diffNewId,
          curRevisionId = this.curRevisionId;
      var diffId1 = (diffOldId || curRevisionId).toString();
      var diffId2 = diffType === 'cur' || diffType === 'next' ? diffType : diffType === 'prev' ? '' : diffNewId ? diffNewId.toString() : null;
      return this.generateLinkToSpecialPage('Diff', diffId1, diffId2, text === 'auto' ? "\u5DEE\u5206:".concat(diffId1) + diffType === 'cur' ? '/最新' : diffType === 'next' ? '/次版' : "/".concat(diffId2) : 'text');
    }
  }, {
    key: "generateLinkToSpecialPage",
    value: function generateLinkToSpecialPage(pageName, dir1, dir2, text) {
      return ['[[', this.language === 'ja' ? '' : ":".concat(this.language, ":"), 'Special:', pageName, dir1 ? "/".concat(dir1) : '', dir2 ? "/".concat(dir2) : '', text ? "|".concat(text) : '', ']]'].join('');
    }
  }]);

  return SpecialLinkGeneratorCore;
}();

var SpecialLinkGeneratorUI = /*#__PURE__*/function () {
  function SpecialLinkGeneratorUI() {
    _classCallCheck(this, SpecialLinkGeneratorUI);

    this.generatorCore = new SpecialLinkGeneratorCore();
  }

  _createClass(SpecialLinkGeneratorUI, [{
    key: "addPortletLink",
    value: function addPortletLink() {
      var portletlink = mw.util.addPortletLink('p-cactions', '#', '特別ページへのリンクを生成する', 'ca-special-link-generator');
      portletlink.addEventListener('click', this.generateLinks.bind(this));
    }
  }, {
    key: "generateLinks",
    value: function generateLinks() {
      var _document$querySelect;

      console.log(this);
      var uList = document.createElement('ul');
      uList.classList.add('spacial-link-generator__list');
      var div = document.createElement('div');
      div.classList.add('special-link__container');
      div.appendChild(uList);
      [this.generatorCore.generatePermalink(), this.generatorCore.generateRedirect('page'), this.generatorCore.generateDiffLink(), "".concat(this.generatorCore.generatePermalink('pageName'), "\u3088\u308A\u8EE2\u8A18")].forEach(function (specialLink) {
        if (!specialLink) {
          return;
        }

        var codeElement = document.createElement('code');
        codeElement.innerText = specialLink;
        var button = document.createElement('button');
        button.classList.add('special-link-generator__button--copy');
        button.appendChild(codeElement);
        button.addEventListener('click', function () {
          var _navigator;

          if ((_navigator = navigator) !== null && _navigator !== void 0 && _navigator.clipboard) {
            navigator.clipboard.writeText(specialLink);
            return;
          } // @ts-ignore


          window.clipboardData.setData('Text', specialLink);
        });
        var listItem = document.createElement('li');
        listItem.classList.add('special-link-generator__list-item');
        listItem.appendChild(button);
        uList.appendChild(listItem);
      });
      (_document$querySelect = document.querySelector('#contentSub')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.appendChild(div);
    }
  }]);

  return SpecialLinkGeneratorUI;
}();

var specialLinkGeneratorUI = new SpecialLinkGeneratorUI();
specialLinkGeneratorUI.addPortletLink();
/******/ })()
;
//# sourceMappingURL=SpecialLinkGenerator.js.map