Modul:MediaWiki:Pageinfo
Vorlagenprogrammierung | Diskussionen | Lua | Unterseiten | ||
Modul | Deutsch
|
Modul: | Dokumentation |
Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus
local Serial = "2019-05-15"
--[=[
Hilfsfunktionen für MediaWiki:Pageinfo-*
TEXT-KONFIGURATION
Für die nachstehenden Definitionen gelten die Platzhalter:
{{NICK}} = username
{{NICK_}} = username, WIKI-URL-kodiert
{{NICK%}} = username, %-URL-kodiert
{{SLANG}} = aktuelle GUI-Sprache
{{SPACE}} = gegenderter Namensraum-Name
{{SPACES}} = gegenderter Namensraum-Name im Plural
{{STDPATH}} = Pfad zum Standard-Serverskript
{{TOPIC+}} = Button für neuen BD-Abschnitt
]=]
local UPage = [====['''[[{{SPACE}}:{{NICK}}#top|{{NICK}}]]''']====]
local UList =
[====[* [[{{SPACE}} Diskussion:{{NICK}}|{{SPACES}}diskussion]] (BD)
<div style="margin-left:4em">
{{TOPIC+}}
</div>
<div class="plainlinks">
* [[Spezial:Beiträge/{{NICK}}|{{SPACES}}beiträge]]
* Logbücher:
** [[Spezial:Logbuch/{{NICK}}|Aktivitäts-Log]]
** [{{STDPATH}}Spezial:Logbuch/block&page={{SPACE}}:{{NICK_}} Sperr-Log]
** [[Spezial:Präfixindex/{{SPACE}}:{{NICK}}/|BNR-Unterseiten]]
** [[Spezial:Präfixindex/{{SPACE}} Diskussion:{{NICK}}/|BD-Unterseiten]] (für archivierte Diskussionen)
* [https://xtools.wmflabs.org/ec/de.wikipedia/{{NICK_}}?uselang={{SLANG}} Beitragszähler] <small>[[[Wikipedia:Technik/Labs/xtools/ec|Dokumentation]]]</small>
* [https://xtools.wmflabs.org/pages/de.wikipedia/{{NICK_}}/0?uselang={{SLANG}} Neue Artikel] <small>[[[Wikipedia:Technik/Labs/xtools/pages|Dokumentation]]]</small>
* [[Spezial:Dateien/{{NICK}}|Hochgeladene Dateien]]
* [https://tools.wmflabs.org/stimmberechtigung/index.php?user={{NICK}} Stimmberechtigung] <small>[[[Wikipedia:Technik/Labs/Tools/stimmberechtigung|Dokumentation]]]</small>
* [[Special:CentralAuth/{{NICK}}|Globales Konto]] <small>[[[Hilfe:Single-User-Login|Hilfe]]]</small>
* [[luxo:{{NICK}}|Globale Beiträge]] <small>[[[Wikipedia:Technik/Labs/Tools/guc|Dokumentation]]]</small>
* [[Spezial:Benutzerrechte/{{NICK}}|Benutzergruppen/-rechte]] <small>[[[Hilfe:Benutzer|Hilfe]]]</small>
</div>
]====]
local function button( area, apply, frame )
-- Neuen BD-Abschnitt als Button
-- Parameter:
-- area BNR-Name
-- apply Nick
-- frame
-- Parameter: BD-Seitenname
local r = string.format( "%s %s:%s", area, "Diskussion", apply )
local p = { Seite = r }
r = frame:expandTemplate{ title = "Neuer Abschnitt/URL",
args = p }
p = { Typ = "progressive",
Link = r,
Text = "Neuen BD-Abschnitt anlegen" }
r = frame:expandTemplate{ title = "MediaWiki-Button",
args = p }
return r
end -- button()
local function slang()
-- Aktuelle GUI-Sprache
local o = mw.message.new( "lang" )
local r
if o:exists() then
r = o:plain()
if r == "" then
r = false
end
end
if not r then
r = mw.language.getContentLanguage():getCode()
end
return r
end -- slang()
local function spacy( account, all )
-- Gegenderter Namensraum-Name
-- Parameter:
-- account Nick
-- all true: Plural
local r = mw.site.namespaces[ 2 ].name
if r == "Benutzer" then
local babel = mw.language.getContentLanguage()
if all then
r = r .. babel:gender( account, "", "innen", "" )
else
r = r .. babel:gender( account, "", "in", "" )
end
end
return r
end -- spacy()
-- Export
local p = { }
p.user = function ( frame )
-- Benutzer-Abschnitt
-- Parameter: Seitentitel, damit auch Nick, oder nix.
local s = frame.args[ 1 ]
local r, t
if s then
s = mw.text.trim( s )
if s == "" then
s = false
else
r, t = pcall( mw.title.makeTitle, 2, s )
if r then
s = t.rootText
else
s = false
end
end
else
local c = mw.title.getCurrentTitle()
if c.namespace == 2 or c.namespace == 3 then
s = c.rootText
end
end
if s then
local space = spacy( s )
local sew = mw.uri.encode( s, "WIKI" )
t = mw.title.makeTitle( 2, s )
r = "== {{SPACE}} ==\n"
if t.exists then
r = r .. UPage
else
local e = mw.html.create( "code" )
:wikitext( s )
r = r .. tostring( e )
end
r = string.format( "%s\n%s", r, UList )
r = mw.ustring.gsub( r, "{{NICK}}", s )
r = mw.ustring.gsub( r, "{{NICK_}}", sew )
r = mw.ustring.gsub( r, "{{SPACE}}", space )
if r:find( "{{NICK%}}", 1, true ) then
r = mw.ustring.gsub( r, "{{NICK%%}}", mw.uri.encode( s ) )
end
if r:find( "{{SLANG}}", 1, true ) then
r = mw.ustring.gsub( r, "{{SLANG}}", slang() )
end
if r:find( "{{SPACES}}", 1, true ) then
r = mw.ustring.gsub( r, "{{SPACES}}", spacy( s, true ) )
end
if r:find( "{{STDPATH}}", 1, true ) then
local std = mw.site.server .. "/w/index.php?title="
r = mw.ustring.gsub( r, "{{STDPATH}}", std )
end
if r:find( "{{TOPIC+}}", 1, true ) then
local submit = button( space, s, frame )
r = mw.ustring.gsub( r, "{{TOPIC%+}}", submit )
end
else
local e = mw.html.create( "span" )
:attr( "class", "error" )
:wikitext( "user::Pageinfo invalid" )
r = tostring( e )
end
return r
end -- p.user()
return p