Hollie Little Pink Laptop.jpg
Garçon devant un ordinateur.jpg

Le Livre d'or  • avoir tout Vikidia hors-connexion

Participez à améliorer Vikidia : Pilpay, L'Île au trésor, Sorgho, Chasseur-cueilleur, et 300 autres articles importants et trop courts à compléter. Vos contributions sont les bienvenues !
Cette page est semi-protégée.

Module:Vikiconcours

Aller à la navigation Aller à la recherche
 Documentation[modifier] [purger]

Le module : Vikiconcours regroupe les fonctions qui fabriquent les bandeaux liés aux vikiconcours (mais aussi ceux des VikiSolidaire).

On trouve :

Affichage

Les onze

Le douzième

Les sept

Les futurs

L’autre

À faire

  • Le modèle : Icône VikiConcours, pour l’instant non géré en lua, serait probablement à gérer sur le module : Émoticône.
  • Le modèle : VikiConcours équipe et le modèle : VikiSolidaire équipe seraient probablement à gérer en lua quelque part.
  • Les bandeaux d’article devraient vraisemblablement catégoriser.
  • Les bandeaux d’article devraient être placés en double sur leur page de discussion (et là, ne pas catégoriser).
  • Le paramètre utilisé dans les bandeaux est edition, ce qui est horrible.
  • Les modèles « en travaux », qui sont les seuls à catégoriser pour le moment, devraient catégoriser automatiquement dans l’espace encyclopédique, et jamais ailleurs.
  • Les thèmes, par exemple la coloration bizarre de la bordure de seulement quatre bandeaux, ou le rose illisible de six autres, devraient être améliorés.
  • Le modèle : Utilisateur VikiConcours n’a pas du tout le même thème que les autres.
local p = {}

--
-- Fonctions qui fabriquent les bandeaux
--

local function bandeau( concours, nimage, place, type, prix )
	-- choix de l’image
	local image
	if nimage == 0 then -- image des bandeaux de prix spéciaux
		image = 'Logo VikiConcours Prix Spéciaux.png'
	elseif nimage == 1 then
		image = 'Palme de la gloire.png'
	elseif nimage == 2 then
		image = 'VikiConcours Prix 2.png'
	elseif nimage == 3 then
		image = 'VikiConcours Prix 3.png'
	else
		error( 'mauvais numéro d’image' )
	end

	-- choix du thème
	local couleur_fond
	local couleur_bord
	if type == 'général' then
		couleur_fond = 'white'
		couleur_bord = 'black'
	elseif type == 'article' then
		couleur_fond = 'hotpink'
		couleur_bord = 'black'
	elseif type == 'spécial1' then
		couleur_fond = 'lightgreen'
		couleur_bord = 'black'
	elseif type == 'spécial2' then
		couleur_fond = 'lightgreen'
		couleur_bord = 'gold'
	else
		error( 'mauvais thème' )
	end

	-- choix du texte, selon que ce soit pour donner le prix ou pour signaler l’article
	local texte
	if prix then
		texte = [=[<span style="text-transform:capitalize;font-family:Ariana,Serif;font-weight:bold;">Bravo ! Vous avez gagné ]=] .. place .. " du [[Vikidia:VikiConcours " .. concours .. "|VikiConcours " .. concours .. "]]</span> !"
	else
		texte = "Cet article a " .. place .. " du [[Vikidia:VikiConcours " .. concours .. "|VikiConcours " .. concours .. "]] !"
	end

	-- création du bandeau
	local b = require( 'Module:Bandeau grand' )
	return tostring( b.bandeau( nil, -- fonction réservée aux modules
	                            "VikiConcours " .. concours .. ".",
	                            texte,
	                            couleur_fond,
	                            couleur_bord,
	                            b.imageBandeau( nil, -- fonction réservée aux modules
	                                            image )))
end

