Module:ListSubpages: Difference between revisions
Appearance
imported>Xena Made it more versatile. Last edit! |
imported>Xena Solved the special character issue |
||
| Line 9: | Line 9: | ||
if page == '' then page = tostring(mw.title.getCurrentTitle()) end | if page == '' then page = tostring(mw.title.getCurrentTitle()) end | ||
-- get parent page name | -- get parent page name | ||
page = | page = frame:callParserFunction('TOPLEVELPAGE', {page}) | ||
-- get subpages | -- get subpages | ||
local allSubpages = frame:callParserFunction('SUBPAGES', { page, sep = " | local allSubpages = frame:callParserFunction('SUBPAGES', { page, sep = ",,,,,,,,,," }) | ||
allSubpages = mw.text.split(allSubpages, " | allSubpages = mw.text.split(allSubpages, ",,,,,,,,,,", true) | ||
local result = {} | local result = {} | ||
| Line 25: | Line 25: | ||
result[#result+1] = allSubpages[i] | result[#result+1] = allSubpages[i] | ||
result[#result+1] = [==[|<span style="color:white;">]==] | result[#result+1] = [==[|<span style="color:white;">]==] | ||
result[#result+1] = | result[#result+1] = frame:callParserFunction('SUBPAGENAME', {allSubpages[i]}) | ||
result[#result+1] = '</span>]]</div>' | result[#result+1] = '</span>]]</div>' | ||
end end | end end | ||
Revision as of 14:09, 4 September 2022
Documentation for this module may be created at Module:ListSubpages/doc
local p = {} --p stands for package
function p.list( frame )
local page = frame.args[1] or frame.args['page'] or tostring(mw.title.getCurrentTitle())
-- empty parameter check
if page == '' then page = tostring(mw.title.getCurrentTitle()) end
-- get parent page name
page = frame:callParserFunction('TOPLEVELPAGE', {page})
-- get subpages
local allSubpages = frame:callParserFunction('SUBPAGES', { page, sep = ",,,,,,,,,," })
allSubpages = mw.text.split(allSubpages, ",,,,,,,,,,", true)
local result = {}
-- add main page
result[#result+1] = [==[<div style="display:inline-block; position: relative; background-color: #d97308; width: 80px; color:white; text-align: center; padding:5px; border-radius: 5px; margin-right: 5px; ">[[]==]
result[#result+1] = page
result[#result+1] = [==[|<span style="color:white;">Main</span>]]</div>]==]
-- add subpages
if #allSubpages[1] > 0 then for i = 1, #allSubpages do
result[#result+1] = [==[<div style="display:inline-block; position: relative; background-color: #d97308; width: 80px; color:white; text-align: center; padding:5px; border-radius: 5px; margin-right: 5px; ">[[]==]
result[#result+1] = allSubpages[i]
result[#result+1] = [==[|<span style="color:white;">]==]
result[#result+1] = frame:callParserFunction('SUBPAGENAME', {allSubpages[i]})
result[#result+1] = '</span>]]</div>'
end end
return table.concat(result)
end
return p