User:Bosco-bot/common.js: Difference between revisions

From Test Wiki
Content deleted Content added
mNo edit summary
Tag: Reverted
No edit summary
Tag: Reverted
Line 1: Line 1:
/**
/**
* Protection helper (zh-Hans / zh-Hant)
* Protection helper (zh-Hans / zh-Hant)
* - Handles protect and unprotect
* - Default language zh-Hans
* - Default language zh-Hans
* - Always ask for expiry (default indefinite)
* - Always ask for expiry (default indefinite)
Line 7: Line 6:
* - Namespace restrictions
* - Namespace restrictions
* - Direct protect URL construction
* - Direct protect URL construction
* - Reason optional for all codes except O4/O5 (mandatory)
*/
*/


Line 17: Line 17:
var lang = (['zh', 'zh-hans', 'zh-cn', 'zh-my', 'zh-sg'].includes(rawLang)) ? 'zh-hans' : 'zh-hant';
var lang = (['zh', 'zh-hans', 'zh-cn', 'zh-my', 'zh-sg'].includes(rawLang)) ? 'zh-hans' : 'zh-hant';


// Reasons dictionary
// Reasons dictionary (Simplified Chinese)
var reasonsHans = {
var reasonsHans = {
G1: "遭到过度破坏的页面",
G1: "遭到过度破坏的页面",
Line 38: Line 38:
O1: "用户请求保护自己的用户页或子页面",
O1: "用户请求保护自己的用户页或子页面",
O2: "神奇宝贝百科站务或方针方面的页面",
O2: "神奇宝贝百科站务或方针方面的页面",
O3: "刻意使用的空的类别(没有条目也没有子类别)"
O3: "刻意使用的空的类别(没有条目也没有子类别)",
O4: "其他需要保护的页面",
O5: "解除保护的页面"
};
};


// Reasons dictionary (Traditional Chinese)
var reasonsHant = {
var reasonsHant = {
G1: "遭到過度破壞的頁面",
G1: "遭到過度破壞的頁面",
Line 61: Line 64:
O1: "用戶請求保護自己的用戶頁或子頁面",
O1: "用戶請求保護自己的用戶頁或子頁面",
O2: "神奇寶貝百科站務或方針方面的頁面",
O2: "神奇寶貝百科站務或方針方面的頁面",
O3: "刻意使用的空的類別(沒有條目也沒有子類別)"
O3: "刻意使用的空的類別(沒有條目也沒有子類別)",
O4: "其他需要保護的頁面",
O5: "解除保護的頁面"
};
};


Line 82: Line 87:
var tooltip = linkText;
var tooltip = linkText;


var reasonPrompt = (lang === 'zh-hans') ? '请输入保护/解除保护理由:' : '請輸入保護/解除保護理由:';
var editPrompt = (lang === 'zh-hans')
var editPrompt = (lang === 'zh-hans')
? "请输入编辑保护级别 (autoconfirmed/sysop/admin/none):"
? "请输入编辑保护级别 (autoconfirmed/sysop/admin/none):"
Line 90: Line 94:
: "請輸入移動保護級別 (autoconfirmed/sysop/admin/none):";
: "請輸入移動保護級別 (autoconfirmed/sysop/admin/none):";
var expiryPrompt = (lang === 'zh-hans') ? "请输入保护期限 (默认 indefinite):" : "請輸入保護期限 (默認 indefinite):";
var expiryPrompt = (lang === 'zh-hans') ? "请输入保护期限 (默认 indefinite):" : "請輸入保護期限 (默認 indefinite):";
var reasonTip = (lang === 'zh-hans') ? "提示:請提供額外理由(可選,O4/O5 必須提供理由)" : "提示:請提供額外理由(可選,O4/O5 必須提供理由)";


var link = mw.util.addPortletLink('p-cactions', '#', linkText, 'ca-protectpage', tooltip);
var link = mw.util.addPortletLink('p-cactions', '#', linkText, 'ca-protectpage', tooltip);
Line 116: Line 121:


var expiry = prompt(expiryPrompt) || "indefinite";
var expiry = prompt(expiryPrompt) || "indefinite";
var reason = prompt(reasonPrompt) || "";


var pageName = mw.config.get('wgPageName');
var pageName = mw.config.get('wgPageName');
var baseUrl = mw.util.getUrl(pageName);
var baseUrl = mw.util.getUrl(pageName);


// Protect mode: require code
var finalReason = "";

var finalReason = reason;
var validReasons = getValidReasons();

if (protections.length > 0) {
if (protections.length > 0) {
var validReasons = getValidReasons();
var codePrompt = (lang === 'zh-hans' ? "请输入保护代碼:\n" : "請輸入保護代碼:\n") +
var codePrompt = (lang === 'zh-hans' ? "请输入保护代碼:\n" : "請輸入保護代碼:\n") +
Object.keys(validReasons).map(function (k) {
Object.keys(validReasons).map(function (k) {
return k + ":" + validReasons[k];
return k + ":" + validReasons[k];
}).join("\n");
}).join("\n") + "\n" + reasonTip;
var code = prompt(codePrompt);
var code = prompt(codePrompt);

var reason = prompt((lang === 'zh-hans') ? "请输入理由:" : "請輸入理由:") || "";

if (!code || !validReasons[code]) {
if (!code || !validReasons[code]) {
// Unknown code → force O4, must have reason
alert((lang === 'zh-hans') ? "无效代碼,请重新输入。" : "無效代碼,請重新輸入。");
if (!reason) {
alert((lang === 'zh-hans') ? "O4 必须提供理由。" : "O4 必須提供理由。");
return;
}
finalReason = "O4:" + reasonsAll.O4 + ";" + reason;
} else if (code === "O4" && !reason) {
alert((lang === 'zh-hans') ? "O4 必须提供理由。" : "O4 必須提供理由。");
return;
return;
} else {
finalReason = code + ":" + validReasons[code] + (reason ? ";" + reason : "");
}
}
// O1 requires reason
} else {
if (code === "O1" && !reason) {
// Unprotect O5, must have reason
alert((lang === 'zh-hans') ? "O1 必须提供理由" : "O1 必須提供理由");
var reason = prompt((lang === 'zh-hans') ? "请输入解除保护理由" : "請輸入解除保護理由") || "";
if (!reason) {
alert((lang === 'zh-hans') ? "O5 必须提供理由。" : "O5 必須提供理由。");
return;
return;
}
}
finalReason = code + "" + validReasons[code] + (reason ? ";" + reason : "");
finalReason = "O5:" + reasonsAll.O5 + ";" + reason;
}
}


var finalUrl = baseUrl + "?action=protect" +
var finalUrl = baseUrl + "?action=protect" +
(protections.length ? "&" + protections.join("&") : "") +
(protections.length ? "&" +
"&mwProtect-reason=" + encodeURIComponent(finalReason) +
"&mwProtect-expiry=" + encodeURIComponent(expiry);

window.location.href = finalUrl;
});
});