User:Irukaza/common.js:修订间差异

H萌娘,万物皆可H的百科全书!
跳到导航 跳到搜索
imported>=海豚=
无编辑摘要
imported>=海豚=
(清空页面)
第1行: 第1行:
/* Any JavaScript here will be loaded for all users on edit page load. */
$(function() {
   if (mw.config.get("wgPageName").startsWith("H萌娘讨论:讨论版")) {
     $(".mw-editnotice + .mw-warning-with-logexcerpt").hide();
   }


   var wpSummary = $('[name="wpSummary"]');
   // $(".mw-summary-preset-item a").closest('.oo-ui-fieldLayout-header').width($('#wpSummary').width());
   $(".mw-summary-preset-item a").on("click", function() {
     wpSummary.val(wpSummary.val() + " " + $(this).text());
     wpSummary.focus();
     return false;
   });
   // .wikiEditor-ui-controls 颜色修正
   $('.wikiEditor-ui-controls').css('background-color', $('#content').css('background-color'));
   //编辑提示检查
   if ($(".mw-summary-preset")[0]) {
     $(".CheckNewSectionOn").hide();
   } else {
     $(".CheckNewSectionOff").hide();
     $('.headerInputbox a[href*="preload=Template%3A权限申请%2F"], .headerInputbox a[href*="preload=Template%3A%E6%9D%83%E9%99%90%E7%94%B3%E8%AF%B7%2F"]').attr("target", "_self");
   }
   if ($(".AbusefilterWarningNoHttp")[0]) {
     $("#wpTextbox1").val($("#wpTextbox1").val().replace(/http:\/\/([a-z\d]+\.bilibili\.[a-z\d]+)/ig, "https://$1"));
   }
   // 管理员申请维护组成员人数统计
   var wpTextbox1 = $("#wpTextbox1");
   if (wpTextbox1.val().startsWith("{{subst:权限申请/管理员申请")) {
     mw.loader.using("mw.Api").then(function() {
       var api = new mw.Api();
       api.post({
         action: "query",
         list: "allusers",
         augroup: "sysop",
         auprop: "groups",
         aulimit: "max"
       }).then(function(result) {
         wpTextbox1.val(wpTextbox1.val().replace("<!--自然人管理员数量自动插入点-->", result.query.allusers.filter(function(user) {
           return !user.groups.includes("bot");
         }).length));
       });
       api.post({
         action: "query",
         list: "allusers",
         augroup: "patroller",
         aulimit: "max"
       }).then(function(result) {
         return api.post({
           action: "query",
           list: "users",
           usprop: "groupmemberships",
           ususerids: result.query.allusers.map(function(user) {
             return user.userid;
           })
         });
       }).then(function(result) {
         wpTextbox1.val(wpTextbox1.val().replace("<!--自然人巡查姬数量自动插入点-->", result.query.users.filter(function(user) {
           var groupmemberships = user.groupmemberships.filter(function(groupmembership) {
             return groupmembership.expiry === "infinity";
           }).map(function(groupmembership) {
             return groupmembership.group;
           });
           return (!groupmemberships.includes("bot")) && groupmemberships.includes("patroller");
         }).length - 1)); // 申请人自己是不算入的
       });
     });
   }
   // Customized File Insertion dialog
   // Copyright 2017 The Little Moe New LLC. All rights reserved.
   mw.loader.using(["oojs", "oojs-ui"]).then(function() {
     $("#wpTextbox1").on("wikiEditor-toolbar-doneInitialSections", function() {
       function FileInsertionDialog(config) {
         FileInsertionDialog.super.call(this, config);
       }
       OO.inheritClass(FileInsertionDialog, OO.ui.ProcessDialog);
       // Name
       FileInsertionDialog.static.name = "fileInsertionDialog";
       FileInsertionDialog.static.title = mw.msg("wikieditor-toolbar-tool-file-title");
       FileInsertionDialog.static.actions = [{
         flags: "primary",
         label: mw.msg("wikieditor-toolbar-tool-file-insert"),
         action: "insert"
       }, {
         flags: "safe",
         label: mw.msg("wikieditor-toolbar-tool-file-cancel")
       }];
       // Initialization
       FileInsertionDialog.prototype.initialize = function() {
         FileInsertionDialog.super.prototype.initialize.call(this);
         this.panel = new OO.ui.PanelLayout({
           padded: true,
           expanded: false
         });
         this.fileMetaContent = new OO.ui.FieldsetLayout();
         this.alignmentContent = new OO.ui.FieldsetLayout();
         this.formatContent = new OO.ui.FieldsetLayout();
         this.fileNameInput = new OO.ui.TextInputWidget({
           indicator: "required"
         });
         this.fileNameField = new OO.ui.FieldLayout(this.fileNameInput, {
           label: mw.msg("wikieditor-toolbar-file-target"),
           align: "top"
         });
         this.fileTitleInput = new OO.ui.TextInputWidget();
         this.fileTitleField = new OO.ui.FieldLayout(this.fileTitleInput, {
           label: mw.msg("wikieditor-toolbar-file-caption"),
           align: "top"
         });
         this.sizeInput = new OO.ui.TextInputWidget();
         this.sizeField = new OO.ui.FieldLayout(this.sizeInput, {
           label: mw.msg("wikieditor-toolbar-file-size"),
           align: "top"
         });
         this.fileMetaContent.addItems([this.fileNameField, this.fileTitleField, this.sizeField]);
         var alignOptionDefault = new OO.ui.ButtonOptionWidget({
           data: "default",
           label: mw.msg("wikieditor-toolbar-file-default"),
           title: mw.msg("wikieditor-toolbar-file-default")
         });
         var alignOptionNone = new OO.ui.ButtonOptionWidget({
           data: "none",
           label: mw.msg("wikieditor-toolbar-file-format-none"),
           title: mw.msg("wikieditor-toolbar-file-format-none")
         });
         var magicWords = mw.config.get("wgWikiEditorMagicWords");
         var alignOptionMid = new OO.ui.ButtonOptionWidget({
           data: "center",
           label: magicWords.img_center,
           title: magicWords.img_center
         });
         var alignOptionLeft = new OO.ui.ButtonOptionWidget({
           data: "left",
           label: magicWords.img_left,
           title: magicWords.img_left
         });
         var alignOptionRight = new OO.ui.ButtonOptionWidget({
           data: "right",
           label: magicWords.img_right,
           title: magicWords.img_right
         });
         this.alignmentSelect = new OO.ui.ButtonSelectWidget({
           items: [alignOptionNone, alignOptionDefault, alignOptionMid, alignOptionLeft, alignOptionRight]
         });
         this.alignmentField = new OO.ui.FieldLayout(this.alignmentSelect, {
           label: mw.msg("wikieditor-toolbar-file-float"),
           align: "top"
         });
         this.alignmentContent.addItems([this.alignmentField]);
         var formatOptionThumbnail = new OO.ui.ButtonOptionWidget({
           data: "thumbnail",
           label: magicWords.img_thumbnail,
           title: magicWords.img_thumbnail
         });
         var formatOptionFramed = new OO.ui.ButtonOptionWidget({
           data: "framed",
           label: magicWords.img_framed,
           title: magicWords.img_framed
         });
         var formatOptionFrameless = new OO.ui.ButtonOptionWidget({
           data: "frameless",
           label: magicWords.img_frameless,
           title: magicWords.img_frameless
         });
         var formatOptionNone = new OO.ui.ButtonOptionWidget({
           data: "default",
           label: magicWords.img_none,
           title: magicWords.img_none
         });
         this.formatSelect = new OO.ui.ButtonSelectWidget({
           items: [formatOptionThumbnail, formatOptionFramed, formatOptionFrameless, formatOptionNone]
         });
         this.formatField = new OO.ui.FieldLayout(this.formatSelect, {
           label: mw.msg("wikieditor-toolbar-file-format"),
           align: "top"
         });
         this.formatContent.addItems([this.formatField]);
         this.panel.$element.append(this.fileMetaContent.$element);
         this.panel.$element.append(this.alignmentContent.$element);
         this.panel.$element.append(this.formatContent.$element);
         this.$body.append(this.panel.$element);
         this.fileNameInput.connect(this, {
           change: "onFileNameChange"
         });
       };
       // Specify the dialog height (or don"t to use the automatically generated height).
       FileInsertionDialog.prototype.getBodyHeight = function() {
         return this.panel.$element.outerHeight(true);
       };
       // Name validation
       FileInsertionDialog.prototype.onFileNameChange = function(value) {
         this.actions.setAbilities({
           insert: !!value.length
         });
       };
       // Default state initialization
       FileInsertionDialog.prototype.getSetupProcess = function(data) {
         data = data || {};
         return FileInsertionDialog.super.prototype.getSetupProcess.call(this, data).next(function() {
           this.actions.setAbilities({
             insert: false
           });
           this.fileNameInput.setValue("");
           this.fileTitleInput.setValue("");
           this.sizeInput.setValue("");
           this.alignmentSelect.selectItemByData("default");
           this.formatSelect.selectItemByData("thumbnail");
         }, this);
       };
       // Context setup
       FileInsertionDialog.prototype.setContext = function(context) {
         this.editorContext = context;
       };
       // Specify processes to handle the actions.
       FileInsertionDialog.prototype.getActionProcess = function(action) {
         if (action === "insert") {
           return new OO.ui.Process(function() {
             this.insertImage();
           }, this);
         }
         // Fallback to parent handler
         return FileInsertionDialog.super.prototype.getActionProcess.call(this, action);
       };
       // Handles image insertion.
       FileInsertionDialog.prototype.insertImage = function() {
         if (!this.editorContext) return;
         var fileName, caption, fileFloat, fileFormat, fileSize, fileTitle, options, fileUse, hasPxRgx = /.+px$/,
           magicWordsI18N = mw.config.get("wgWikiEditorMagicWords");
         fileName = this.fileNameInput.getValue();
         caption = this.fileTitleInput.getValue();
         fileSize = this.sizeInput.getValue();
         fileFloat = this.alignmentSelect.getSelectedItem().data;
         fileFormat = this.formatSelect.getSelectedItem().data;
         // Append px to end to size if not already contains it
         if (fileSize !== "" && !hasPxRgx.test(fileSize)) {
           fileSize += "px";
         }
         if (fileName !== "") {
           fileTitle = new mw.Title(fileName);
           // Append file namespace prefix to filename if not already contains it
           if (fileTitle.getNamespaceId() !== 6) {
             fileTitle = new mw.Title(fileName, 6);
           }
           fileName = fileTitle.toText();
         }
         options = [fileSize, fileFormat, fileFloat];
         // Filter empty values
         options = $.grep(options, function(val) {
           return val.length && val !== "default";
         });
         if (caption.length) {
           options.push(caption);
         }
         fileUse = options.length === 0 ? fileName : fileName + "|" + options.join("|");
         $.wikiEditor.modules.toolbar.fn.doAction(this.editorContext, {
           type: "replace",
           options: {
             pre: "[[",
             peri: fileUse,
             post: "]]",
             ownline: true
           }
         });
         this.close();
       };
       // Remove legacy file insertion
       $("#wpTextbox1").wikiEditor("removeFromToolbar", {
         section: "main",
         group: "insert",
         tool: "file"
       });
       $("#wpTextbox1").wikiEditor("addToToolbar", {
         section: "main",
         group: "insert",
         tools: {
           "file-alt": {
             label: mw.msg("wikieditor-toolbar-tool-file-title"),
             type: "button",
             icon: "https://img.moegirl.org/common/3/3e/Insert-file.svg",
             offset: [2, -1438],
             action: {
               type: "callback",
               execute: function(context) {
                 var windowManager = new OO.ui.WindowManager();
                 $("body").append(windowManager.$element);
                 var fileInsertionDialog = new FileInsertionDialog();
                 fileInsertionDialog.setContext(context);
                 windowManager.addWindows([fileInsertionDialog]);
                 windowManager.openWindow(fileInsertionDialog);
               }
             }
           }
         }
       });
     });
   });
});

2020年6月15日 (一) 15:54的版本