Difference between revisions of "Template:Page tabs"
(Created page with "{{#invoke:page tabs|main}}") |
m (Not sure that Lua will work in templates. just go with it.) |
||
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | {{# | + | --<!-- This module implements {{Page tabs}}.--> |
+ | |||
+ | local getArgs = require('Module:Arguments').getArgs | ||
+ | local yesno = require('Module:Yesno') | ||
+ | |||
+ | local p = {} | ||
+ | |||
+ | function p.main(frame) | ||
+ | local args = getArgs(frame) | ||
+ | return p._main(args) | ||
+ | end | ||
+ | |||
+ | function p._main(args) | ||
+ | local makeTab = p.makeTab | ||
+ | local root = mw.html.create() | ||
+ | root:wikitext(yesno(args.NOTOC) and '__NOTOC__' or nil) | ||
+ | local troot = root:tag('table') | ||
+ | troot | ||
+ | :css('background', args.Background or '#f8fcff') | ||
+ | :css('text-align', 'center') | ||
+ | :css('width', '100%') | ||
+ | :css('border', '0') | ||
+ | :css('border-spacing', '0') | ||
+ | :css('border-collapse', 'collapse') | ||
+ | :css('vertical-align', 'top') | ||
+ | local trow = troot:tag('tr') | ||
+ | if not args[1] then | ||
+ | args[1] = '{{{1}}}' | ||
+ | end | ||
+ | for i, link in ipairs(args) do | ||
+ | local thisPage | ||
+ | if tonumber(args.This) == i then | ||
+ | thisPage = true | ||
+ | end | ||
+ | trow:wikitext(makeTab(link, thisPage)) | ||
+ | end | ||
+ | trow:tag('td') | ||
+ | :css('border-bottom', '2px solid #a3b1bf') | ||
+ | :css('width', '3000px') | ||
+ | :wikitext(' ') | ||
+ | |||
+ | return tostring(root) | ||
+ | end | ||
+ | |||
+ | function p.makeTab(link, thisPage) | ||
+ | local tcell = mw.html.create() | ||
+ | tcell:tag('td') | ||
+ | :css('padding', '0.5em') | ||
+ | :css('background-color', thisPage and 'white' or '#cee0f2') | ||
+ | :cssText(not thisPage and 'font-size:90%' or nil) | ||
+ | :css('line-height', '0.95em') | ||
+ | :css('border', 'solid 2px #a3b1bf') | ||
+ | :cssText(thisPage and 'border-bottom:0') | ||
+ | :cssText(thisPage and 'font-weight:bold') | ||
+ | :css('white-space', 'nowrap') | ||
+ | :css('width', '20px') | ||
+ | :wikitext(link) | ||
+ | :done() | ||
+ | :tag('td') | ||
+ | :css('border-bottom', '2px solid #a3b1bf') | ||
+ | :css('width', '3px') | ||
+ | :css('padding', '0') | ||
+ | :wikitext(' ') | ||
+ | return tostring(tcell) | ||
+ | end | ||
+ | |||
+ | return p |
Latest revision as of 02:58, 17 February 2015
--
local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno')
local p = {}
function p.main(frame) local args = getArgs(frame) return p._main(args) end
function p._main(args) local makeTab = p.makeTab local root = mw.html.create() root:wikitext(yesno(args.NOTOC) and or nil) local troot = root:tag('table') troot :css('background', args.Background or '#f8fcff') :css('text-align', 'center') :css('width', '100%') :css('border', '0') :css('border-spacing', '0') :css('border-collapse', 'collapse') :css('vertical-align', 'top') local trow = troot:tag('tr') if not args[1] then args[1] = '{{{1}}}' end for i, link in ipairs(args) do local thisPage if tonumber(args.This) == i then thisPage = true end trow:wikitext(makeTab(link, thisPage)) end trow:tag('td') :css('border-bottom', '2px solid #a3b1bf') :css('width', '3000px') :wikitext(' ')
return tostring(root) end
function p.makeTab(link, thisPage) local tcell = mw.html.create() tcell:tag('td') :css('padding', '0.5em') :css('background-color', thisPage and 'white' or '#cee0f2') :cssText(not thisPage and 'font-size:90%' or nil) :css('line-height', '0.95em') :css('border', 'solid 2px #a3b1bf') :cssText(thisPage and 'border-bottom:0') :cssText(thisPage and 'font-weight:bold') :css('white-space', 'nowrap') :css('width', '20px') :wikitext(link) :done() :tag('td') :css('border-bottom', '2px solid #a3b1bf') :css('width', '3px') :css('padding', '0') :wikitext(' ') return tostring(tcell) end
return p