Module:Large category TOC: Difference between revisions
Jump to navigation
Jump to search
Add toctitle class, since https://gerrit.wikimedia.org/r/#/c/297690/ |
Richardpruen (talk | contribs) m 1 revision imported |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 5: | Line 5: | ||
local aejot = mw.text.split('aejot','') | local aejot = mw.text.split('aejot','') | ||
local function main(toc_type) | |||
function main(toc_type) | |||
local toc_frame = mw.html.create('div') | local toc_frame = mw.html.create('div') | ||
:addClass('large-cat-toc') | |||
:addClass('plainlinks') | |||
:addClass('toc') | |||
-- :attr('id','toc') | |||
-- Contains "Content: Top 0-9 A - Z" | -- Contains "Content: Top 0-9 A - Z" | ||
local header = toc_frame:tag('div') | local header = toc_frame:tag('div') | ||
:attr('class', 'toctitle') | |||
-- Contains all the rest | -- Contains all the rest | ||
local body_wrapper | local body_wrapper | ||
local body = toc_frame:tag('div') | local body = toc_frame:tag('div') | ||
:addClass('large-cat-toc-body') | |||
local jumpy_collapse = mw.html.create('div') | |||
:addClass('large-cat-toc-jumpy-title') | |||
if toc_type == 'collapsible' then | if toc_type == 'collapsible' then | ||
toc_frame:addClass(' | toc_frame:addClass('mw-collapsible mw-collapsed') | ||
body:addClass('mw-collapsible-content') | |||
elseif toc_type == 'scrollable' then | elseif toc_type == 'scrollable' then | ||
toc_frame:addClass('large-cat-toc-scroll') | |||
end | end | ||
local header_content = {'< | local pageurl = mw.title.getCurrentTitle():fullUrl() | ||
local header_content = { | |||
string.format( | |||
'<span class="large-cat-toc-title">%s:</span> [%s Top] [%s?from=0 0–9]', | |||
mw.message.new('Toc'):plain(), | |||
pageurl, | |||
pageurl | |||
) | |||
} | |||
for _, v in ipairs(azupper) do | for _, v in ipairs(azupper) do | ||
table.insert(header_content,string.format(' [%s?from=%s %s]',pageurl,v,v)) | table.insert(header_content, string.format( | ||
' [%s?from=%s %s]', pageurl, v, v | |||
)) | |||
end | end | ||
if toc_type == 'collapsible' then | if toc_type == 'collapsible' then | ||
table. | jumpy_collapse:wikitext(table.concat(header_content)) | ||
header:node(jumpy_collapse) | |||
else | else | ||
table. | header:wikitext(table.concat(header_content)) | ||
end | end | ||
local body_content = {} | |||
if toc_type ~= 'collapsible' then | |||
table.insert(body_content, '<span class="large-cat-toc-anum">['..pageurl..'?from=* *]</span> ') | |||
end | |||
table.insert(body_content, '<span class="large-cat-toc-anum">#</span> ') | |||
body_wrapper = body:tag('span') | |||
for i=0,9 do | for i=0,9 do | ||
Line 90: | Line 77: | ||
if toc_type == 'aejot' or toc_type == 'scrollable' then | if toc_type == 'aejot' or toc_type == 'scrollable' then | ||
table.insert(azlist,' • < | table.insert(azlist,' • <span class="large-cat-toc-anum">'..letter..'</span> ') | ||
else | else | ||
table.insert(azlist,'<br />< | table.insert(azlist,'<br /><span class="large-cat-toc-anum">'..letter..'</span> ') | ||
end | end | ||
for _, v in ipairs(letterlist) do | for _, v in ipairs(letterlist) do | ||
table.insert(azlist,string.format(' [%s?from=%s%s %s%s] ',pageurl,letter,v,letter,v)) | table.insert(azlist, string.format( | ||
' [%s?from=%s%s %s%s] ', pageurl, letter, v, letter, v | |||
)) | |||
end | end | ||
return table.concat(azlist) | return table.concat(azlist) | ||
Line 102: | Line 91: | ||
for _, v in ipairs(azupper) do | for _, v in ipairs(azupper) do | ||
table.insert(body_content,atoz(v)) | table.insert(body_content, atoz(v)) | ||
end | end | ||
body_wrapper:wikitext(table.concat(body_content)) | body_wrapper:wikitext(table.concat(body_content)) | ||
return '__NOTOC__\n'..tostring(toc_frame) | return '__NOTOC__\n' .. mw.getCurrentFrame():extensionTag{ | ||
name = 'templatestyles', args = { src = 'Module:Large category TOC/styles.css' } | |||
} .. tostring(toc_frame) | |||
end | |||
function p.scrollable(frame) | |||
return main('scrollable') | |||
end | |||
function p.collapsible(frame) | |||
return main('collapsible') | |||
end | |||
function p.aejot(frame) | |||
return main('aejot') | |||
end | end | ||
return p | return p |
Latest revision as of 03:42, 5 December 2021
Documentation for this module may be created at Module:Large category TOC/doc
local p = {}
local azupper = mw.text.split('ABCDEFGHIJKLMNOPQRSTUVWXYZ','')
local azlower = mw.text.split('abcdefghijklmnopqrstuvwxyz','')
local aejot = mw.text.split('aejot','')
local function main(toc_type)
local toc_frame = mw.html.create('div')
:addClass('large-cat-toc')
:addClass('plainlinks')
:addClass('toc')
-- :attr('id','toc')
-- Contains "Content: Top 0-9 A - Z"
local header = toc_frame:tag('div')
:attr('class', 'toctitle')
-- Contains all the rest
local body_wrapper
local body = toc_frame:tag('div')
:addClass('large-cat-toc-body')
local jumpy_collapse = mw.html.create('div')
:addClass('large-cat-toc-jumpy-title')
if toc_type == 'collapsible' then
toc_frame:addClass('mw-collapsible mw-collapsed')
body:addClass('mw-collapsible-content')
elseif toc_type == 'scrollable' then
toc_frame:addClass('large-cat-toc-scroll')
end
local pageurl = mw.title.getCurrentTitle():fullUrl()
local header_content = {
string.format(
'<span class="large-cat-toc-title">%s:</span> [%s Top] [%s?from=0 0–9]',
mw.message.new('Toc'):plain(),
pageurl,
pageurl
)
}
for _, v in ipairs(azupper) do
table.insert(header_content, string.format(
' [%s?from=%s %s]', pageurl, v, v
))
end
if toc_type == 'collapsible' then
jumpy_collapse:wikitext(table.concat(header_content))
header:node(jumpy_collapse)
else
header:wikitext(table.concat(header_content))
end
local body_content = {}
if toc_type ~= 'collapsible' then
table.insert(body_content, '<span class="large-cat-toc-anum">['..pageurl..'?from=* *]</span> ')
end
table.insert(body_content, '<span class="large-cat-toc-anum">#</span> ')
body_wrapper = body:tag('span')
for i=0,9 do
table.insert(body_content,string.format(' [%s?from=%s %s]',pageurl,i,i))
end
local function atoz(letter)
local azlist = {}
local letterlist
if toc_type == 'aejot' then
letterlist = aejot
else
letterlist = azlower
end
if toc_type == 'aejot' or toc_type == 'scrollable' then
table.insert(azlist,' • <span class="large-cat-toc-anum">'..letter..'</span> ')
else
table.insert(azlist,'<br /><span class="large-cat-toc-anum">'..letter..'</span> ')
end
for _, v in ipairs(letterlist) do
table.insert(azlist, string.format(
' [%s?from=%s%s %s%s] ', pageurl, letter, v, letter, v
))
end
return table.concat(azlist)
end
for _, v in ipairs(azupper) do
table.insert(body_content, atoz(v))
end
body_wrapper:wikitext(table.concat(body_content))
return '__NOTOC__\n' .. mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Large category TOC/styles.css' }
} .. tostring(toc_frame)
end
function p.scrollable(frame)
return main('scrollable')
end
function p.collapsible(frame)
return main('collapsible')
end
function p.aejot(frame)
return main('aejot')
end
return p