Module:Submit an edit request

-- This module implements.

-- Load necessary modules local mRedirect = require('Module:Redirect') local cfg = mw.loadData('Module:Submit an edit request/config') local effectiveProtectionLevel = require('Module:Effective protection level')._main

local p = {}

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

function p.makeRequestUrl(level, titleObj) titleObj = titleObj or mw.title.getCurrentTitle do local levels = { semi = true, template = true, full = true }		level = level and levels[level] and level or 'full' end local editintro, requestTemplate, levelText do local messages = { semi = { editintro = 'semi-editintro', requestTemplate = 'semi-request-template', levelText = 'semi-protectionlevel' },			template = { editintro = 'template-editintro', requestTemplate = 'template-request-template', levelText = 'template-protectionlevel' },			full = { editintro = 'full-editintro', requestTemplate = 'full-request-template', levelText = 'full-protectionlevel' }		}		local levelMessages = messages[level] editintro = message(levelMessages.editintro) requestTemplate = message(levelMessages.requestTemplate) levelText = message(levelMessages.levelText) end local preloadtitle, talkpagename do -- Get the date text. local dateFormat = message('preload-title-date-format') local lang = mw.language.getContentLanguage local date = lang:formatDate(dateFormat) -- Get the talk page name, and resolve it if it is a redirect. local namespace = titleObj.namespace talkpagename = mw.site.namespaces[namespace].talk.name .. ':'			.. titleObj.text talkpagename = mRedirect.luaMain(talkpagename) preloadtitle = message('preload-title-text', levelText, date) end

if effectiveProtectionLevel(mw.title.new(talkpagename).exists and 'edit' or 'create', talkpagename) ~= '*' then return mw.uri.fullUrl('Wikipedia:Requests for page protection#Current requests for edits to a protected page') end local preloadTemplate = message('preload-template') local function encode(key, value) key = mw.uri.encode(key) value = mw.uri.encode(value) return key .. '=' .. value end

local query = {} query[#query + 1] = encode('preload', preloadTemplate) query[#query + 1] = encode('editintro', editintro) query[#query + 1] = encode('preloadparams[]', requestTemplate) query[#query + 1] = encode('preloadtitle', preloadtitle) query[#query + 1] = 'section=new' query[#query + 1] = encode('preloadparams[]', titleObj.prefixedText) local url = mw.uri.fullUrl(talkpagename, {action = 'edit'}) url = tostring(url) .. '&' .. table.concat(query, '&') return url end

function p._link(args) return string.format(		' [%s %s] ',		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