No edit summary |
No edit summary |
||
Line 13: | Line 13: | ||
local ul = outerDiv:tag('ul') | local ul = outerDiv:tag('ul') | ||
:attr('class', 'tabs') | :attr('class', 'tabs') | ||
mw.log('title') | |||
mw.log(currentTitle) | |||
for i = 1, tabCount do | for i = 1, tabCount do | ||
local link = args['link' .. i] | local link = args['link' .. i] | ||
Line 30: | Line 32: | ||
local li = ul:tag('li') | local li = ul:tag('li') | ||
:wikitext(text) | :wikitext(text) | ||
if (link == currentTitle) then | |||
activeTab = i | mw.log('link') | ||
li:addClass('active') | mw.log(link) | ||
mw.log(currentTitle:sub(1, #link) == link) | |||
-- if (link == currentTitle) then | |||
if (args.org) then | |||
if (currentTitle:sub(1, #link) == link) then | |||
activeTab = i | |||
li:addClass('active') | |||
end | |||
else | |||
if (link == currentTitle) then | |||
activeTab = i | |||
li:addClass('active') | |||
end | |||
end | end | ||
end | end |
Revision as of 10:52, 21 September 2022
Documentation for this module may be created at Module:Tabs/doc
local getArgs = require('Module:Arguments').getArgs local Tabs = {} function Tabs.main(frame) local args = getArgs(frame) local tabCount = Tabs.number_of_tabs(args) local currentTitle = mw.title.getCurrentTitle().prefixedText local activeTab = nil local outerDiv = mw.html.create('div') :addClass('tabs-container') local ul = outerDiv:tag('ul') :attr('class', 'tabs') mw.log('title') mw.log(currentTitle) for i = 1, tabCount do local link = args['link' .. i] local tabName = args['name' .. i] local text -- If there is no name, then use last part of the link if tabName == nil and link ~= nil then tabName = mw.text.split(link, '/')[#mw.text.split(link, '/')] text = '[[' .. link .. '|' .. tabName .. ']]' elseif link ~= nil then text = '[[' .. link .. '|' .. tabName .. ']]' else text = tabName end local li = ul:tag('li') :wikitext(text) mw.log('link') mw.log(link) mw.log(currentTitle:sub(1, #link) == link) -- if (link == currentTitle) then if (args.org) then if (currentTitle:sub(1, #link) == link) then activeTab = i li:addClass('active') end else if (link == currentTitle) then activeTab = i li:addClass('active') end end end -- optionally add more tab bars beneath local extra = '' if activeTab and args['tabs' .. activeTab] ~= nil then extra = args['tabs' .. activeTab] end return tostring(outerDiv) .. extra end -- Computes the number of tabs requested function Tabs.number_of_tabs(args) args = args or {} local i = 0 while args['name' .. (i + 1)] ~= nil or args['link' .. (i + 1)] ~= nil do i = i + 1 end if i == 0 then error('The Tabs template needs name and link arguments.') end return i end return Tabs