Modul:Vorlage:Dokumentation
Version vom 6. November 2017, 20:54 Uhr von te>PerfektesChaos (2017-11-06)
--[=[ 2017-11-06
Documentation
Lua-Fehler: Der Prozess konnte nicht erstellt werden: proc_open(/dev/null): failed to open stream: Operation not permitted ]=]
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( "#REDIRECT" ) :node( mw.html.create( "span" ) :addClass( "redirectText" ) :wikitext( s ) ) return tostring( e )
end -- fake()
local function findeSchalter( area )
local i = area:find( "__", 1, true ) local r if i then
r = area:find( "
", i, true ) or
area:find( "", i, true ) or area:find( "", i, true ) or area:find( "", i, true ) or area:find( "", 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 = "\n" .. area elseif n == 2 then if init == 1 then r = "\n" .. area else r = string.format( "%s\n%s", area:sub( 1, init - 1 ), 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", r, "Vorlage:nicht dokumentiert" ) end end r = r .. frame:expandTemplate{ title = "Dokumentation/footer", args = bottom } if current.namespace == 10 then -- LEGACY local cats sub = current.text .. "/Meta" cats = mw.title.makeTitle( 10, sub ) if cats.exists then r = r .. frame:expandTemplate{ title = sub } 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 = string.format( "%s", tostring( e ), "Wikipedia:Vorlagenfehler", "Vorlage:Dokumentation/Intern" ) end return r
end -- p.f()
return p