跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
学习园地
新人须知
教程整合
NEW!!!
主题编号使用指导
论坛百科
SS分区介绍
论坛设定
论坛文化
传奇殿堂
SS大事年表
SS大学图书馆
维基事务
基本规则
新手指南——技术
新手指南——内容
wiki语法手册
规范全集
搜索
搜索
外观
登录
个人工具
登录
查看“︁模块:Test2”︁的源代码
模块
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
←
模块:Test2
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local notCSS = { splitCount = true, initialTab = true, textDisplay = true, } local ordering = { tabIndices = {}, stgt = {}, stab = {}, sitm = {}, ctab = {}, citm = {}, } local CSSvalue = { stgt = {}, stab = {}, sitm = {}, ctab = {}, citm = {}, } local initialTab = nil local function replaceArgsName(str) str = str:gsub('^select', 'stab') str = str:gsub('^text', 'ctab') str = str:gsub('^sitem', 'sitm') str = str:gsub('^citem', 'citm') return str:gsub("^%u", string.lower) end local function fillWithDefaultCSS(contents, horizontal) local defaults = { stgt = {class = '',}, stab = {class = '',}, sitm = {class = '',}, ctab = {class = '',}, citm = {class = '',}, } if horizontal then contents['splitCount'] = contents['splitCount'] or '1' end contents['splitCount'] = contents['splitCount'] or '5' local elements = {'stgt', 'stab', 'sitm', 'ctab', 'citm'} for _, elem in ipairs(elements) do local resizeFlowDir = {height='y', width='x'} for size, dir in pairs(resizeFlowDir) do if CSSvalue[elem][size] then defaults[elem]['overflow-'..dir] = 'auto' end end for CSS, defaultValue in pairs(defaults[elem]) do CSSvalue[elem][CSS] = CSSvalue[elem][CSS] or defaultValue end end end local function renderSelect(contents) local tabs_pages = mw.html.create('div') :addClass('tabs_pages stab ' .. CSSvalue['stab']['class']) :css('grid-template-columns', string.rep('1fr ', tonumber(contents['splitCount']))) for _, CSS in ipairs(ordering['stab']) do tabs_pages:css(CSS, CSSvalue['stab'][CSS]) end for originalIndex, tabIndex in ipairs(ordering['tabIndices']) do local sitm = tabs_pages:tag('div') :addClass('tab sitm ' .. CSSvalue['sitm']['class']) :wikitext(contents['tab' .. tabIndex]) if originalIndex == initialTab then sitm:addClass('active') end for _, CSS in ipairs(ordering['sitm']) do sitm:css(CSS, CSSvalue['sitm'][CSS]) end end return tostring(tabs_pages) end local function renderContent(contents) local tabs_contents = mw.html.create('div') :addClass('tabs-contents ctab ' .. CSSvalue['ctab']['class']) for _, CSS in ipairs(ordering['ctab']) do tabs_contents:css(CSS, CSSvalue['ctab'][CSS]) end for originalIndex, tabIndex in ipairs(ordering['tabIndices']) do local citm = tabs_contents:tag('div') :addClass('tab-c citm ' .. CSSvalue['citm']['class']) :wikitext(contents['content' .. tabIndex]) if originalIndex == initialTab then citm:addClass('active') end for _, CSS in ipairs(ordering['citm']) do citm:css(CSS, CSSvalue['citm'][CSS]) end end return tostring(tabs_contents) end function p.selectTable(frame) local args = {} local page_args = frame:getParent().args; for k, v in pairs(page_args) do k = '' .. k if v ~= 'nil' then if notCSS[k] then args[k] = v else args[replaceArgsName(k)] = v end end end initialTab = tonumber(args['initialTab']) local validArgs = {stgt=true, stab=true, sitm=true, ctab=true, citm=true} for k, v in pairs(args) do k = '' .. k; v = '' .. v if not (notCSS[k] or k:match('^content%d+')) then if k:match('^tab%d+$') then table.insert(ordering['tabIndices'], tonumber(k:sub(4))) elseif validArgs[k:sub(1, 4)] then local prefix = k:sub(1, 4) local CSS = k:sub(5) CSSvalue[prefix][CSS] = v else CSSvalue['stgt'][k] = v end end end local horizontal = args['textDisplay']=='left' or args['textDisplay']=='right' fillWithDefaultCSS(args, horizontal) if horizontal then CSSvalue['stgt']['class'] = CSSvalue['stgt']['class'] .. ' hori' CSSvalue['stab']['class'] = CSSvalue['stab']['class'] .. ' hori' CSSvalue['ctab']['class'] = CSSvalue['stab']['class'] .. ' hori' end local elements = {'stgt', 'stab', 'sitm', 'ctab', 'citm'} for _, s in ipairs(elements) do for k, _ in pairs(CSSvalue[s]) do if k ~= 'class' then table.insert(ordering[s], k) end end table.sort(ordering[s]) end table.sort(ordering['tabIndices']) local mainDiv = mw.html.create('div') mainDiv:addClass('tabs-container stgt ' .. CSSvalue['stgt']['class']) for _, divCSS in ipairs(ordering['stgt']) do mainDiv:css(divCSS, CSSvalue['stgt'][divCSS]) end if args['textDisplay'] == 'top' or args['textDisplay'] == 'left' then mainDiv:node(renderContent(args)) mainDiv:node(renderSelect(args)) else mainDiv:node(renderSelect(args)) mainDiv:node(renderContent(args)) end return tostring(mainDiv) end return p
该页面使用的模板:
模块:Test2/doc
(
查看源代码
)
返回
模块:Test2
。