Aller au contenu

Module:Redirection de modèle

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.

 Documentation[voir] [modifier] [historique] [purger]

Utilisation

Fonctions exportables :

  • genererBandeau(frame) – Arguments pris en charge (frame.args) : type, obsolète, à conserver, message, nocat. Voir Modèle:Redirection de modèle pour la descriptions des paramètres.

Autres fonctions :

  • estObsolete( arguments ) – Détermine si la redirection est obsolète. Prend en paramètre la liste des arguments fournis au module. Retourne un booléen.
  • obtenirCategories( paramType, obsolete ) – Génère la catégorisation. Prend en paramètre la valeur du paramètre 'type' fournie au module et l'information sur le fait que la redirection est obsolète ou non. Retourne du wikicode contenant les catégories.

Modules externes et autres éléments dont ce module a besoin pour fonctionner :

  • mw.language – Bibliothèque utilisée pour les fonctions lcfirst et ucfirst.
  • mw.title – Bibliothèque utilisée pour tester l'existence d'une page, obtenir le titre de la page courante et générer des url.
  • Module:Bandeau – Module utilisé pour générer le bandeau affiché.
local p = { }

local lang = mw.language.new( 'fr' )

-- Détermine si la redirection est obsolète.
-- Prend en paramètre la liste des arguments fournis au module.
-- Retourne un booléen.
local function estObsolete( arguments )

	local paramType = arguments['type']
	local paramObsolete = arguments['obsolète']
	local paramConserver = arguments['à conserver']

	if paramObsolete ~= nil then
		return true
	elseif paramConserver ~= nil then
		return false
	else
		if paramType ~= nil then
			if paramType == 'palette' then
				return true
			elseif paramType == 'utilisateur' then
				return true
			elseif paramType == 'infobox' then
				return true
			else
				return false
			end
		else
			return false
		end
	end

end

-- Génère la catégorisation.
-- Prend en paramètre la valeur du paramètre 'type' fournie au module
-- et l'information sur le fait que la redirection est obsolète ou non.
-- Retourne du wikicode contenant les catégories.
local function obtenirCategories( paramType, obsolete )

	local categories = ''

	if obsolete then
		categories = '[[Catégorie:Redirection de modèle obsolète]]'
	end

	if paramType ~= nil then
		lcParamType = lang:lcfirst(paramType)
		local cat = mw.title.new( 'Catégorie:Redirection de modèle - '..lcParamType )
		if cat.exists then
			categories = categories..'[[Catégorie:Redirection de modèle - '..lcParamType..']]'
		else
			categorie = categories..'[[Catégorie:Redirection de modèle]]'
		end
	else
		categorie = categories..'[[Catégorie:Redirection de modèle]]'
	end

	return categories

end

-- Fonction principale
function p.genererBandeau( frame )

	local arguments = frame:getParent().args
	local obsolete = estObsolete( arguments )
	local titreCourant = mw.title.getCurrentTitle()

	-- Génération du paramètre 'niveau'
	local pNiveau = 'information'

	-- Génération du paramètre 'icône'
	local pIcone = 'Redirect arrow without text.svg'

	-- Génération du paramètre 'titre'
	local pTitre = 'Cette redirection '

	if obsolete then
		pTitre = pTitre..'est obsolète.'
	else
		pTitre = pTitre..'doit être conservée.'
	end

	-- Génération du paramètre 'texte'
	local pTexte = 'La [[Aide:Redirection|redirection]] \'\'\''..titreCourant.text..'\'\'\''

	if obsolete then
		pTexte = pTexte..' est obsolète et ne pourra être supprimée qu\'une fois son remplacement achevé'
	else
		pTexte = pTexte..' est utile et ne doit pas être supprimée'
	end

	local pageSpeciale = mw.title.new( 'Spécial:Pages liées/'..titreCourant.fullText )
	pTexte = pTexte..' <small>(['..pageSpeciale:fullUrl('hidetrans=0&hidelinks=1&hideredirs=0&hideimages=1')..' vérifier son utilisation])</small>.'


	if arguments['type'] ~= nil and arguments['type'] ~= '' then
		pTexte = pTexte..'<br>Motif : '..lang:ucfirst(arguments['type'])..'.'
	else
		if not obsolete then
			pTexte = pTexte..'<br>Motif : (à compléter).'
		end
	end

	if arguments['message'] ~= nil then
		pTexte = pTexte..' '..arguments['message']
	end

	local module = require( 'Module:Bandeau' )
	local args = { }
	args['niveau'] = pNiveau
	args['icône'] = pIcone
	args['titre'] = pTitre
	args['texte'] = pTexte

	local chaine = module._bandeauAvertissement( args )

	-- Ajout des catégories
	if arguments['nocat'] == nil then
		local categories = obtenirCategories( arguments['type'], obsolete )
		chaine = chaine..categories
	end

	-- Fin
	return chaine

end

return p