Module:Sandbox/User:The Gaffer/Modules/Infobox Switch: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
The Gaffer (talk | contribs) No edit summary |
The Gaffer (talk | contribs) No edit summary |
||
Line 73: | Line 73: | ||
return p |
return p |
||
--Attribution: This module was taken from the Runescape wiki - https://runescape.wiki/w/Module:Switch_infobox - See changes there for a list of contributors |
|||
-- local contents = {} |
|||
-- local i = 1 |
|||
-- while args['item'..i] do |
|||
-- table.insert(contents, { text = args['text'..i] or ('Item '..i), |
|||
-- content = '\n' .. args['item'..i], |
|||
-- id = args['switch_id'..i] or i}) |
|||
-- i = i + 1 |
|||
-- end |
|||
-- local ret = mw.html.create('div') |
|||
-- :addClass('Gadget-switch-infobox') |
|||
-- :addClass('loading') |
|||
-- :tag('span') |
|||
-- :addClass('loading-button') |
|||
-- :addClass('button') |
|||
-- :wikitext('Loading...') |
|||
-- :done() |
|||
-- if args.float then |
|||
-- if args.float == 'left' then |
|||
-- ret:addClass('tleft') |
|||
-- :addClass('thumb') |
|||
-- elseif args.float == 'right' then |
|||
-- ret:addClass('tright') |
|||
-- :addClass('thumb') |
|||
-- end |
|||
-- end |
|||
-- local mah_triggers = ret:tag('div') |
|||
-- :addClass('switch-infobox-triggers') |
|||
-- local isSelect = yesno(args.select) |
|||
-- if isSelect then |
|||
-- mah_triggers:addClass('infobox-triggers-select') |
|||
-- elseif i > 6 and isSelect ~= false then |
|||
-- mah_triggers:addClass('infobox-triggers-select') |
|||
-- end |
|||
-- for i, v in ipairs(contents) do |
|||
-- mah_triggers :tag('span') |
|||
-- :addClass('trigger') |
|||
-- :addClass('button') |
|||
-- :addClass(i==1 and 'button-selected' or '') |
|||
-- :attr('data-id',v.id) |
|||
-- :wikitext(v.text) |
|||
-- :done() |
|||
-- ret :tag('div') |
|||
-- :addClass('item') |
|||
-- :addClass(i==1 and 'showing' or '') |
|||
-- :attr('data-id',v.id) |
|||
-- :wikitext(v.content) |
|||
-- :done() |
|||
-- end |
|||
-- return ret |
|||
-- end |
|||
-- return p |
Revision as of 20:54, 12 November 2024
Documentation for this module may be created at Module:Sandbox/User:The Gaffer/Modules/Infobox Switch/doc
local p = {}
local yn = require('Module:Yesno')
local hc = require('Module:Paramtest').has_content
-- Module access point for infobox switch
p._infobox_switch = function(args)
-- Prepare content list from arguments
local contents = {}
local i = 1
while args['item'..i] do
table.insert(contents, { text = args['text'..i] or ('Item '..i),
content = '\n' .. args['item'..i],
id = args['switch_id'..i] or i})
i = i + 1
end
-- Create the main table structure for the infobox switch
local structure = mw.html.create('table')
:addClass('infobox-switch')
:tag('caption')
:done();
-- Create the div for the buttons inside the caption
local buttons = structure:tag('div')
:attr('data-default-index', 1)
-- Add buttons for each item in contents
for i, v in ipairs(contents) do
buttons:tag('button')
:addClass('button')
:attr('data-switch-index', i)
:attr('data-switch-anchor', '#section' ..i)
:wikitext(v.text)
:done()
end
local content_body = structure:tag('tbody')
local default_content = contents[1] -- Assuming default index is 1
if default_content then
local row = content_body:tag('tr')
row:tag('td')
:attr('data-attr-param', 'param1')
:wikitext(default_content.content)
:done()
row:done()
end
-- Create the hidden resources section that contains all switchable content
local resources_div = structure:tag('div')
:addClass('infobox-switch-resources')
-- Add each content section to the resources div
for i, v in ipairs(contents) do
local param_div = resources_div:tag('div')
:attr('data-attr-param', 'param1')
param_div:tag('div')
:attr('data-attr-index', i)
:wikitext(v.content)
:done()
param_div:done()
end
-- Return the complete HTML structure
return tostring(structure)
end
p.infobox_switch = function(frame)
return frame:preprocess(p._infobox_switch(frame:getParent().args))
end
return p