function p.AnnieLesca( frame )
	local b = require( 'Module:Bandeau grand' )
	local concours = frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' )
	return tostring( b.bandeau( nil, -- fonction réservée aux modules
	                            "VikiConcours " .. concours .. ".",
	                            [=[<span style="text-transform:capitalize;font-family:Ariana,Serif;font-weight:bold;">Bravo ! Vous avez gagné le prix Annie Lesca du [[Vikidia:VikiConcours ]=] .. concours .. "|VikiConcours " .. concours .. "]]</span> !",
	                            'lightblue',
	                            'black',
	                            b.imageBandeau( nil, -- fonction réservée aux modules
	                                            'Logo VikiConcours Prix Spéciaux.png' )))
end

function p.Participant( frame )
	local b = require( 'Module:Bandeau grand' )
	local concours = frame:getParent().args[1] or error( 'une date de Vikiconcours doit être précisée' )
	return tostring( b.bandeau( nil, -- fonction réservée aux modules
	                            'VikiConcours édition [[Vikidia:VikiConcours ' .. concours .. '|' .. concours .. ']]',
	                            'Je participe au VikiConcours édition [[Vikidia:VikiConcours ' .. concours .. '|' .. concours .. ']] !',
	                            'gold',
	                            'red',
	                            b.imageBandeau( nil, -- fonction réservée aux modules
	                                            'Logo VikiConcours Prix Spéciaux.png' )))
end

local function articleEnTravaux( args, concours, image, categ )
	local b = require( 'Module:Bandeau grand' )
	local lang = mw.language.getContentLanguage()
	local equipe = args[1]
	local edition = args['edition'] or lang:formatDate( 'F Y' )
	local image = b.imageBandeau( nil, -- fonction réservée aux modules
	                              image )
	local retour = tostring( b.bandeau( nil, -- fonction réservée aux modules
	                         "[[Vikidia:" .. concours .. " " .. edition .. "|" .. concours .. " " .. edition .. "]]",
	                         "Cet article a été choisi par [[Vikidia:" .. concours .. " " .. edition .. "/Équipes/Équipe " .. equipe .. "|l’équipe " .. equipe .. "]] du " .. concours .. " " .. edition .. ".<br>Merci de ne pas modifier cet article pour limiter les [[Aide:Conflit de versions|conflits d’éditions]].",
	                         'yellow',
	                         'gold',
	                         image,
	                         image ))

	-- ajout de catégories
	if not args['nocat'] or args['nocat'] == '' then 
		retour = retour .. '[[Catégorie:Article ' .. concours .. ']]'
		                .. '[[Catégorie:Article en travaux]]'
		if categ and args['edition'] and args['edition'] ~= '' then 
			retour = retour .. '[[Catégorie:' .. concours .. ' ' .. args['edition'] .. '|~]]'
		end
	end
	return retour
end

function p.ArticleEnTravaux( frame )
	return articleEnTravaux( frame:getParent().args, 'VikiConcours', 'Logo VikiConcours Prix Spéciaux.png', true )
end

function p.ArticleEnTravauxVikiSolidaire( frame )
	return articleEnTravaux( frame:getParent().args, 'VikiSolidaire', 'WikisolidaireSans titre(6).png', false )
end

--
-- Fonction appelables depuis les modèles
--

function p.PrixUn( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                1, -- place
	                "la '''première place'''", -- note : c’est le seul endroit où du gras est utilisé
	                'général', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixDeux( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                2, -- place
	                'la deuxième place',
	                'général', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixTrois( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                3, -- place
	                'la troisième place',
	                'général', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixImage( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                0, -- image spécifique
	                'le prix de la meilleure image',
	                'spécial1', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixAccessible( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                0, -- image spécifique
	                'le prix de l’article le plus accessible',
	                'spécial1', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixComplet( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                0, -- image spécifique
	                'le prix de l’article le plus complet',
	                'spécial1', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixIllustration( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                0, -- image spécifique
	                'le prix de l’article le mieux illustré',
	                'spécial1', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixOriginal( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                0, -- image spécifique
	                'le prix de l’article le plus original',
	                'spécial1', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixClassementUn( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                1, -- place
	                'la première place du classement des articles',
	                'article', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixClassementDeux( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                2, -- place
	                'la deuxième place du classement des articles',
	                'article', -- thème
	                true ) -- bandeau pour un prix
end

function p.PrixClassementTrois( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                3, -- place
	                'la troisième place du classement des articles',
	                'article', -- thème
	                true ) -- bandeau pour un prix
end

function p.ArticleUn( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                1, -- place
	                "gagné la première place",
	                'article', -- thème
	                false ) -- bandeau pour un article
end

function p.ArticleDeux( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                2, -- place
	                "gagné la deuxième place",
	                'article', -- thème
	                false ) -- bandeau pour un article
end

function p.ArticleTrois( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                3, -- place
	                "gagné la troisième place",
	                'article', -- thème
	                false ) -- bandeau pour un article
end

function p.ArticleAccessible( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                0, -- image spécifique
	                "été élu le plus accessible",
	                'spécial2', -- thème
	                false ) -- bandeau pour un article
end

function p.ArticleComplet( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                0, -- image spécifique
	                "été élu le plus complet",
	                'spécial2', -- thème
	                false ) -- bandeau pour un article
end

function p.ArticleIllustration( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                0, -- image spécifique
	                "été élu le mieux illustré",
	                'spécial2', -- thème
	                false ) -- bandeau pour un article
end

function p.ArticleOriginal( frame )
	return bandeau( frame:getParent().args['edition'] or error( 'une date de Vikiconcours doit être précisée' ),
	                0, -- image spécifique
	                "été élu le plus original",
	                'spécial2', -- thème
	                false ) -- bandeau pour un article
end

return p