MediaWiki:Gadget-LoginToEdit.js
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
- Opera:按 Ctrl-F5。
/**
* SPDX-License-Identifier: CC-BY-SA-4.0
* _addText: '{{Gadget Header|license=CC-BY-SA-4.0}}'
*
* @source {@link https://git.qiuwen.net.cn/InterfaceAdmin/QiuwenGadgets/src/branch/master/src/LoginToEdit}
* @license CC-BY-SA-4.0 {@link https://www.qiuwenbaike.cn/wiki/H:CC-BY-SA-4.0}
*/
/**
* +------------------------------------------------------------+
* | === WARNING: GLOBAL GADGET FILE === |
* +------------------------------------------------------------+
* | All changes should be made in the repository, |
* | otherwise they will be lost. |
* +------------------------------------------------------------+
* | Changes to this page may affect many users. |
* | Please discuss changes by opening an issue before editing. |
* +------------------------------------------------------------+
*/
/* <nowiki> */
(() => {
"use strict";
// dist/LoginToEdit/LoginToEdit.js
//! src/LoginToEdit/LoginToEdit.ts
var import_ext_gadget2 = require("ext.gadget.Util");
//! src/AjaxLogin/options.json
var loginElementSelector = 'a:has(.ajaxlogin-mount-point),#pt-login>a,.vector-user-menu-login>a,#user-tools>a[href*="Special"],.mainpage-top-menu>li:nth-child(2) a';
//! src/LoginToEdit/modules/i18n.ts
var import_ext_gadget = require("ext.gadget.i18n");
var getI18nMessages = () => {
return {
Cancel: (0, import_ext_gadget.localize)({
en: "Cancel",
ja: "キャンセル",
"zh-hans": "暂不登录账号",
"zh-hant": "暫不登入賬號"
}),
Edit: (0, import_ext_gadget.localize)({
en: "Edit",
ja: "編集",
"zh-hans": "编辑",
"zh-hant": "編輯"
}),
Login: (0, import_ext_gadget.localize)({
en: "Login",
ja: "ログイン",
"zh-hans": "登录已有账号",
"zh-hant": "登入已有賬號"
}),
Register: (0, import_ext_gadget.localize)({
en: "Register",
ja: "アカウントを作成",
"zh-hans": "注册新的账号",
"zh-hant": "註冊新的賬號"
}),
DialogTitle: (0, import_ext_gadget.localize)({
en: "Welcome to Zhongyi Baike!",
ja: "中醫百科へようこそ!",
"zh-hans": "欢迎来到中医百科!",
"zh-hant": "歡迎來到中醫百科!"
}),
DialogMessage: (0, import_ext_gadget.localize)({
en: "You have not yet logged in. Register and log in to your account to contribute.",
ja: "あなたはまだ中醫百科にログインしていません。アカウントを作成し、ログインして中醫百科を改善することができます。",
"zh-hans": "您尚未登录中医百科。您可以注册并登录账号,帮助完善中医百科。",
"zh-hant": "您尚未登錄中醫百科。您可以注冊並登錄賬號,幫助完善中醫百科。"
})
};
};
var i18nMessages = getI18nMessages();
var getMessage = (key) => {
return i18nMessages[key] || key;
};
//! src/LoginToEdit/modules/util/generateMessageDialogProperty.ts
var generateMessageDialogProperty = () => {
const $title = $("<b>").addClass("oo-ui-window-head").text(getMessage("DialogTitle"));
const $message = $("<span>").addClass("oo-ui-window-foot").text(getMessage("DialogMessage"));
const messageDialogProperty = {
title: $title,
message: $message,
actions: [{
action: "login",
flags: ["primary", "progressive"],
label: $("<b>").text(getMessage("Login"))
}, {
action: "register",
flags: "progressive",
label: $("<b>").text(getMessage("Register"))
}, {
action: "cancel",
flags: ["safe", "close"],
label: $("<b>").text(getMessage("Cancel"))
}]
};
return messageDialogProperty;
};
//! src/LoginToEdit/modules/initWindowManager.ts
var initWindowManager = () => {
const windowManager = new OO.ui.WindowManager();
return windowManager;
};
//! src/LoginToEdit/modules/initDialog.ts
var {
skin,
wgAction,
wgPageName
} = mw.config.get();
var isCitizen = skin === "citizen";
var loginURL = mw.util.getUrl("Special:UserLogin", {
returnto: wgPageName
});
var registerURL = mw.util.getUrl("Special:CreateAccount", {
returnto: wgPageName
});
var messageDialog;
var initDialog = ($body) => {
const windowManager = initWindowManager();
windowManager.$element.appendTo($body);
const messageDialogProperty = generateMessageDialogProperty();
const openDialog = () => {
if (messageDialog) {
if (messageDialog.isOpened()) {
messageDialog.close();
} else {
messageDialog.open(messageDialogProperty);
}
return;
}
messageDialog = new OO.ui.MessageDialog();
messageDialog.getActionProcess = (action) => {
if (action === "login") {
const $element = $(loginElementSelector);
if ($element.length) {
$element.trigger("click");
} else {
location.href = loginURL;
}
} else if (action === "register") {
location.href = registerURL;
}
return new OO.ui.Process(() => {
void windowManager.closeWindow(messageDialog);
});
};
windowManager.addWindows([messageDialog]);
void windowManager.openWindow(messageDialog, messageDialogProperty);
};
const $caViewsource = $body.find("#ca-viewsource");
if ($caViewsource.length) {
const editIcon = isCitizen ? '<span class="citizen-ui-icon mw-ui-icon-wikimedia-edit"></span>' : "";
$caViewsource.attr("id", "ca-edit").find("a").attr("aria-label", getMessage("DialogMessage")).html(editIcon + getMessage("Edit")).on("click", (event) => {
event.preventDefault();
openDialog();
});
}
if (["edit", "submit"].includes(wgAction)) {
openDialog();
}
};
//! src/LoginToEdit/LoginToEdit.ts
void (0, import_ext_gadget2.getBody)().then(function loginToEdit($body) {
const {
wgUserName
} = mw.config.get();
if (wgUserName) {
return;
}
initDialog($body);
});
})();