Module:Submit an edit request
- Аԥсшәа
- العربية
- Авар
- Azərbaycanca
- تۆرکجه
- Basa Bali
- Bikol Central
- Беларуская
- भोजपुरी
- বাংলা
- Bosanski
- Буряад
- Cebuano
- کوردی
- Cymraeg
- Dansk
- Ελληνικά
- English
- فارسی
- Gaeilge
- ગુજરાતી
- हिन्दी
- Հայերեն
- Արեւմտահայերէն
- Bahasa Indonesia
- Ilokano
- 日本語
- Jawa
- Қазақша
- ಕನ್ನಡ
- 한국어
- Kurdî
- Latviešu
- Madhurâ
- मैथिली
- മലയാളം
- मराठी
- Bahasa Melayu
- မြန်မာဘာသာ
- Norsk
- ଓଡ଼ିଆ
- ਪੰਜਾਬੀ
- Kapampangan
- پښتو
- Руски
- Русский
- سنڌي
- တႆး
- සිංහල
- Simple English
- Slovenščina
- Српски / srpski
- தமிழ்
- ไทย
- Türkçe
- Українська
- اردو
- Oʻzbekcha / ўзбекча
- Tiếng Việt
- მარგალური
- Yorùbá
- 中文
- 粵語
Appearance
From Meta, a Wikimedia project coordination wiki
Module documentation
[create]
You might want to create a documentation page for this Scribunto module.
Editors can experiment in this module’s sandbox (create | mirror) and testcases (create) pages.
Please add categories to the /doc subpage. Subpages of this module.
Editors can experiment in this module’s sandbox (create | mirror) and testcases (create) pages.
Please add categories to the /doc subpage. Subpages of this module.
-- This module implements {{Submit an edit request}}. local CONFIG_MODULE = 'Module:Submit an edit request/config' -- Load necessary modules local mRedirect = require('Module:Redirect') local cfg = mw.loadData(CONFIG_MODULE) local effectiveProtectionLevel = require('Module:Effective protection level')._main local lang = mw.language.getContentLanguage() local p = {} local validLevels = { semi = 'semi', template = 'template', full = 'full' } local function message(key, ...) local params = {...} local msg = cfg[key] if #params < 1 then return msg else return mw.message.newRawMessage(msg):params(params):plain() end end -- local function isTranscludedOnMainPage(titleObj) -- local mainPage = message('main-page') -- for i, source in ipairs(titleObj.cascadingProtection.sources) do -- if source == mainPage then -- return true -- end -- end -- return false -- end local function validateLevel(level) return level and validLevels[level] or 'full' end local function getLevelInfo(level, field) return cfg.protectionLevels[level][field] end local function resolveRedirect(page) return mRedirect.luaMain(page) end local function isProtected(page) local action = mw.title.new(page).exists and 'edit' or 'create' return effectiveProtectionLevel(action, page) ~= '*' end function p.makeRequestUrl(level, titleObj) titleObj = titleObj or mw.title.getCurrentTitle() -- if isTranscludedOnMainPage(titleObj) then -- return tostring(mw.uri.fullUrl(message('main-page-request-page'))) -- end local talkPageName = resolveRedirect(titleObj.talkPageTitle.prefixedText) if isProtected(talkPageName) then return tostring(mw.uri.fullUrl(message('protected-talk-page-request-page'))) end level = validateLevel(level) local url = mw.uri.fullUrl(talkPageName, { action = 'edit', editintro = getLevelInfo(level, 'editintro'), preload = message('preload-template'), preloadtitle = message( 'preload-title-text', getLevelInfo(level, 'levelText'), lang:formatDate(message('preload-title-date-format')) ), section = 'new' }) url = tostring(url) -- Add the preload parameters. @TODO: merge this into the mw.uri.fullUrl -- query table once [[phab:T93059]] is fixed. local function encodeParam(key, val) return string.format('&%s=%s', mw.uri.encode(key), mw.uri.encode(val)) end url = url .. encodeParam('preloadparams[]', getLevelInfo(level, 'requestTemplate')) url = url .. encodeParam('preloadparams[]', titleObj.prefixedText) return url end function p._link(args) return string.format( '<span class="plainlinks">[%s %s]</span>', p.makeRequestUrl(args.type), args.display or message('default-display-value') ) end function p._button(args) return require('Module:Clickable button 2').luaMain{ [1] = args.display or message('default-display-value'), url = p.makeRequestUrl(args.type), class = 'mw-ui-progressive' } end local function makeInvokeFunc(func, wrapper) return function (frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = {wrapper} }) return func(args) end end p.link = makeInvokeFunc(p._link, message('link-wrapper-template')) p.button = makeInvokeFunc(p._button, message('button-wrapper-template')) return p