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 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); |
||
var finalReason = ""; |
|||
| ⚫ | |||
| ⚫ | |||
if (protections.length > 0) { |
if (protections.length > 0) { |
||
| ⚫ | |||
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); |
||
| ⚫ | |||
if (!code || !validReasons[code]) { |
if (!code || !validReasons[code]) { |
||
// Unknown code → force O4, must have reason |
|||
| ⚫ | |||
if (!reason) { |
|||
alert((lang === 'zh-hans') ? "O4 必须提供理由。" : "O4 必須提供理由。"); |
|||
return; |
|||
} |
|||
| ⚫ | |||
} else if (code === "O4" && !reason) { |
|||
| ⚫ | |||
return; |
return; |
||
} else { |
|||
finalReason = code + ":" + validReasons[code] + (reason ? ";" + reason : ""); |
|||
} |
} |
||
} else { |
|||
// Unprotect → O5, must have reason |
|||
var reason = prompt((lang === 'zh-hans') ? "请输入解除保护理由:" : "請輸入解除保護理由:") || ""; |
|||
if (!reason) { |
|||
alert((lang === 'zh-hans') ? "O5 必须提供理由。" : "O5 必須提供理由。"); |
|||
return; |
return; |
||
} |
} |
||
finalReason = |
finalReason = "O5:" + reasonsAll.O5 + ";" + reason; |
||
} |
} |
||
var finalUrl = baseUrl + "?action=protect" + |
var finalUrl = baseUrl + "?action=protect" + |
||
(protections.length ? "&" |
(protections.length ? "&" + |
||
"&mwProtect-reason=" + encodeURIComponent(finalReason) + |
|||
"&mwProtect-expiry=" + encodeURIComponent(expiry); |
|||
window.location.href = finalUrl; |
|||
}); |
|||
}); |
|||