Module:Portal toolbox: Difference between revisions
Appearance
Content deleted Content added
m rename function parameter for clarity |
rename functions for clarity; rename local variables for clarity; clean up |
||
Line 3: | Line 3: | ||
p = {} |
p = {} |
||
local function |
local function add_header_row(frame, tbl, text) |
||
local row = tbl:tag('tr') |
local row = tbl:tag('tr') |
||
row:tag('th') |
row:tag('th') |
||
Line 14: | Line 14: | ||
end |
end |
||
local function |
local function add_template_row(frame, tbl, pagename) |
||
local row = tbl:tag('tr') |
local row = tbl:tag('tr') |
||
row:tag('td') |
row:tag('td') |
||
Line 22: | Line 22: | ||
end |
end |
||
local function |
local function add_wikilink_row(frame, tbl, pagename, text, right) |
||
local row = tbl:tag('tr') |
local row = tbl:tag('tr') |
||
row:tag('td') |
row:tag('td') |
||
Line 30: | Line 30: | ||
end |
end |
||
local function |
local function add_section(frame, args, tbl, add_section_header, arg_prefix, page_prefix, row_function) |
||
if row_function == nil then |
if row_function == nil then |
||
row_function = |
row_function = add_wikilink_row |
||
end |
end |
||
local nums = {} |
local nums = {} |
||
Line 47: | Line 47: | ||
end |
end |
||
table.sort(nums) |
table.sort(nums) |
||
add_header_row(frame, tbl, add_section_header) |
|||
for _, num in ipairs(nums) do |
for _, num in ipairs(nums) do |
||
local arg_name = arg_prefix .. num |
local arg_name = arg_prefix .. num |
||
local |
local arg = args[arg_name] |
||
local pagename = page_prefix .. |
local pagename = page_prefix .. arg |
||
local text = args[arg_name .. 'text'] |
local text = args[arg_name .. 'text'] |
||
local right = args[arg_name .. 'right'] |
local right = args[arg_name .. 'right'] |
||
⚫ | |||
if text == nil then |
|||
text = a |
|||
end |
|||
⚫ | |||
end |
end |
||
end |
end |
||
Line 67: | Line 64: | ||
tbl:tag('caption') |
tbl:tag('caption') |
||
:wikitext('Portal toolbox') |
:wikitext('Portal toolbox') |
||
add_header_row(frame, tbl, 'Main portal page') |
|||
local rootTitle = mw.title.getCurrentTitle().rootPageTitle.subjectPageTitle |
local rootTitle = mw.title.getCurrentTitle().rootPageTitle.subjectPageTitle |
||
add_wikilink_row(frame, tbl, rootTitle.fullText) |
|||
add_section(frame, args, tbl, 'Static subpages', 'static', rootTitle.fullText .. '/') |
|||
add_section(frame, args, tbl, 'Dynamic subpages', 'dynamic', rootTitle.fullText .. '/') |
|||
add_section(frame, args, tbl, 'Templates', 'template', '', add_template_row) |
|||
add_section(frame, args, tbl, 'Other', 'other', '') |
|||
return tbl |
return tbl |
||
end |
end |
Revision as of 19:24, 13 June 2020
![]() | This module is rated as alpha. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome. |
This module implements {{Portal toolbox}}. Please see the template page for documentation.
local getArgs = require('Module:Arguments').getArgs
p = {}
local function add_header_row(frame, tbl, text)
local row = tbl:tag('tr')
row:tag('th')
:attr('colspan', '2')
:wikitext(text)
end
local function edit(frame, pagename)
return frame:expandTemplate{ title='edit', args={ pagename } }
end
local function add_template_row(frame, tbl, pagename)
local row = tbl:tag('tr')
row:tag('td')
:wikitext(frame:expandTemplate{ title='tl', args={ pagename } })
row:tag('td')
:wikitext(edit(frame, 'Template:' .. pagename))
end
local function add_wikilink_row(frame, tbl, pagename, text, right)
local row = tbl:tag('tr')
row:tag('td')
:wikitext('[[' .. pagename .. '|' .. (text or pagename) .. ']]')
row:tag('td')
:wikitext(right or edit(frame, pagename))
end
local function add_section(frame, args, tbl, add_section_header, arg_prefix, page_prefix, row_function)
if row_function == nil then
row_function = add_wikilink_row
end
local nums = {}
for k, _ in pairs(args) do
if type(k) == 'string' then
local num = k:match('^' .. arg_prefix .. '(%d+)$')
if num then
table.insert(nums, tonumber(num))
end
end
end
if #nums == 0 then
return
end
table.sort(nums)
add_header_row(frame, tbl, add_section_header)
for _, num in ipairs(nums) do
local arg_name = arg_prefix .. num
local arg = args[arg_name]
local pagename = page_prefix .. arg
local text = args[arg_name .. 'text']
local right = args[arg_name .. 'right']
row_function(frame, tbl, pagename, text or arg, right)
end
end
local function main(frame)
local args = getArgs(frame)
local tbl = mw.html.create('table')
:cssText('float:right; border:1px navy solid;')
tbl:tag('caption')
:wikitext('Portal toolbox')
add_header_row(frame, tbl, 'Main portal page')
local rootTitle = mw.title.getCurrentTitle().rootPageTitle.subjectPageTitle
add_wikilink_row(frame, tbl, rootTitle.fullText)
add_section(frame, args, tbl, 'Static subpages', 'static', rootTitle.fullText .. '/')
add_section(frame, args, tbl, 'Dynamic subpages', 'dynamic', rootTitle.fullText .. '/')
add_section(frame, args, tbl, 'Templates', 'template', '', add_template_row)
add_section(frame, args, tbl, 'Other', 'other', '')
return tbl
end
p.main = main
return p