Les lecteurs de Vikidia demandent des articles en plus. Voyez la liste d'articles à créer, et venez nous aider à les rédiger !
Module:Utilisateur
Le module : User implémente les modèles qui servent à afficher des liens utiles pour étudier les contributions d’un utilisateur (voir leurs documentations). Il fournit :
IP
pour le modèle : IP ;user
pour remplacer le modèle : U, le modèle : U+ ou le modèle : U’ depuis un autre module ;User
pour le modèle : User (ou modèle : U) ;UMoins
pour le modèle : U- ;UPlus
pour le modèle : U+ ;UPrime
pour le modèle : U’.
La plupart des fonctions fonctionnent de la même manière, aussi y a-t-il la fonction locale user
pour synthétiser la majorité des appels ; la fonction IP
fait elle appel à la fonction locale ip
, car le modèle : IP offre divers outils qui ne font pas sens pour les comptes enregistrés. La fonction locale plus
est commune aux deux fonctions locales.
Tous les modèles sont substables, même si cela ne fait pas vraiment sens ici.
La documentation de ce module est incluse depuis sa sous-page de documentation (modifier | historique).
Veuillez placer les catégories dans la sous-page /Documentation.
Les éditeurs peuvent travailler dans le bac à sable (créer).
local p = {}
--
-- Fonction générique pour ajouter certains liens
--
local function plus( utilisateur, ip )
local puce = ' • '
local pipe = ' | '
local utilisateur2 = mw.uri.encode( utilisateur, "WIKI" )
-- antiabus : filtres déclenchés par l’utilisateur
local titre = mw.title.new( 'Special:Journal du filtre antiabus' )
local antiabus = titre:fullUrl{ wpSearchUser = utilisateur2 }
-- deleted1 : liste des contributions de l’utilisateur masquées par un administrateur
titre = mw.title.new( 'Special:Contributions' )
local deleted1 = titre:fullUrl{ target = utilisateur2, deletedOnly = '1' }
-- deleted2 : liste des contributions de l’utilisateur masquées par un bureaucrate
titre = mw.title.new( 'Special:Log/suppress' )
local deleted2 = titre:fullUrl{ user = utilisateur2 }
-- checkuser1 : checkuser sur l’utilisateur
titre = mw.title.new( 'Special:CheckUser' )
local checkuser1 = titre:fullUrl{ user = utilisateur2 }
-- checkuser2 : requêtes checkuser faites par l’utilisateur
titre = mw.title.new( 'Special:CheckUserLog' )
local checkuser2 = titre:fullUrl{ cuSearch = utilisateur2 }
-- ajout des options
local retour = pipe
.. '[[special:Log/'
.. utilisateur
.. '|<span title="Journaux générés par '
.. utilisateur
.. '">j</span>]]'
if not ip then
retour = retour .. puce
.. '[[Spécial:Liste_des_fichiers/'
.. utilisateur
.. '|<span title="Fichiers importés par '
.. utilisateur
.. '">i</span>]]'
end
retour = retour .. puce
.. '['
.. antiabus
.. ' '
.. '<span title="Journaux des filtres anti-abus pour '
.. utilisateur
.. '">AF</span>]'
.. puce
.. '['
.. deleted1
.. ' '
.. '<span title="Contributions masquées (admin) de '
.. utilisateur
.. '">Cm-</span>]'
.. puce
.. '['
.. deleted2
.. ' '
.. '<span title="Contributions masquées lourdement (bubu) de '
.. utilisateur
.. '">Cm+</span>]'
.. puce
.. '[[special:Contributions_supprimées/'
.. utilisateur
.. '|<span title="Contributions supprimées de '
.. utilisateur
.. '">Cs</span>]]'
if not ip then
retour = retour .. puce
.. '[[special:Permissions/'
.. utilisateur
.. '|<span title="Droits utilisateurs de '
.. utilisateur
.. '">P</span>]]'
end
retour = retour .. puce
.. '['
.. checkuser1
.. ' '
.. '<span title="CheckUser sur '
.. utilisateur
.. '">CU</span>]'
.. puce
.. '['
.. checkuser2
.. ' '
.. '<span title="CheckUser faits sur '
.. utilisateur
.. '">LogCU</span>]'
return retour
end
--
-- Fonctions pour assembler le texte de retour
--
local function user( utilisateur, block, admin, full )
local puce = ' • '
local pipe = ' | '
local retour = '[[Utilisateur:'
.. utilisateur
.. '|<span title="Page utilisateur de '
.. utilisateur
.. '">'
.. utilisateur
.. '</span>]]'
-- ouverture de la parenthèse, ajout des options : d, c
.. '<span class="plainlinks" style="font-size: 80%;"> ('
.. '[[Discussion utilisateur:'
.. utilisateur
.. '|<span title="Page de discussion de '
.. utilisateur
.. '">d</span>]]'
.. puce
.. '[[Special:Contributions/'
.. utilisateur
.. '|<span title="Contributions de '
.. utilisateur
.. '">c</span>]]'
-- lien pour voir si l’utilisateur a été bloqué
if block then
-- journal des blocages de l’utilisateur
local titre = mw.title.new( 'Special:Log' )
local appel = titre:fullUrl{ type = 'block', page = 'User:' .. mw.uri.encode( utilisateur, "WIKI" ) }
-- ajout de l’option : b
retour = retour .. puce
.. '['
.. appel
.. ' '
.. '<span title="Blocages sur le compte '
.. utilisateur
.. '">b</span>]'
end
-- liens pour surveiller les contributions en tant qu’administrateur de l’utilisateur
if admin then
local utilisateur2 = mw.uri.encode( utilisateur, "WIKI" )
-- block : blocages effectués par l’administrateur
local titre = mw.title.new( 'Special:Log/block' )
local blocage = titre:fullUrl{ user = utilisateur2 }
-- protect : pages protégées par l’administrateur
titre = mw.title.new( 'Special:Log/protect' )
local protect = titre:fullUrl{ user = utilisateur2 }
-- delete : pages supprimées par l’administrateur
titre = mw.title.new( 'Special:Log/delete' )
local delete = titre:fullUrl{ user = utilisateur2 }
-- ajout des options : B, P (le premier), S
retour = retour .. pipe
.. '['
.. blocage
.. ' '
.. '<span title="Blocages effectués par '
.. utilisateur
.. '">B</span>]'
.. puce
.. '['
.. protect
.. ' '
.. '<span title="Protections effectuées par '
.. utilisateur
.. '">P</span>]'
.. puce
.. '['
.. delete
.. ' '
.. '<span title="Suppressions effectuées par '
.. utilisateur
.. '">S</span>]'
end
-- liens supplémentaire
if full then
retour = retour .. plus( utilisateur, false )
end
-- fermeture de la parenthèse
retour = retour .. ')</span>'
return retour
end
local function ip( adresse, block, whois, full )
local puce = ' • '
local pipe = ' | '
local retour = 'IP [[Special:Contributions/'
.. adresse
.. '|<span title="Contributions de '
.. adresse
.. '">'
.. adresse
.. '</span>]]'
-- ouverture de la parenthèse, ajout de l’option : d
.. '<span class="plainlinks" style="font-size: 80%;"> ('
.. '[[Discussion utilisateur:'
.. adresse
.. '|<span title="Page de discussion de l’IP '
.. adresse
.. '">d</span>]]'
-- lien pour voir si l’utilisateur a été bloqué
if block then
-- journal des blocages de l’ip
local titre = mw.title.new( 'Special:Log' )
local appel = titre:fullUrl{ type = 'block', page = 'User:' .. mw.uri.encode( adresse, "WIKI" ) }
-- ajout de l’option : b
retour = retour .. puce
.. '['
.. appel
.. ' '
.. '<span title="Blocages sur l’IP '
.. adresse
.. '">b</span>]'
end
-- lien vers des outils pour identifier l’IP
if whois then
local adresse2 = mw.uri.encode( adresse, "WIKI" )
-- ajout de l’option : geo (whatismyipaddress)
retour = retour .. puce
.. '['
.. 'https://whatismyipaddress.com/ip/'
.. adresse2
.. ' '
.. '<span title="Géolocalisation de l’IP '
.. adresse
.. '">geo</span>]'
-- ajout de l’option : WhoIs (whois.toolforge.org)
.. puce
.. '['
.. 'https://whois.toolforge.org/gateway.py?lookup=true&ip='
.. adresse2
.. ' '
.. '<span title="WhoIs de l’IP '
.. adresse
.. '">WhoIs</span>]'
end
-- liens supplémentaire
if full then
retour = retour .. plus( adresse, true )
end
-- fermeture de la parenthèse
retour = retour .. ')</span>'
return retour
end
--
-- Fonctions appelables depuis les modèles
--
-- pour le [[modèle : IP]]
function p.IP( frame )
local args = frame.args
local tmp = mw.text.trim( args[1] or '' )
local utilisateur = (tmp ~= '') and tmp or error( "le nom d’utilisateur doit être précisé dans le modèle : IP" )
local block = mw.text.trim( args['noblock'] or '' ) == ''
local whois = mw.text.trim( args['nowhois'] or '' ) == ''
local full = mw.text.trim( args['full'] or '' ) ~= ''
if require( 'Module:Lib adresse IP' ).isIP( nil, utilisateur ) then
return ip( utilisateur, block, whois, full )
else
return user( utilisateur, block, false, full ) .. '[[Catégorie:Modèle IP mal utilisé]]'
end
end
-- à appeler depuis d’autres modules
function p.user( canari, utilisateur, block, admin, full )
if canari ~= nil then
error( "utilisez la fonction « User » du même module" )
end
return user( utilisateur, block, admin, full )
end
-- pour le [[modèle : User]] aka [[modèle : U]]
function p.User( frame )
local args = frame.args
local tmp = mw.text.trim( args[1] or '' )
local utilisateur = (tmp ~= '') and tmp or error( "le nom d’utilisateur doit être précisé dans le modèle : U" )
local block = mw.text.trim( args['block'] or '' ) ~= 'non'
local admin = mw.text.trim( args['admin'] or '' ) ~= ''
local full = mw.text.trim( args['full'] or '' ) ~= ''
return user( utilisateur, block, admin, full )
end
-- pour le [[modèle : U-]]
function p.UMoins( frame )
local args = frame.args
local tmp
tmp = mw.text.trim( args[1] or '' )
local utilisateur = (tmp ~= '') and tmp or error( "le nom d’utilisateur doit être précisé dans le modèle : U-" )
tmp = mw.text.trim( args[2] or '' )
local texte = (tmp ~= '') and tmp or utilisateur
return '[[Utilisateur:' .. utilisateur .. '|' .. texte .. ']]'
end
-- pour le [[modèle : U+]]
function p.UPlus( frame )
local args = frame.args
local tmp = mw.text.trim( args[1] or '' )
local utilisateur = (tmp ~= '') and tmp or error( "le nom d’utilisateur doit être précisé dans le modèle : U+" )
local block = mw.text.trim( args['block'] or '' ) ~= 'non'
local admin = mw.text.trim( args['admin'] or '' ) ~= ''
return user( utilisateur, block, admin, 'full' )
end
-- pour le [[modèle : U']]
function p.UPrime( frame )
local args = frame.args
local tmp = mw.text.trim( args[1] or '' )
local utilisateur = (tmp ~= '') and tmp or error( "le nom d’utilisateur doit être précisé dans le modèle : U'" )
local admin = mw.text.trim( args['admin'] or '' ) ~= ''
local full = mw.text.trim( args['full'] or '' ) ~= ''
return user( utilisateur, false, admin, full )
end
return p