Module:Submit an edit request
Από Γνωσιακή Βάση Υπηρεσιών και Διαδικασιών του Δημοσίου Τομέα
Documentation for this module may be created at Module:Submit an edit request/τεκμηρίωση
-- This module implements {{Submit an edit request}}. -- Load necessary modules local mRedirect = require('Module:Redirect') local cfg = mw.loadData('Module:Submit an edit request/config') 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 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( '<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