查看“模块:Navbox”的源代码
←
模块:Navbox
跳转到导航
跳转到搜索
因为以下原因,你没有权限 编辑此页:
你请求的操作仅限属于此用户组的用户执行:
用户
你可以查看和复制此页面的源代码。
-- Load necessary modules. require('strict') require('Module:Arguments') local getArgs local p = { } -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function union(t1, t2) local temp = {} for _, v in pairs(t1) do temp[v] = true end for _, v in pairs(t2) do temp[v] = true end local ret = {} for k in pairs(temp) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(prefix) local ret = { } for k in pairs(mw.getCurrentFrame():getParent().args) do if string.match(k, "^" .. prefix .. "[0-9]%d*$") then table.insert(ret, tonumber(string.sub(k, string.len(prefix) + 1))) end end table.sort(ret) return ret end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local Navbox = {} Navbox.__index = Navbox function Navbox.new(args) args = args or {} local obj = {} -- Set the arguments obj.args = args mw.logObject(obj) return setmetatable(obj, Navbox) end function Navbox:setParameters() local args = self.args self.title = args.title self.above = args.above self.rows = self:setRows() self.below = args.below self.image = args.image self.imageleft = args.imageleft self.subgroup = args[1] == 'child' end function Navbox:setRows() local args = self.args local nums = union(getArgNums('group'), getArgNums('list')) local t = { } for _,v in pairs(nums) do table.insert(t, { group = args['group' .. v], list = args['list' .. v] }) end return t end function Navbox:export() local root = mw.html.create():tag('div') if not self.subgroup then root:addClass('navbox') root:addClass('mw-collapsible') else root:addClass('navbox-subgroup') end if self.title then local title = root:tag('div') title :addClass('navbox-title') :wikitext(self.title) end local inner = root:tag('div') inner:addClass('navbox-inner') if not self.subgroup then inner:addClass('mw-collapsible-content') end if self.above then local above = inner:tag('div') above :addClass('navbox-above') :wikitext(self.above) end if self.imageleft then local imageleft = inner:tag('div') imageleft :addClass('navbox-image') :addClass('navbox-imageleft') :wikitext(self.imageleft) end if self.image then local image = inner:tag('div') image :addClass('navbox-image') :wikitext(self.image) end for _,v in ipairs(self.rows) do if v.list then if v.group then local group = inner:tag('div') group:addClass('navbox-group') group:wikitext(v.group) end local list = inner:tag('div') list:addClass('navbox-list') list:addClass('hlist') list:newline() list:wikitext(v.list) list:newline() end end if self.below then local below = inner:tag('div') below :addClass('navbox-below') :wikitext(self.below) end local navboxStyle = mw.getCurrentFrame():extensionTag( 'templatestyles', '', { src = 'Template:Navbox/styles.css' } ); local hlistStyle = mw.getCurrentFrame():extensionTag( 'templatestyles', '', { src = 'Template:Hlist/styles.css' } ); return navboxStyle .. hlistStyle .. tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- function p.navbox(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end local box = Navbox.new(getArgs(frame)) box:setParameters() return box:export() end return p
此页使用的模板:
模块:Navbox/doc
(
查看源代码
)
返回
模块:Navbox
。
导航菜单
个人工具
登录
命名空间
模块
讨论
English
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
批量上传文件
WinStory 门户
深色模式
工具
链入页面
相关更改
特殊页面
页面信息
获取短URL