Modul:Vorlage:Dokumentation: Unterschied zwischen den Versionen
te>PerfektesChaos (2017-11-11) |
te>PerfektesChaos (2018-04-24) |
||
Zeile 1: | Zeile 1: | ||
− | --[=[ | + | --[=[ 2018-04-24 |
{{Dokumentation}} | {{Dokumentation}} | ||
]=] | ]=] | ||
Zeile 19: | Zeile 19: | ||
return tostring( e ) | return tostring( e ) | ||
end -- fake() | end -- fake() | ||
+ | |||
+ | |||
+ | |||
+ | local function fatal( amend ) | ||
+ | local s = "Wikipedia:Vorlagenfehler/Vorlage:Dokumentation" | ||
+ | if amend then | ||
+ | s = string.format( "%s/%s", s, amend ) | ||
+ | end | ||
+ | return string.format( "[[Kategorie:%s]]", s ) | ||
+ | end -- fatal() | ||
Zeile 146: | Zeile 156: | ||
args = bottom } | args = bottom } | ||
if current.namespace == 10 then | if current.namespace == 10 then | ||
− | |||
local cats | local cats | ||
sub = current.text .. "/Meta" | sub = current.text .. "/Meta" | ||
cats = mw.title.makeTitle( 10, sub ) | cats = mw.title.makeTitle( 10, sub ) | ||
if cats.exists then | if cats.exists then | ||
− | r = r .. | + | local s = string.format( "[[%s|/Meta]]", |
+ | cats.prefixedText ) | ||
+ | local wl = mw.html.create( "code" ) | ||
+ | :wikitext( s ) | ||
+ | local e = mw.html.create( "div" ) | ||
+ | :addClass( "error" ) | ||
+ | :css( { background = "#FFFF00", | ||
+ | border = "#FF0000 2px solid", | ||
+ | margin = "1em", | ||
+ | padding = "5px" } ) | ||
+ | r = r .. tostring( e:wikitext( "Unterseite " ) | ||
+ | :node( wl ) | ||
+ | :wikitext( " nicht mehr unterstützt" ) ) | ||
+ | .. fatal() | ||
end | end | ||
end | end | ||
Zeile 167: | Zeile 189: | ||
:attr( "class", "error" ) | :attr( "class", "error" ) | ||
:wikitext( r ) | :wikitext( r ) | ||
− | r = | + | r = tostring( e ) .. fatal( "Intern" ) |
− | |||
− | |||
− | |||
end | end | ||
return r | return r |
Version vom 25. April 2018, 15:39 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Vorlage:Dokumentation/Doku erstellt werden
--[=[ 2018-04-24
{{Dokumentation}}
]=]
local function fake( frame, access )
local s = string.format( "[%s/%s %s]",
"https://de.wikipedia.org/wiki",
mw.uri.encode( access, "WIKI" ),
"Doku in der echten deWP" )
local e = mw.html.create( "div" )
e:css( "border", "#A000A0 2px solid" )
:css( "padding", "1em" )
:wikitext( "[[Datei:Redirectltr.png|#REDIRECT|link=]]" )
:node( mw.html.create( "span" )
:addClass( "redirectText" )
:wikitext( s ) )
return tostring( e )
end -- fake()
local function fatal( amend )
local s = "Wikipedia:Vorlagenfehler/Vorlage:Dokumentation"
if amend then
s = string.format( "%s/%s", s, amend )
end
return string.format( "[[Kategorie:%s]]", s )
end -- fatal()
local function findeSchalter( area )
local i = area:find( "__", 1, true )
local r
if i then
r = area:find( "__TOC__", i, true ) or
area:find( "__NOTOC__", i, true ) or
area:find( "__INHALTSVERZEICHNIS__", i, true ) or
area:find( "__KEIN_INHALTSVERZEICHNIS__", i, true ) or
area:find( "__KEININHALTSVERZEICHNIS__", i, true )
end
return r
end -- findeSchalter()
local function findeTemplateDataTOC( area )
local i = area:find( "emplateData", 3, true )
local r
if i then
if area:find( "TOC", i + 11, true ) then
local k
if i > 100 then
i = i - 100
else
i = 1
end
i, k = area:find( "%{%{%s*[tT]emplateData%s*|", i )
if i then
r = area:find( "|%s*TOC%s*=%s*1%s*[|}]", k - 1 )
end
end
end
return r
end -- findeTemplateDataTOC()
local function furnish( area )
local i = area:find( "==", 1, true )
local r
if i then
local seek = "==[^\n]+==\n"
local init, k, n
if i == 1 then
i, k = area:find( seek, 1 )
if i == 1 then
n = 1
end
end
seek = "\n" .. seek
if i and not n then
i, k = area:find( seek, i - 1 )
end
if i then
n = 1
init = i
i, k = area:find( seek, k - 1 )
if i then
n = 2
end
end
if n == 1 then
r = "__NOTOC__\n" .. area
elseif n == 2 then
local toc = mw.html.create( "div" )
:newline()
:addClass( "nonumtoc" )
:wikitext( "__TOC__" )
:newline()
toc = tostring( toc )
if init == 1 then
r = toc .. area
else
r = string.format( "%s%s%s",
area:sub( 1, init - 1 ),
toc,
area:sub( init ) )
end
end
end
return r or area
end -- furnish()
local function f( frame )
local bottom = { }
local current = mw.title.getCurrentTitle()
local doku = mw.title.makeTitle( current.namespace,
current.text .. "/Doku" )
local sub = current.prefixedText .. "/Doku"
local r
if doku.exists then
r = frame:expandTemplate{ title = sub }
if not findeSchalter( r ) then
if not findeTemplateDataTOC( r ) then
r = furnish( r )
end
end
bottom.lonely = "1"
else
local create = { action = "edit",
preload = "Vorlage:Dokumentation/preload-doku",
summary = "Neu angelegt",
redlink = "1" }
local path = { sub, mw.uri.buildQueryString( create ) }
local setup = frame:callParserFunction( "fullurl", path )
local button = { Typ = "progressive",
["Groß"] = "1",
Link = setup,
Text = "Neue Doku-Unterseite anlegen" }
r = frame:expandTemplate{ title = "MediaWiki-Button",
args = button }
if mw.site.server:match( "%.beta%.wmflabs%.org$" ) then
r = r .. fake( frame, sub )
elseif current.namespace == 10 then
r = string.format( "%s[[Kategorie:%s]]",
r,
"Vorlage:nicht dokumentiert" )
end
end
r = r .. frame:expandTemplate{ title = "Dokumentation/footer",
args = bottom }
if current.namespace == 10 then
local cats
sub = current.text .. "/Meta"
cats = mw.title.makeTitle( 10, sub )
if cats.exists then
local s = string.format( "[[%s|/Meta]]",
cats.prefixedText )
local wl = mw.html.create( "code" )
:wikitext( s )
local e = mw.html.create( "div" )
:addClass( "error" )
:css( { background = "#FFFF00",
border = "#FF0000 2px solid",
margin = "1em",
padding = "5px" } )
r = r .. tostring( e:wikitext( "Unterseite " )
:node( wl )
:wikitext( " nicht mehr unterstützt" ) )
.. fatal()
end
end
return r
end -- f()
local p = {}
function p.f( frame )
local lucky, r = pcall( f, frame )
if not lucky then
local e = mw.html.create( "span" )
:attr( "class", "error" )
:wikitext( r )
r = tostring( e ) .. fatal( "Intern" )
end
return r
end -- p.f()
return p