Jump to content

Module:Submit an edit request: Difference between revisions

From Fifth Empire Wiki
don't pass the query string through the uri object so that we can be sure that the parameters are in the right order
simpler code for getting the talk page name
Line 70: Line 70:
-- Get the talk page name, and resolve it if it is a redirect.
-- Get the talk page name, and resolve it if it is a redirect.
local namespace = titleObj.namespace
local namespace = titleObj.namespace
if namespace % 2 == 0 then
talkpagename = mw.site.namespaces[namespace].talk.name
namespace = namespace + 1
.. ':'
end
..  titleObj.text
talkpagename = mw.site.namespaces[namespace].name .. ':' ..  titleObj.text
talkpagename = mRedirect.main{talkpagename}
talkpagename = mRedirect.main{talkpagename}
preloadtitle = message('preload-title-text', levelText, date)
preloadtitle = message('preload-title-text', levelText, date)

Revision as of 07:20, 10 June 2014

Documentation for this module may be created at Module:Submit an edit request/doc

-- This module implements {{Submit an edit request}}.

local cfg = {}

cfg['preload-template'] = 'Template:Submit an edit request/preload'
cfg['preload-title-text'] = '$1 edit request on $2'
cfg['preload-title-date-format'] = 'j F Y'

cfg['semi-editintro'] = 'Template:Edit semi-protected/editintro'
cfg['semi-request-template'] = 'edit semi-protected'
cfg['semi-protectionlevel'] = 'Semi-protected'

cfg['template-editintro'] = 'Template:Edit template-protected/editintro'
cfg['template-request-template'] = 'edit template-protected'
cfg['template-protectionlevel'] = 'Template-protected'

cfg['full-editintro'] = 'Template:Edit protected/editintro'
cfg['full-request-template'] = 'edit protected'
cfg['full-protectionlevel'] = 'Protected'

local mRedirect = require('Module:Redirect')

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()
	
	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.main{talkpagename}
		preloadtitle = message('preload-title-text', levelText, date)
	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

return p