<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.personaldata.io/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ASubmit_an_edit_request</id>
	<title>Module:Submit an edit request - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.personaldata.io/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ASubmit_an_edit_request"/>
	<link rel="alternate" type="text/html" href="https://wiki.personaldata.io/w/index.php?title=Module:Submit_an_edit_request&amp;action=history"/>
	<updated>2026-04-03T20:52:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.personaldata.io/w/index.php?title=Module:Submit_an_edit_request&amp;diff=77067&amp;oldid=prev</id>
		<title>Podehaye: Created page with &quot;-- This module implements {{Submit an edit request}}.  local CONFIG_MODULE = 'Module:Submit an edit request/config'  -- Load necessary modules local mRedirect = require('Modul...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.personaldata.io/w/index.php?title=Module:Submit_an_edit_request&amp;diff=77067&amp;oldid=prev"/>
		<updated>2020-01-25T01:22:43Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- This module implements {{Submit an edit request}}.  local CONFIG_MODULE = &amp;#039;Module:Submit an edit request/config&amp;#039;  -- Load necessary modules local mRedirect = require(&amp;#039;Modul...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{Submit an edit request}}.&lt;br /&gt;
&lt;br /&gt;
local CONFIG_MODULE = 'Module:Submit an edit request/config'&lt;br /&gt;
&lt;br /&gt;
-- Load necessary modules&lt;br /&gt;
local mRedirect = require('Module:Redirect')&lt;br /&gt;
local cfg = mw.loadData(CONFIG_MODULE)&lt;br /&gt;
local effectiveProtectionLevel = require('Module:Effective protection level')._main&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local validLevels = {&lt;br /&gt;
	semi = 'semi',&lt;br /&gt;
	extended = 'extended',&lt;br /&gt;
	template = 'template',&lt;br /&gt;
	full = 'full',&lt;br /&gt;
	interface = 'interface'&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function message(key, ...)&lt;br /&gt;
	local params = {...}&lt;br /&gt;
	local msg = cfg[key]&lt;br /&gt;
	if #params &amp;lt; 1 then&lt;br /&gt;
		return msg&lt;br /&gt;
	else&lt;br /&gt;
		return mw.message.newRawMessage(msg):params(params):plain()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isTranscludedOnMainPage(titleObj)&lt;br /&gt;
	local mainPage = message('main-page')&lt;br /&gt;
	for i, source in ipairs(titleObj.cascadingProtection.sources) do&lt;br /&gt;
		if source == mainPage then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function validateLevel(level)&lt;br /&gt;
	return level and validLevels[level] or 'full'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLevelInfo(level, field)&lt;br /&gt;
	return cfg.protectionLevels[level][field]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveRedirect(page)&lt;br /&gt;
	return mRedirect.luaMain(page)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isProtected(page)&lt;br /&gt;
	local action = mw.title.new(page).exists and 'edit' or 'create'&lt;br /&gt;
	return effectiveProtectionLevel(action, page) ~= '*'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeRequestUrl(level, titleObj)&lt;br /&gt;
	titleObj = titleObj or mw.title.getCurrentTitle()&lt;br /&gt;
	if isTranscludedOnMainPage(titleObj) then&lt;br /&gt;
		return tostring(mw.uri.fullUrl(message('main-page-request-page')))&lt;br /&gt;
	end&lt;br /&gt;
	local talkPageName = resolveRedirect(titleObj.talkPageTitle.prefixedText)&lt;br /&gt;
	if isProtected(talkPageName) then&lt;br /&gt;
		return tostring(mw.uri.fullUrl(message('protected-talk-page-request-page')))&lt;br /&gt;
	end&lt;br /&gt;
	level = validateLevel(level)&lt;br /&gt;
	local url = mw.uri.fullUrl(talkPageName, {&lt;br /&gt;
		action = 'edit',&lt;br /&gt;
		editintro = getLevelInfo(level, 'editintro'),&lt;br /&gt;
		preload = message('preload-template'),&lt;br /&gt;
		preloadtitle = message(&lt;br /&gt;
			'preload-title-text',&lt;br /&gt;
			getLevelInfo(level, 'levelText'),&lt;br /&gt;
			lang:formatDate(message('preload-title-date-format'))&lt;br /&gt;
		),&lt;br /&gt;
		section = 'new'&lt;br /&gt;
	})&lt;br /&gt;
	url = tostring(url)&lt;br /&gt;
&lt;br /&gt;
	-- Add the preload parameters. @TODO: merge this into the mw.uri.fullUrl&lt;br /&gt;
	-- query table once [[phab:T93059]] is fixed.&lt;br /&gt;
	local function encodeParam(key, val)&lt;br /&gt;
		return string.format('&amp;amp;%s=%s', mw.uri.encode(key), mw.uri.encode(val))&lt;br /&gt;
	end&lt;br /&gt;
	url = url .. encodeParam('preloadparams[]', getLevelInfo(level, 'requestTemplate'))&lt;br /&gt;
	url = url .. encodeParam('preloadparams[]', titleObj.prefixedText)&lt;br /&gt;
&lt;br /&gt;
	return url&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._link(args)&lt;br /&gt;
	return string.format(&lt;br /&gt;
		'&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[%s %s]&amp;lt;/span&amp;gt;',&lt;br /&gt;
		p.makeRequestUrl(args.type),&lt;br /&gt;
		args.display or message('default-display-value')&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._button(args)&lt;br /&gt;
	return require('Module:Clickable button 2').luaMain{&lt;br /&gt;
		[1] = args.display or message('default-display-value'),&lt;br /&gt;
		url = p.makeRequestUrl(args.type),&lt;br /&gt;
		class = 'mw-ui-progressive'&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(func, wrapper)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = require('Module:Arguments').getArgs(frame, {&lt;br /&gt;
			wrappers = {wrapper}&lt;br /&gt;
		})&lt;br /&gt;
		return func(args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.link = makeInvokeFunc(p._link, message('link-wrapper-template'))&lt;br /&gt;
p.button = makeInvokeFunc(p._button, message('button-wrapper-template'))&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Podehaye</name></author>
	</entry>
</feed>