Jump to content

Modulo:Agkiddaw iti panagurnos

Permanente a nasalakniban a modulo
Manipud iti Wikipedia, ti nawaya nga ensiklopedia
Dokumentasion ti modulo

Daytoy a modulo ket isayangkatna dagiti plantilia ti {{agkiddaw iti panagurnos}} ken {{agkiddaw iti panagurnos/silpo}}.

Panagusar manipud ti wikitext

Ti panagusar daytoy a modulo manipud ti wikitext, kadawyan nga usaren dagiti plantilia ti {{agkiddaw iti panagurnos}} ken {{agkiddaw iti panagurnos/silpo}}. Nupay kasta, ti modulo ket mabalin pay a dagus a mausar manipud ti #invoke. Para iti buton ti kiddaw ti panagurnos, usaren ti {{#invoke:Agkiddaw iti panagurnos|button|args}}, ken para iti silpo ti kiddaw ti panagurnos laeng, usaren ti {{#invoke:Agkiddaw iti panagurnos|link|args}}. Pangngaasi a kitaen dagiti panid ti plantilia para iti listaan dagiti magun-od a parametro.

Panagusar manipud kadagiti modulo ti Lua

Ti panagusar daytoy a modulo manipud kadagiti sabali a modulo ti Lua, umuna nga ikarga ti modulo.

local mEditRequest = require('Modulo:Agkiddaw iti panagurnos')

Mabalinton nga usaren ti annong ti _button tapno makapataud ti buton ti kiddaw ti panagurnos, ken ti annong ti _link tapno makapataud ti silpo ti kiddaw ti panagurnos.

mEditRequest._button(args)
mEditRequest._link(args)

Ti karuay ti args ket nasken a tabla nga aglaon kadagiti argumento nga ipasa iti modulo. Ti mangkita kadagiti nadumaduma nga argumento a mabalin a mainaganan ken no kasano a mabanagan ti maiparuar ti modulo, pangngaasi a kitaen ti dokumentasion ti {{Agkiddaw iti panagurnos}} ken {{Agkiddaw iti panagurnos/silpo}}.

-- Daytoy a modulo ket isayangkatna ti {{Agkiddaw iti panagurnos}}.

local CONFIG_MODULE = 'Modulo:Agkiddaw iti panagurnos/pannakaaramid'

-- Load necessary modules
local mRedirect = require('Modulo:Baw-ing')
local cfg = mw.loadData(CONFIG_MODULE)
local effectiveProtectionLevel = require('Modulo:Epektibo nga agpang ti salaknib')._main
local escape = require("Modulo:String")._escapePattern
local lang = mw.language.getContentLanguage()

local p = {}

local validLevels = {
	semi = 'semi',
	extended = 'extended',
	template = 'template',
	full = 'full',
	interface = 'interface',
	manual = 'manual'
}

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 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()
	local basePage = titleObj.basePageTitle.fullText
	if cfg['main-page-content'][basePage] then
		return tostring(mw.uri.fullUrl(message('main-page-request-page')))
	end

	local talkPageName = titleObj.talkPageTitle
	if talkPageName == nil then
		return tostring(mw.uri.fullUrl(message('protected-talk-page-request-page')))
	end
	talkPageName = resolveRedirect(talkPageName.prefixedText)
	if isProtected(talkPageName) then
		return tostring(mw.uri.fullUrl(message('protected-talk-page-request-page')))
	end
	level = validateLevel(level)
	if level == 'manual' then
		return tostring(mw.uri.fullUrl(talkPageName, {
			action = 'edit',
			section = 'new'
		}))
	end
	local sectionname = message(
			'preload-title-text',
			getLevelInfo(level, 'levelText'),
			lang:formatDate(message('preload-title-date-format'))
	)
	local content = mw.title.new(talkPageName):getContent()
	if content and content:find("== *" .. escape(sectionname) .. " *==") then
		local dedup = 2
		while true do
			local newname = message("preload-title-dedup-suffix", sectionname, dedup)
			if not content:find("== *" .. escape(newname) .. " *==") then
				sectionname = newname
				break
			end
			dedup = dedup + 1
		end
	end
	local url = mw.uri.fullUrl(talkPageName, {
		action = 'edit',
		editintro = getLevelInfo(level, 'editintro'),
		preload = message('preload-template'),
		preloadtitle = sectionname,
		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('Modulo:Mapindut a buton 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('Modulo:Dagiti argumento').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