Zmiany
m
--local navboxFramePrefixStart = '<table class="navbox '-- This module implements {{Navbox}}local navboxFramePrefixEnd = '><tr><td>'--local navboxFrameSuffix = '</td></tr></table>'
index local class = 'class= index + 1"'..table.concat(cc, ' ')..'"' return index % 2 table.insert(lists, { s = classes[i].s, e =classes[i].e, c = 1 and first or secondclass })
local regex = orphanCat:gsub('([%[%]])', '%%%1') return (wikitext:gsub(regex, ''):gsub(REGEX_MARKER, changer)) -- () omits gsub countlists
local function processItemadjustHListAndParity(itemclasses, oddParity, navboxOdd, nowrapitemsnavboxEven) if item:sub(local lists = {} for i = 1, 2) == '{|' then#classes do -- Applying nowrap to lines in a table does not make senseif classes[i].list then -- Add newlines to compensate for trim of x in |parm local needsParity = i >=x in a template#classes or classes[i + 1].list return '\n' .. item ..'\n' end -- copy all classes except navbox parity markers if nowrapitems local cc ={} local vlist = 'yes' thenfalse local lines fixed = {}false for line _, v in ipairs(item .classes[i]. '\n'c):gmatch('do if v == classFixedParity then fixed = true break end end for _, v in ipairs(classes[^\ni]*)\n'.c) do local prefix, content if v == classHList then -- remove elseif v == classNavboxColumn then vlist = line:matchtrue table.insert('^cc, v) elseif fixed or ([*:;#]+v ~= classNavboxOdd)%s*and (v ~= classNavboxEven) then table.*)'insert(cc, v) end end if prefix and needsParity then if not content:matchvlist then table.insert('^<span class="nowrap">'cc, classHList) end if not fixed then line table.insert(cc, oddParity and navboxOdd or navboxEven) if navboxOdd == prefix navboxEven then table.. '<span classinsert(cc, classFixedParity) end oddParity ="nowrap">' .. content .. '</span>'not oddParity end
item = table.concat(lines, '\n')
end
if item:match('^[*:;#]') then
return '\n' .. item ..'\n'
local function renderNavBarapply(titleCelltext, lists) local fragments = {} if args.navbar ~local start = 'off' and args1 for _, l in ipairs(lists) do table.navbar ~= 'plain' and not insert(not argsfragments, mw.name and mwustring.getCurrentFramesub():getParent():getTitle():gsub('/sandbox$'text, start, ''l.s-1) == 'Template:Navbox') then titleCell:wikitexttable.insert(navbar{ args.name, mini = 1fragments, fontstyle = (args.basestyle or '') .. ';' .. (argsl.titlestyle or ''c) .. ';background:none transparent;border:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;' })start = l.e + 1
--function makeClasses(classes, name) local valid = {} for _, v in ipairs(validExtraClasses) do valid[v] = true-- Title row end-- local function renderTitleRow(tbl)added = {} if local result = { "v2", "do-not args.title then return end-make-smaller" }
local titleRow = tbl:tagfor c in string.gmatch('tr'classes, "%S+")do if args.titlegroup valid[c] and not added[c] then titleRow :tagtable.insert('th') :attr('scope'result, 'row'c) :addClass('navbox-group') added[c] = true :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 #name > 0 then titleCell :csstable.insert(result, mw.uri.anchorEncode('border"navbox-left', '2px solid #fdfdfd'name-"..mw.getContentLanguage() :csslcfirst('width', '100%'name)))
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(argsreturn table.titleclass) :css('font-size', '114%') :cssconcat('margin'result, '0 4em') :wikitext(processItem(args.title)" ")
---- Above/Below rows-- local function getAboveBelowColspanunwrap(text, makeChild) local ret = 2 if args.imageleft then ret = ret not text or (#text < (#navboxFramePrefixStart + 1 end if args.image then ret = ret #navboxFramePrefixEnd + 1 end return retend local function renderAboveRow(tbl#navboxFrameSuffix)) if not args.above then return end tbl:tag('tr') :tag('td') :addClass('navbox-abovebelow')- za krótki text :addClass(args.aboveclass) :cssText(args.basestyle) :cssText(args.abovestyle) :attr('colspan', getAboveBelowColspan()) :tag('div') :wikitext(processItem(args.above, args.nowrapitems)) return text end local function renderBelowRow(tbl) if not argsstring.below then return end tbl:tagsub('tr') :tag('td') :addClass('navbox-abovebelow') :addClass(args.belowclass) :cssText(args.basestyle) :cssText(args.belowstyle) :attr('colspan'text, getAboveBelowColspan()) :tag('div') :wikitext(processItem(args.below1, args.nowrapitems)#navboxFramePrefixStart)~= navboxFramePrefixStart thenend --brak początku prefiksu-- List rows return text-- endlocal function renderListRow(tbl, index, listnum) local row ps, pe = tbl:tagstring.find('tr'text, navboxFramePrefixEnd, #navboxFramePrefixStart, true) if index == 1 and args.imageleft not pe then row :tag('td') :addClass('navbox-image') :addClass(args.imageclass) :css('width', '1px') -- Minimize widthbrak końca prefiksu :css('padding', '0px 2px 0px 0px') :cssText(args.imageleftstyle) :attr('rowspan', #listnums) :tag('div') :wikitext(processItem(args.imageleft)) return text
if args['group' .. listnum] then local groupCell gs, ge = row:tagstring.find('th'text, classNavboxInner, pe, true) if not gs then groupCell :attr('scope', 'row') :addClass('navbox-group') :addClass(args.groupclass) :cssText(args.basestyle) :css('width', args.groupwidth or '1%') -- If groupwidth not specified, minimize widthbrak klasy wnętrza navboksu groupCell :cssText(args.groupstyle) :cssText(args['group' .. listnum .. 'style']) :wikitext(args['group' .. listnum])return text
rowstyle table.insert(result, string.sub(text, pe+1, ss-1)) end table.insert(result, string.sub(text, se+1, #text)) local innerText = table.concat(result, "") if makeChild then -- trim generic category innerText = argsmw.ustring.gsub(innerText, "%[%[ *"..genericCategory.." *|.-%]%]", "") innerText = mw.ustring.gsub(innerText, "%[%[ *"..genericCategory..evenstyle" *%]%]", "")
local listText = args['list' .. listnum] local oddEven = ODD_EVEN_MARKERfunction wrap(text, classes, name, width) if listText:sub(1, 12) == '</div><table' not text then -- Assume list return text is for a subgroup navbox so no automatic striping for this row. oddEven = listText:find('<th[^>]*"navbox%-title"') and RESTART_MARKER or 'odd'
listCell
:css('padding', '0px')
:cssText(args.liststyle)
:cssText(rowstyle)
:cssText(args['list' .. listnum .. 'style'])
:addClass('navbox-list')
:addClass('navbox-' .. oddEven)
:addClass(args.listclass)
:tag('div')
:css('padding', (index == 1 and args.list1padding) or args.listpadding or '0em 0.25em')
:wikitext(processItem(listText, args.nowrapitems))
if index local result == 1 and args{} table.image then row :taginsert('td'result, navboxFramePrefixStart) :addClass table.insert(result, makeClasses('navbox-image'classes, name)) :addClass(args table.imageclass) :cssinsert('width'result, '1px"') -- Minimize if #width> 0 then :css table.insert('padding'result, '0px 0px 0px 2pxstyle="width: ') :cssText(args table.imagestyle) :attrinsert('rowspan'result, #listnumswidth) :tag table.insert(result, 'div;"') :wikitext(processItem(args.image))
local Iterate = function hasBorders(frame) local minimumIndex = tonumber(frame.args[minimumIndexArgName]) or 1 local maximumIndex = tonumber(frame.args[maximumIndexArgName]) or 30 local listOnlyTemplate = frame.args[listOnlyTemplateArgName] local listGroupTemplate = frame.args[listGroupTemplateArgName] or listOnlyTemplate local result = {} for _i = minimumIndex, key in ipairsmaximumIndex do local listArgName = string.format({'groupstyle'listArgFormat, 'basestyle'i) local groupArgName = string.format(groupArgFormat, 'abovestyle', 'belowstyle'}i) local listArg = frame:getParent() do.args[listArgName] or "" if tostring#listArg > 0 then local groupArg = frame:getParent().args[keygroupArgName]or "" local template = #groupArg > 0 and listGroupTemplate or listOnlyTemplate local repl = { [listTemplateArg] = unwrap(listArg, true):find, [groupTemplateArg] = groupArg, [indexTemplateArg] = tostring(i), } local text, _ = mw.ustring.gsub('border'template, 1"{{{(%w+)}}}", truerepl) then return truetable.insert(result, text)
local TableRow = function isIllegible(frame) local styleratio args = requireframe:getParent('Module:Color contrast')._styleratioargs return mw.text.jsonEncode({ [tableContentGroupName] = args[tableContentGroupName], [1] = args[1], [2] = args[2], [3] = args[3], [4] = args[4], [5] = args[5], [6] = args[6], [7] = args[7], [8] = args[8], [9] = args[9], })end,
for key, style in pairsTable = function(argsframe) do if tostring(key) local args = frame:matchgetParent("style$") then.args if styleratio{mw.text.unstripNoWiki function getNonEmpty(stylename)} < 4.5 then return true end local result = args[name] endreturn (result and (#result > 0)) and result or false
return falseend local function getTrackingCategories() local cats header = {} if needsHorizontalLists h = getNonEmpty(tableHeaderGroupArgName) then table.insert(cats, 'Navigational boxes without horizontal lists') end if hasBackgroundColors s = getNonEmpty(tableHeaderGroupWidthArgName) then table.insert(catsor tableHeaderDefaultGroupWidth, 'Navboxes using background colours') end if isIllegible() then table.insert(cats, 'Potentially illegible navboxes') end} if hasBorders() then table.insert(cats, 'Navboxes using borders') end return catsend local function renderTrackingCategoriesfakeParity(builder) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 then return end -- not in template space local subpage = title.subpageText if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end for _row, cat in ipairs(getTrackingCategories()col) do builder:wikitext('[[Category:' .. cat .. ']]')return nil
end ---- Main navbox tables--local function renderMainTable() local tbl = mw.html.createhorizontalParity('table'row, col) :addClassreturn ('nowraplinks'row % 2) :addClass(args.bodyclass) if args.title and (args.state ~= 'plain' = 0 and args.state ~= 'off') then tbl :addClass('collapsible') :addClass(args.state classNavboxEven or 'autocollapse')classNavboxOdd
tbl:cssfunction verticalParity('border-spacing'row, 0col) if border == 'subgroup' or border == 'none' then tbl :addClassreturn ('navbox-subgroup'col % 2) :cssText(args.bodystyle) :cssText(args.style) else -- regular navbox - bodystyle == 0 and style will be applied to the wrapper table tbl :addClass('navbox-inner') :css('background', 'transparent') :css('color', 'inherit')classNavboxEven or classNavboxOdd
tbl:cssText local parity = getNonEmpty(args.innerstyleparityTemplateArg) local selectParity renderTitleRow(tbl)if parity == tableParityHorizontal then selectParity = horizontalParity renderAboveRow(tbl)elseif parity == tableParityVertical then selectParity = verticalParity for i, listnum in ipairs(listnums) doelse renderListRow(tbl, i, listnum)selectParity = fakeParity
renderBelowRow(tbl) return tblfor i = 1, 9 doend function p local name = string._navboxformat(navboxArgstableHeaderArgFormat, i) args local columnTitle = navboxArgs for k, _ in pairsgetNonEmpty(argsname) do if typenot columnTitle and (k) i == 'string' 1) then local listnum = k:match('^list(%d+)$')return nil elseif not columnTitle then if listnum then table.insert(listnums, tonumber(listnum)) endbreak
table.sort(listnums) border local content = mw.text.trimgetNonEmpty(args.border or args[1] or ''tableContentArgName) if border == 'child' not content then border = 'subgroup'return nil
-- render the main body of the navbox local tbl = renderMainTable() -- render the appropriate wrapper around the navbox, depending on the border param local res data = mw.html.create() if border == 'none' then local nav = res:tag('div') :attr('role', 'navigation') :node(tbl) if argstext.title then nav:attrjsonDecode('aria-labelledby', mw.uri"[".anchorEncode(args.title)) else nav:attr('aria-label', 'Navbox') end elseif border == 'subgroup' then -- We assume that this navbox is being rendered in a list cell of a parent navbox, and is -- therefore inside a div with padding:0em 0content.25em. We start with a </div> to avoid the -- padding being applied, and at the end add a <div> to balance out the parent's </div> res :wikitext('</div>') :node(tbl) :wikitext('<div>'"false]") else local nav = res:tag('div') :attr('role', 'navigation') :addClass('navbox') :cssText(args.bodystyle) :cssText(args.style) :css('padding', '3px') :node(tbl) if args.title not data or not data[1] then nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title)) else nav:attr('aria-label', 'Navbox') endreturn nil
renderTrackingCategorieslocal buffer = mw.html.create(res"table") :addClass(classColumnsTable) return striped :addClass(tostring(res)'v2')-- to jest tylko tymczasowoend function p.navbox local headerRow = buffer:tag(frame"tr") if not getArgs header.h then getArgs = requireheaderRow:tag("th") :addClass(classNavboxAboveBelow) :addClass(tableHeaderClassGroup) :attr('Modulescope','col') :Argumentscss('width',header.s):wikitext(header.getArgsh)
args = getArgsfor i, columnTitle in ipairs(header) do headerRow:tag("th") :addClass(classNavboxAboveBelow) :addClass(string.format(frametableHeaderClassListFormat, {wrappers = {i)) :attr('Template:Navboxscope', 'Template:Navbox subgroupcol'}}) if frame.args.border then -- This allows Template :Navbox_subgroup to use {{#invoke:Navbox|navbox|border=...}}. args.border = frame.args.borderwikitext(columnTitle)
-- Read the arguments in the order they'll be output infor i, to make references number values in the right order.ipairs(data) do if not values then break end local _dataRow = buffer:tag("tr") _ = args if header.titleh then _ = args dataRow:tag("th") :addClass(classNavboxGroup) :addClass(string.aboveformat(tableRowClassGroupFormat, i)) :attr('scope','row') :wikitext(values[tableContentGroupName] or string.format("%d. {{{%s}}}", i, tableContentGroupName)) end for i = 1j, 20 columnTitle in ipairs(header) do _ local cell = args[dataRow:tag("grouptd" ) :addClass(classNavboxColumn) :addClass(string.. tostringformat(tableRowClassListFormat, i, j))] _ = args :wikitext(values[j] or string.format("list%d. {{{%d}}}" .. tostring, i, j)) local parity = selectParity(i, j) if parity then cell :addClass(classFixedParity)] :addClass(parity) end end
_ = args.below return p._navboxtostring(argsbuffer)end,
return p}
validExtraClasses+nav-temas
local p nameTemplateArg = {}"nazwa"local classesTemplateArg = "klasa"local widthTemplateArg = "szerokość"local parityTemplateArg = "parzystość"local listTemplateArg = "spis"local groupTemplateArg = "opis"local indexTemplateArg = "n"
local navbar minimumIndexArgName = require('Module:Navbar')._navbar"min"local getArgs -- lazily initializedmaximumIndexArgName = "max"local listOnlyTemplateArgName = "spis"local listGroupTemplateArgName = "opis"
local argslocal borderlocal listnums genericCategory = {}local ODD_EVEN_MARKER = '\127_ODDEVEN_\127'local RESTART_MARKER = '\127_ODDEVEN0_\127'local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127'"Kategoria:Szablony nawigacyjne"
local function striped(wikitext)listArgFormat = "spis%d"local groupArgFormat = "opis%d" local classNavboxInner = "navbox-inner"local classNavbox = "navbox"local classNavboxSubGroup = "navbox-subgroup"local classColumnsTable = "navbox-columns-table"local classNavboxList = "navbox-list"local classNavboxGroup = "navbox-group" local classNavboxColumn = "navbox-column"local classNavboxOdd = "navbox- Return wikitext with markers replaced for odd/"local classNavboxEven = "navbox-even striping."local classNavboxAboveBelow = "navbox-abovebelow"local classFixedParity = "fixed-parity"local classHList = "hlist" local paritySwapped = "zamień"local parityEven = "parzyste"local parityOdd = "nieparzyste"local parityOff = "brak" local tableHeaderGroupArgName = "nagłówek opisu"local tableHeaderGroupWidthArgName = "szerokość opisu"local tableHeaderArgFormat = "nagłówek%d"local tableContentArgName = "zawartość"local tableContentGroupName = "opis"local tableHeaderClassGroup = "opis"local tableRowClassGroupFormat = "opis%d"local tableHeaderClassListFormat = "spis%d"local tableRowClassListFormat = "wpis-%d-%d" local tableParityHorizontal = "poziomo"local tableParityVertical = "pionowo" local tableHeaderDefaultGroupWidth = "10em" local validExtraClasses = { "ll-script", "ll-script-dl- Child (subgroup) navboxes are flagged with a category that is removedhlist", "kz-linia", "nav- by parent navboxes. The result is that the category shows all pagesteams", "hnowrap-ul- where a child navbox is not contained in a parent navbox.ul"} function findNavboxClasses(text) local orphanCat classes = '[[Category:Navbox orphans]]'{} if border local i =1 while true do local s, e, c = 'subgroup' and argsmw.ustring.orphan ~find(text, "class%s*= 'yes' then %s*\"([^\"]-- No change; striping occurs in outermost %f[%a]navbox.%f[^%a][^\"]*)\"", i) return wikitext .. orphanCatif not c then break end local first, second cc = 'odd'mw.text.split(c, 'even'"%s+") if args.evenodd then for _, v in ipairs(cc) do if args.evenodd (v == classNavbox) or (v == classNavboxSubGroup) or (v == 'swap' classColumnsTable) then first table.insert(classes, second { list= second, firstfalse }) else break first elseif (v == classNavboxList) or (v == argsclassNavboxColumn) then table.evenoddinsert(classes, { list=true, c=cc, s=s, e=e }) break second = firstend
end
i = e + 1
end
return classesend function adjustHList(classes) local changerlists = {} for i = 1, #classes do if first classes[i].list then local needsParity =i >= second then#classes or classes[i + 1].list changer = first else -- copy all classes except hlist local index cc = 0{} changer local vlist = function false for _, v in ipairs(codeclasses[i].c)do if code v == '0' classNavboxColumn then -- Current occurrence is for a group before a nested vlist = true table.insert(cc, v) -- Set it to first as a valid although pointless classelseif (v ~= classHList) then table.insert(cc, v) -- The next occurrence will be the first row after a titleend end if needsParity and not vlist then -- in a subgroup and will also be first.restore or update missing hlist index = 0 return firsttable.insert(cc, classHList)
end
end
end
end
end
local class = 'class="'..table.concat(cc, ' ')..'"' table.insert(lineslists, { s = classes[i].s, e = classes[i].e, linec = class })
end
end
return itemlists
end
end
table.insert(fragments, mw.ustring.sub(text, start, #text)) return table.concat(fragments, "")
end
end
end
end
end
end
local listCell ss, se = row:tagstring.find('td'text, navboxFrameSuffix, ge, true) if args['group' .. listnum] not se then listCell :css('text-align', 'left') :css('border-left-width', '2px') :css('border-left-style', 'solid') elsebrak sufiksu listCell:attr('colspan', 2)return text
end
while true do local s, e = string.find(text, navboxFrameSuffix, se, true) if not args.groupwidth s then -- brak następnego sufixu break end listCell:css('width', '100%') -- znalazłem kolejny sufix ss = s se = e
end
local rowstyle -- usually nil so cssText(rowstyle) usually adds nothingresult = {} if index % 2 == makeChild then table.insert(result, string.sub(text, pe+1, gs-1 then)) table.insert(result, classNavboxSubGroup) rowstyle = argstable.insert(result, string.oddstylesub(text, ge+1, ss-1))
else
end
return innerText
end
end
end
table.insert(result, navboxFramePrefixEnd)
table.insert(result, text)
table.insert(result, navboxFrameSuffix)
return table.concat(result, "")
end
return {---- Tracking categories-- Finish = function(frame) local function needsHorizontalListsparity = frame:getParent().args[parityTemplateArg] if border local text == 'subgroup' wrap( unwrap(frame.args and frame.args[1] or frame[1], false), frame:getParent().args[classesTemplateArg] or "", frame:getParent().args[nameTemplateArg] or "", frame:getParent().tracking args[widthTemplateArg] or "" ) if not text then return text end local classes =findNavboxClasses(text) if #classes <= 'no' 0 then return falsetext
end
local listClasses oddParity = parity ~= {paritySwapped ['plainlist'] local navboxOdd = true, ['hlist'] parity = true, ['hlist hnum'] = true,parityEven and classNavboxEven or classNavboxOdd ['hlist hwrap'] local navboxEven = true, ['hlist vcard'] parity = true, ['vcard hlist'] = true, ['hlist vevent'] = true, } return not (listClasses[args.listclass] parityOdd and classNavboxOdd or listClasses[args.bodyclass])endclassNavboxEven
local function hasBackgroundColorslists = parity == parityOff and adjustHList(classes) for _, key in ipairs or adjustHListAndParity({'titlestyle', 'groupstyle'classes, 'basestyle'oddParity, 'abovestyle'navboxOdd, 'belowstyle'}navboxEven) do if tostring(args[key]):find('background', 1, true) #lists <= 0 then return true endtext
end
return apply(text, lists)end,
end
end
return table.concat(result, "")end,
end
end
end
end
end
end
header[i] = columnTitle
end
end
end
end
end
end