Modul:Good Articles
Tampilan
local p = {}
p.main = function (frame)
local NNN = 2 -- provide counts only over this threshold
local args = require("Module:Arguments").getArgs(frame)
-- expect args.shortcut e.g. GA/H, args.type e.g. History, args.text a long list
local subpage = frame:preprocess("{{SUBPAGENAME}}") -- I never did look up if there's a better way to do this...
local header = ""
local shortcuts = ""
local type = args.type or "error: specify type = Good Articles type"
local image = ''
if args.image then image = '[[' .. args.image .. '|22px|left]]' end
local sectioncount = 0
if (subpage == type or args.override) then -- I haven't figured out how to deal with missing shortcut so why pretend
shortcuts = frame:expandTemplate{ title = 'shortcut', args = { args.shortcut } }
header = frame:expandTemplate{ title = 'Wikipedia:Good articles/header', args = { shortcuts = shortcuts } }
end
local introtext = args.text or ''
replace = function(t)
local xxxx, links = mw.ustring.gsub(t, "(%[%[[^%[%]]-%]%])", "%1", nil) -- count how many links
if links >= NNN then
t = t .. "<small> (" .. tostring(links) .. " artikel)</small>"
end
return t .. "\n"
end
local sectionfooter = [===[
</div>
</div>
<!-- end of list -->]===]
-- comments in the text below are historical from the page's own markup
local output = header .. [===[<!-- only include header on this page -->
__NOTOC__
<div style="clear:both;">
<!-- DO NOT REMOVE THIS DIV, USED TO FORCE IE TO DISPLAY BACKGROUND FOR ARTS DIV -->
</div>
<div style="clear:both;">
<span id="]===] .. type .. [===[" ></span>
<div style="padding:5px 5px 8px 5px; background-color:#66CC66; text-align:left; font-size:larger;">]===] .. image .. [===[''']===] .. type .. [===['''</div>
<div style="text-align:left;">
</div>
</div>
]===] .. introtext
local section = 0
local finaltext = ''
repeat
local wrap = true
section = section + 1
local text = (args['section' .. tostring(section)] or args[section] or '')
local title = args['title' .. tostring(section)]
if (not title) then
if (text == '') then
break
else
local wrap = false
output = output .. text -- sections without headers go in unwrapped
end
else
local image = args['image' .. tostring(section)]
text = mw.ustring.gsub(text .. "\n=", "(==.-)\n%s*%f[=]", replace)
text = mw.ustring.sub(text,1,-2) -- ditching "=" mark from line above
if (image) then
image = '[[' .. image .. '|22px|left]]'
else
image = '' -- make section without an image
end
output = output .. [===[<div class="mw-collapsible" style="clear:both;padding: 4px;border: 1px solid #a2a9b1;font-size: 95%;">
<div style="padding:2px 2px 2px 30px; background-color:#FFFAF0; font-size:larger;font-weight: bold;">]===] .. image .. title .. [===[</div>
<div class="mw-collapsible-content" style="font-size: 100%">
==­ ==
]===] .. text .. sectionfooter
end
until false
return output
end
function p.subsection(frame)
if not mw.ustring.find( (frame.args[1] or frame:getParent().args[1] or '') ,'[[',1,true) then
return '<small>(0 artikel)</small>'
else
local linkList, count = mw.ustring.gsub(mw.text.trim(frame.args[1] or frame:getParent().args[1]), '\n', ' –\n')
return linkList .. '<small> (' .. (count + 1) .. ' artikel' .. ')</small>'
end
end
return p