跳转到内容
打开/关闭搜索
搜索
打开/关闭菜单
450
条目
804
文件
22
用户
9044
编辑
Blockland Wiki
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
打开/关闭外观设置菜单
无法加载外观设置。请检查您的网络连接并重试。
重试
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“︁模块:Navbox”︁的源代码
来自Blockland Wiki
查看
阅读
查看源代码
查看历史
相关页面
模块
讨论
更多操作
更多
工具
链入页面
相关更改
页面信息
Cargo数据
←
模块:Navbox
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
-- -- 此版本移除了 Navbar (VDE) 功能,其余逻辑保留。 -- local p = {} local getArgs -- lazily initialized local args local border local listnums local ODD_EVEN_MARKER = '\127_ODDEVEN_\127' local RESTART_MARKER = '\127_ODDEVEN0_\127' local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127' local function striped(wikitext) local orphanCat = '[[Category:Navbox orphans]]' if border == 'subgroup' and args.orphan ~= 'yes' then return wikitext .. orphanCat end local first, second = 'odd', 'even' if args.evenodd then if args.evenodd == 'swap' then first, second = second, first else first = args.evenodd second = first end end local changer if first == second then changer = first else local index = 0 changer = function (code) if code == '0' then index = 0 return first end index = index + 1 return index % 2 == 1 and first or second end end local regex = orphanCat:gsub('([%[%]])', '%%%1') return (wikitext:gsub(regex, ''):gsub(REGEX_MARKER, changer)) end local function processItem(item, nowrapitems) if not item then return nil end if item:sub(1, 2) == '{|' then return '\n' .. item ..'\n' end if nowrapitems == 'yes' then local lines = {} for line in (item .. '\n'):gmatch('([^\n]*)\n') do local prefix, content = line:match('^([*:;#]+)%s*(.*)') if prefix and not content:match('^<span class="nowrap">') then line = prefix .. '<span class="nowrap">' .. content .. '</span>' end table.insert(lines, line) end item = table.concat(lines, '\n') end if item:match('^[*:;#]') then return '\n' .. item ..'\n' end return item end -- -- Title row (已移除 Navbar 调用) -- local function renderTitleRow(tbl) if not args.title then return end local titleRow = tbl:tag('tr') if args.titlegroup then titleRow :tag('th') :attr('scope', 'row') :addClass('navbox-group') :addClass(args.titlegroupclass) :cssText(args.basestyle) :cssText(args.groupstyle) :cssText(args.titlegroupstyle) :wikitext(args.titlegroup) end local titleCell = titleRow:tag('th'):attr('scope', 'col') if args.titlegroup then titleCell:addClass('navbox-title1') end local titleColspan = 2 if args.imageleft then titleColspan = titleColspan + 1 end if args.image then titleColspan = titleColspan + 1 end if args.titlegroup then titleColspan = titleColspan - 1 end titleCell :cssText(args.basestyle) :cssText(args.titlestyle) :addClass('navbox-title') :attr('colspan', titleColspan) -- 这里移除了 renderNavBar(titleCell) 调用 titleCell :tag('div') :attr('id', mw.uri.anchorEncode(args.title)) :addClass(args.titleclass) :css('font-size', '114%') :css('margin', '0') -- 移除了原本为 VDE 留出的 4em 边距,使文字完全居中 :wikitext(processItem(args.title)) end -- 后续 renderAboveRow, renderListRow, renderBelowRow 等函数逻辑未变,直接合并处理 -- local function getAboveBelowColspan() local ret = 2 if args.imageleft then ret = ret + 1 end if args.image then ret = ret + 1 end return ret end local function renderAboveRow(tbl) if not args.above then return end tbl:tag('tr'):tag('td') :addClass('navbox-abovebelow') :addClass(args.aboveclass) :cssText(args.basestyle) :cssText(args.abovestyle) :attr('colspan', getAboveBelowColspan()) :tag('div') :attr('id', args.title and nil or mw.uri.anchorEncode(args.above)) :wikitext(processItem(args.above, args.nowrapitems)) end local function renderBelowRow(tbl) if not args.below then return end tbl:tag('tr'):tag('td') :addClass('navbox-abovebelow') :addClass(args.belowclass) :cssText(args.basestyle) :cssText(args.belowstyle) :attr('colspan', getAboveBelowColspan()) :tag('div') :wikitext(processItem(args.below, args.nowrapitems)) end local function renderListRow(tbl, index, listnum) local row = tbl:tag('tr') if index == 1 and args.imageleft then row:tag('td'):addClass('navbox-image'):addClass(args.imageclass):css('width', '1px'):css('padding', '0 2px 0 0'):cssText(args.imageleftstyle):attr('rowspan', #listnums):tag('div'):wikitext(processItem(args.imageleft)) end if args['group' .. listnum] then local groupCell = row:tag('th'):attr('scope', 'row'):addClass('navbox-group'):addClass(args.groupclass):cssText(args.basestyle):css('width', args.groupwidth or '1%'):cssText(args.groupstyle):cssText(args['group' .. listnum .. 'style']):wikitext(args['group' .. listnum]) end local listCell = row:tag('td') if args['group' .. listnum] then listCell:addClass('navbox-list1') else listCell:attr('colspan', 2) end if not args.groupwidth then listCell:css('width', '100%') end local rowstyle = (index % 2 == 1) and args.oddstyle or args.evenstyle local listText = args['list' .. listnum] local oddEven = ODD_EVEN_MARKER -- fix: 增加对 navbox-subgroup 样式的匹配,或者允许 listText 以 templatestyles div 开头 if listText:sub(1, 12) == '</div><table' or listText:find('navbox%-subgroup') then oddEven = listText:find('<th[^>]*"navbox%-title"') and RESTART_MARKER or 'odd' end listCell:css('padding', '0px'):cssText(args.liststyle):cssText(rowstyle):cssText(args['list' .. listnum .. 'style']):addClass('navbox-list'):addClass('navbox-' .. oddEven):addClass(args.listclass):addClass(args['list' .. listnum .. 'class']):tag('div'):css('padding', (index == 1 and args.list1padding) or args.listpadding or '0em 0.25em'):wikitext(processItem(listText, args.nowrapitems)) if index == 1 and args.image then row:tag('td'):addClass('navbox-image'):addClass(args.imageclass):css('width', '1px'):css('padding', '0 0 0 2px'):cssText(args.imagestyle):attr('rowspan', #listnums):tag('div'):wikitext(processItem(args.image)) end end -- 辅助函数:列表样式加载 -- local function addListStyles() local frame = mw.getCurrentFrame() local function _add(htmlclass, ts) local found = false for _, arg in ipairs({'bodyclass', 'listclass', 'titleclass', 'groupclass'}) do if (args[arg] or ''):find(htmlclass) then found = true break end end return found and frame:extensionTag{ name = 'templatestyles', args = { src = ts } } or '' end return _add('hlist', 'Flatlist/styles.css') .. _add('plainlist', 'Plainlist/styles.css') end function p._navbox(navboxArgs) args = navboxArgs listnums = {} for k, _ in pairs(args) do local listnum = type(k) == 'string' and k:match('^list(%d+)$') if listnum then table.insert(listnums, tonumber(listnum)) end end table.sort(listnums) border = mw.text.trim(args.border or args[1] or '') if border == 'child' then border = 'subgroup' end local tbl = mw.html.create('table'):addClass('nowraplinks'):addClass(args.bodyclass) if args.title and (args.state ~= 'plain' and args.state ~= 'off') then tbl:addClass('mw-collapsible'):addClass(args.state == 'collapsed' and 'mw-collapsed' or (args.state or 'autocollapse')) end tbl:css('border-spacing', 0) if border == 'subgroup' or border == 'none' then tbl:addClass('navbox-subgroup'):cssText(args.bodystyle):cssText(args.style) else tbl:addClass('navbox-inner'):css('background', 'transparent'):css('color', 'inherit') end renderTitleRow(tbl) renderAboveRow(tbl) for i, listnum in ipairs(listnums) do renderListRow(tbl, i, listnum) end renderBelowRow(tbl) local res = mw.html.create() local frame = mw.getCurrentFrame() res:tag('div'):addClass('navbox-styles'):addClass('nomobile'):wikitext(frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Navbox/styles.css'}}):done() if border == 'subgroup' then res:wikitext('</div>'):wikitext(addListStyles()):node(tbl):wikitext('<div>') else local nav = res:tag('div'):attr('role', 'navigation'):addClass(border ~= 'none' and 'navbox' or nil):addClass(args.navboxclass):cssText(args.bodystyle or args.style):wikitext(addListStyles()):node(tbl) end return striped(tostring(res)) end function p.navbox(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame, {wrappers = {'Template:Navbox', 'Template:Navbox subgroup'}}) return p._navbox(args) end return p
此页面嵌入的页面:
模块:Navbox/doc
(
查看源代码
)
返回
模块:Navbox
。
查看“︁模块:Navbox”︁的源代码
来自Blockland Wiki