Open main menu
Home
Random
Log in
Settings
About TechInfoDepot
Disclaimers
TechInfoDepot
Search
Editing
Module:Large category TOC
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} local azupper = mw.text.split('ABCDEFGHIJKLMNOPQRSTUVWXYZ','') local azlower = mw.text.split('abcdefghijklmnopqrstuvwxyz','') local aejot = mw.text.split('aejot','') function p.scrollable(frame) return main('scrollable') end function p.collapsible(frame) return main('collapsible') end function p.aejot(frame) return main('aejot') end function main(toc_type) -- It should be much faster to only process these once, and just re use them as variables local pageurl = mw.title.getCurrentTitle():fullUrl() local toc = mw.message.new('Toc'):plain() -- Highest level div local toc_frame = mw.html.create('div') :addClass('plainlinks') :addClass('hlist') :addClass('toc') -- :attr('id','toc') :css({ display = 'block !important', background = 'WhiteSmoke', clear = 'both', width = '98%' }) -- Contains "Content: Top 0-9 A - Z" local header = toc_frame:tag('div') :attr('id','toctitle') :css('background','WhiteSmoke') -- Contains all the rest local body_wrapper local body = toc_frame:tag('div') :css('text-align', 'center') if toc_type == 'collapsible' then toc_frame:addClass('NavFrame') header:addClass('NavHead') body:addClass('NavContent') :css({ background = 'white', display = 'none' }) elseif toc_type == 'scrollable' then body:css({ ['overflow-x'] = 'scroll', ['overflow-y']= 'hidden', ['white-space'] = 'nowrap' }) end local header_content = {'<strong>',toc,':</strong>', ' [',pageurl,' Top]', ' [',pageurl,'?from=0 0β9]' } for _, v in ipairs(azupper) do table.insert(header_content,string.format(' [%s?from=%s %s]',pageurl,v,v)) end header:wikitext(table.concat(header_content)) local body_content = {} if toc_type == 'collapsible' then table.insert(body_content,'<b>#</b> ') body_wrapper = body:tag('code') :css('background','White') else table.insert(body_content,'['..pageurl..'?from=* <b>*</b>] <b>#</b> ') body_wrapper = body:tag('span') end 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,' β’ <b>'..letter..'</b> ') else table.insert(azlist,'<br /><b>'..letter..'</b> ') 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'..tostring(toc_frame) end return p
Summary:
Please note that all contributions to TechInfoDepot may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
TechInfoDepot:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Large category TOC/doc
(
edit
)