Module:MovementTabs: Difference between revisionsGive feedback
created |
No edit summary |
||
| (4 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local lang_module = require("Module:Lang") | |||
function p.render(frame) | function p.render(frame) | ||
local args = frame:getParent().args | local args = frame:getParent().args | ||
local tabsStr = args[2] and args[2] or args[1] or "" | local tabsStr = args[2] and args[2] or args[1] or "" | ||
local tabs = mw.text.split(tabsStr, "%s*,%s*") | |||
local current = mw.title.getCurrentTitle().fullText | local current = mw.title.getCurrentTitle().fullText | ||
local | local rootPage = args[1] or current | ||
local lang_code = lang_module.get_lang_code() | |||
local lang_suffix = (lang_code ~= "en") and ("/" .. lang_code) or "" | |||
-- Remove lang suffix from root if present | |||
if lang_suffix ~= "" and rootPage:sub(-#lang_suffix) == lang_suffix then | |||
rootPage = rootPage:sub(1, -#lang_suffix - 1) | |||
end | |||
-- Create outer container using your new CSS class | |||
local html = mw.html.create("div"):addClass("hero-tabs") | |||
for _, tab in ipairs(tabs) do | for _, tab in ipairs(tabs) do | ||
local | local pageTarget | ||
local active = current == | if tab == "Overview" then | ||
pageTarget = rootPage .. lang_suffix | |||
else | |||
pageTarget = rootPage .. "/" .. tab .. lang_suffix | |||
end | |||
local pagePlain = tab == "Overview" and rootPage or (rootPage .. "/" .. tab) | |||
local active = current == pagePlain or current == pagePlain .. lang_suffix | |||
local div = html:tag("div"):addClass("hero-tab") | |||
if active then | |||
: | div:addClass("hero-tab-active") | ||
div:wikitext(string.format('[[:%s|%s]]', pageTarget, tab)) | |||
else | |||
div:wikitext(string.format('[[:%s|<span class="hero-tab-inactive">%s</span>]]', pageTarget, tab)) | |||
end | |||
:wikitext(string.format( | |||
end | end | ||