Changes

no edit summary
Line 4: Line 4:  
-- == Helper functions ==
 
-- == Helper functions ==
 
--[[ libraries ]]
 
--[[ libraries ]]
local common = require("Module:Common")
+
local U = require("Module:Core")
local style = require("Module:Styles")
     −
local colors = style.main_colors
+
local colors = U.main_colors
    
if mw.text == nil then mw.text = require("Module:MW.text") end
 
if mw.text == nil then mw.text = require("Module:MW.text") end
Line 52: Line 51:  
     tmp['index'] = v
 
     tmp['index'] = v
 
     tmp['list'] = list[v]
 
     tmp['list'] = list[v]
     if common.isset(group[v]) then tmp['group'] = group[v] end
+
     if U.isset(group[v]) then tmp['group'] = group[v] end
     if common.isset(liststyle[v]) then tmp['liststyle'] = liststyle[v] end
+
     if U.isset(liststyle[v]) then tmp['liststyle'] = liststyle[v] end
     if common.isset(groupstyle[v]) then tmp['groupstyle'] = groupstyle[v] end
+
     if U.isset(groupstyle[v]) then tmp['groupstyle'] = groupstyle[v] end
 
     ret[#ret+1] = tmp
 
     ret[#ret+1] = tmp
 
   end
 
   end
Line 75: Line 74:  
     -- new, independent navbox - create a frame around it
 
     -- new, independent navbox - create a frame around it
 
     ret[#ret+1] = '<table class="navbox'
 
     ret[#ret+1] = '<table class="navbox'
     if common.isset(frame.args['bodyclass']) then ret[#ret+1] = " " .. frame.args['bodyclass'] end
+
     if U.isset(frame.args['bodyclass']) then ret[#ret+1] = " " .. frame.args['bodyclass'] end
 
     ret[#ret+1] = '" cellspacing="0" style="'
 
     ret[#ret+1] = '" cellspacing="0" style="'
     if common.isset(colors[ttype]) then ret[#ret+1] = 'background:' .. colors[ttype]['background'] .. ';' end
+
     if U.isset(colors[ttype]) then ret[#ret+1] = 'background:' .. colors[ttype]['background'] .. ';' end
 
     -- ret[#ret+1] = 'border:1px solid #aaa; padding:1px;width:100%;vertical-align:middle;margin:auto;clear:both;font-size:88%;text-align:center;'
 
     -- ret[#ret+1] = 'border:1px solid #aaa; padding:1px;width:100%;vertical-align:middle;margin:auto;clear:both;font-size:88%;text-align:center;'
     style.add(ret, frame.args['bodystyle'])
+
     U.addStyle(ret, frame.args['bodystyle'])
     style.add(ret, frame.args['style'])
+
     U.addStyle(ret, frame.args['style'])
 
     ret[#ret+1] = '"><tr><td style="padding: 2px;">'
 
     ret[#ret+1] = '"><tr><td style="padding: 2px;">'
 
   end
 
   end
Line 86: Line 85:  
   -- The actual navbox table starts here
 
   -- The actual navbox table starts here
 
   ret[#ret+1] = '<table cellspacing="0" class="nowraplinks'
 
   ret[#ret+1] = '<table cellspacing="0" class="nowraplinks'
   if common.isset(frame.args['title']) and frame.args['state'] ~= "plain" and frame.args['state'] ~= "off" then
+
   if U.isset(frame.args['title']) and frame.args['state'] ~= "plain" and frame.args['state'] ~= "off" then
 
     --TODO: If there is support for collapsible and autocollapse, swap comments here
 
     --TODO: If there is support for collapsible and autocollapse, swap comments here
 
     --ret[#ret+1] = ' collapsible '
 
     --ret[#ret+1] = ' collapsible '
 
     ret[#ret+1] = ' mw-collapsible '
 
     ret[#ret+1] = ' mw-collapsible '
     if common.isset(frame.args['state']) then
+
     if U.isset(frame.args['state']) then
 
       ret[#ret+1] = frame.args['state']
 
       ret[#ret+1] = frame.args['state']
 
     else
 
     else
Line 99: Line 98:  
   if border == "subgroup" or border == "child" or border == "none" then
 
   if border == "subgroup" or border == "child" or border == "none" then
 
     ret[#ret+1] = ' navbox-subgroup" style="'
 
     ret[#ret+1] = ' navbox-subgroup" style="'
     if common.isset(colors[ttype]) then table.insert(ret, 'background:' .. colors[ttype]['background'] .. ';') end
+
     if U.isset(colors[ttype]) then table.insert(ret, 'background:' .. colors[ttype]['background'] .. ';') end
 
     -- ret[#ret+1] = 'margin:auto;clear:both;font-size:88%;text-align:center;width:100%;vertical-align:middle;'
 
     -- ret[#ret+1] = 'margin:auto;clear:both;font-size:88%;text-align:center;width:100%;vertical-align:middle;'
 
     ret[#ret+1] = 'width: 100%;'
 
     ret[#ret+1] = 'width: 100%;'
     style.add(ret, frame.args['bodystyle'])
+
     U.addStyle(ret, frame.args['bodystyle'])
     style.add(ret, frame.args['style'])
+
     U.addStyle(ret, frame.args['style'])
 
     ret[#ret+1] = '">'
 
     ret[#ret+1] = '">'
 
   else
 
   else
Line 131: Line 130:  
local function build_title(frame, border, ttype)
 
local function build_title(frame, border, ttype)
 
   local ret = {""}
 
   local ret = {""}
   if not common.isset(frame.args['title']) then return '' end
+
   if not U.isset(frame.args['title']) then return '' end
    
   table.insert(ret, '<tr>')
 
   table.insert(ret, '<tr>')
   if common.isset(frame.args['titlegroup']) then
+
   if U.isset(frame.args['titlegroup']) then
 
     -- in case that there's a group for title
 
     -- in case that there's a group for title
 
     ret[#ret+1] = '<td class="navbox-group" style="'
 
     ret[#ret+1] = '<td class="navbox-group" style="'
     if common.isset(colors[ttype]) then ret[#ret+1] = 'background:' .. colors[ttype]['group'] .. ';' end
+
     if U.isset(colors[ttype]) then ret[#ret+1] = 'background:' .. colors[ttype]['group'] .. ';' end
 
     ret[#ret+1] = 'padding-left:1em;padding-right:1em;white-space:nowrap;text-align:right;'
 
     ret[#ret+1] = 'padding-left:1em;padding-right:1em;white-space:nowrap;text-align:right;'
     style.add(ret, frame.args['basestyle'])
+
     U.addStyle(ret, frame.args['basestyle'])
     style.add(ret, frame.args['groupstyle'])
+
     U.addStyle(ret, frame.args['groupstyle'])
     style.add(ret, frame.args['titlegroupstyle'])
+
     U.addStyle(ret, frame.args['titlegroupstyle'])
 
     ret[#ret+1] = '">\n'
 
     ret[#ret+1] = '">\n'
 
     ret[#ret+1] = frame.args['titlegroup']
 
     ret[#ret+1] = frame.args['titlegroup']
Line 147: Line 146:     
     ret[#ret+1] = '<th style="border-left:2px solid '
 
     ret[#ret+1] = '<th style="border-left:2px solid '
     ret[#ret+1] = common.cv(common.isset(colors[ttype]), colors[ttype]['background'], '#fdfdfd')
+
     ret[#ret+1] = U.cv(U.isset(colors[ttype]), colors[ttype]['background'], '#fdfdfd')
 
     ret[#ret+1] = ';width:100%;'
 
     ret[#ret+1] = ';width:100%;'
 
   else
 
   else
Line 153: Line 152:  
     table.insert(ret, '<th style="')
 
     table.insert(ret, '<th style="')
 
   end
 
   end
   if common.isset(colors[ttype]) then ret[#ret+1] = 'background:' .. colors[ttype]['title'] .. ';' end
+
   if U.isset(colors[ttype]) then ret[#ret+1] = 'background:' .. colors[ttype]['title'] .. ';' end
 
   ret[#ret+1] = 'text-align:center;'
 
   ret[#ret+1] = 'text-align:center;'
   style.add(ret, frame.args['basestyle'])
+
   U.addStyle(ret, frame.args['basestyle'])
   style.add(ret, frame.args['titlestyle'])
+
   U.addStyle(ret, frame.args['titlestyle'])
 
   ret[#ret+1] = '"'
 
   ret[#ret+1] = '"'
    
   -- calculate the colspan for title
 
   -- calculate the colspan for title
 
   local cs = 2 -- 2 because each list element with group occupies 2 columns
 
   local cs = 2 -- 2 because each list element with group occupies 2 columns
   if common.isset(frame.args['imageleft']) then cs = cs + 1 end
+
   if U.isset(frame.args['imageleft']) then cs = cs + 1 end
   if common.isset(frame.args['image']) then cs = cs + 1 end
+
   if U.isset(frame.args['image']) then cs = cs + 1 end
   if common.isset(frame.args['titlegroup']) then cs = cs - 1 end -- if there was a titlegroup, it occupies one cell already
+
   if U.isset(frame.args['titlegroup']) then cs = cs - 1 end -- if there was a titlegroup, it occupies one cell already
 
   ret[#ret+1] = ' colspan = "' .. cs .. '"'
 
   ret[#ret+1] = ' colspan = "' .. cs .. '"'
 
   ret[#ret+1] = ' class="navbox-title">'
 
   ret[#ret+1] = ' class="navbox-title">'
Line 186: Line 185:  
       local q = {""}
 
       local q = {""}
 
       q[#q+1] = 'text-align:left;'
 
       q[#q+1] = 'text-align:left;'
       style.add(q, frame.args['basestyle'])
+
       U.addStyle(q, frame.args['basestyle'])
       style.add(q, frame.args['titlestyle'])
+
       U.addStyle(q, frame.args['titlestyle'])
 
       q[#q+1] = 'border:none;'
 
       q[#q+1] = 'border:none;'
 
       args['fontstyle'] = table.concat(q)
 
       args['fontstyle'] = table.concat(q)
Line 201: Line 200:  
   -- the title starts here
 
   -- the title starts here
 
   ret[#ret+1] = '<span'
 
   ret[#ret+1] = '<span'
   if common.isset(frame.args['titleclass']) then ret[#ret+1] = ' class="' .. frame.args['titleclass'] .. '"' end
+
   if U.isset(frame.args['titleclass']) then ret[#ret+1] = ' class="' .. frame.args['titleclass'] .. '"' end
   ret[#ret+1] = ' style="font-size:' .. common.cv((border == "subgroup" or border == "child" or border == "none"), '100%', '110%') .. ';">\n'
+
   ret[#ret+1] = ' style="font-size:' .. U.cv((border == "subgroup" or border == "child" or border == "none"), '100%', '110%') .. ';">\n'
    
   ret[#ret+1] = frame.args['title']
 
   ret[#ret+1] = frame.args['title']
Line 215: Line 214:  
local function build_above_below(frame, border, ttype, text, rstyle, sep)
 
local function build_above_below(frame, border, ttype, text, rstyle, sep)
 
   local ret = {''}
 
   local ret = {''}
   if common.isset(text) then
+
   if U.isset(text) then
 
     if sep then -- if separation is needed
 
     if sep then -- if separation is needed
 
       table.insert(ret, '<tr style="height: 2px;"><td></td></tr>')
 
       table.insert(ret, '<tr style="height: 2px;"><td></td></tr>')
Line 223: Line 222:  
     ret[#ret+1] = '<tr>'
 
     ret[#ret+1] = '<tr>'
 
     ret[#ret+1] = '<td class="navbox-abovebelow" style="'
 
     ret[#ret+1] = '<td class="navbox-abovebelow" style="'
     if common.isset(colors[ttype]) then
+
     if U.isset(colors[ttype]) then
 
       -- both above and below share same default color from 'colors' table
 
       -- both above and below share same default color from 'colors' table
       ret[#ret+1] = 'background:' .. common.cv((border ~= "subgroup" and border ~= "child"), colors[ttype]['above'], colors[ttype]['group']) .. ';'
+
       ret[#ret+1] = 'background:' .. U.cv((border ~= "subgroup" and border ~= "child"), colors[ttype]['above'], colors[ttype]['group']) .. ';'
 
     end
 
     end
 
     ret[#ret+1] = 'padding-left:1em;padding-right:1em;text-align:center;'
 
     ret[#ret+1] = 'padding-left:1em;padding-right:1em;text-align:center;'
     style.add(ret, frame.args['basestyle'])
+
     U.addStyle(ret, frame.args['basestyle'])
     style.add(ret, rstyle)
+
     U.addStyle(ret, rstyle)
 
     ret[#ret+1] = '"'
 
     ret[#ret+1] = '"'
    
     -- calculate and add the colspan (always full table width)
 
     -- calculate and add the colspan (always full table width)
 
     local cs = 2
 
     local cs = 2
     if common.isset(frame.args['imageleft']) then cs = cs + 1 end
+
     if U.isset(frame.args['imageleft']) then cs = cs + 1 end
     if common.isset(frame.args['image']) then cs = cs + 1 end
+
     if U.isset(frame.args['image']) then cs = cs + 1 end
 
     ret[#ret+1] = ' colspan="' .. cs .. '">\n'
 
     ret[#ret+1] = ' colspan="' .. cs .. '">\n'
   Line 250: Line 249:  
local function build_row(frame, border, ttype, k, group, list, groupstyle, liststyle)
 
local function build_row(frame, border, ttype, k, group, list, groupstyle, liststyle)
 
   local ret = {""}
 
   local ret = {""}
   if common.isset(group) then
+
   if U.isset(group) then
 
     -- there's a group name for current list, so add a cell for it
 
     -- there's a group name for current list, so add a cell for it
 
     ret[#ret+1] = '<td class="navbox-group" style="'
 
     ret[#ret+1] = '<td class="navbox-group" style="'
     if common.isset(colors[ttype]) then  
+
     if U.isset(colors[ttype]) then  
       ret[#ret+1] = 'background:' .. common.cv((border ~= "subgroup" and border ~= "child"), colors[ttype]['group'], colors[ttype]['subgroup']) .. ';'
+
       ret[#ret+1] = 'background:' .. U.cv((border ~= "subgroup" and border ~= "child"), colors[ttype]['group'], colors[ttype]['subgroup']) .. ';'
 
     end
 
     end
 
     ret[#ret+1] = 'padding-left:1em; padding-right:1em; white-space:nowrap; text-align:right;'
 
     ret[#ret+1] = 'padding-left:1em; padding-right:1em; white-space:nowrap; text-align:right;'
     style.add(ret, frame.args['basestyle'])
+
     U.addStyle(ret, frame.args['basestyle'])
     if common.isset(frame.args['groupwidth']) then ret[#ret+1] = 'width:' .. frame.args['groupwidth'] .. ';' end
+
     if U.isset(frame.args['groupwidth']) then ret[#ret+1] = 'width:' .. frame.args['groupwidth'] .. ';' end
     style.add(ret, frame.args['groupstyle'])
+
     U.addStyle(ret, frame.args['groupstyle'])
     style.add(ret, groupstyle)
+
     U.addStyle(ret, groupstyle)
 
     ret[#ret+1] = '">'
 
     ret[#ret+1] = '">'
 
     ret[#ret+1] = '<div style="padding:0;">\n'
 
     ret[#ret+1] = '<div style="padding:0;">\n'
Line 274: Line 273:  
   -- a bit tricky, but this works as XOR
 
   -- a bit tricky, but this works as XOR
 
   if (frame.args['evenodd'] == "swap") ~= ((k % 2) == 0) then
 
   if (frame.args['evenodd'] == "swap") ~= ((k % 2) == 0) then
     if common.isset(colors[ttype]) then ret[#ret+1] = 'background:' .. colors[ttype]['dark'] .. ';' end
+
     if U.isset(colors[ttype]) then ret[#ret+1] = 'background:' .. colors[ttype]['dark'] .. ';' end
 
   else
 
   else
 
     ret[#ret+1] = 'background:transparent;'
 
     ret[#ret+1] = 'background:transparent;'
 
   end
 
   end
   if not common.isset(frame.args['groupwidth']) then ret[#ret+1] = 'width:100%;' end
+
   if not U.isset(frame.args['groupwidth']) then ret[#ret+1] = 'width:100%;' end
 
   ret[#ret+1] = 'padding: 0;'
 
   ret[#ret+1] = 'padding: 0;'
   style.add(ret, frame.args['liststyle'])
+
   U.addStyle(ret, frame.args['liststyle'])
   style.add(ret, common.cv((frame.args['evenodd'] == "swap") ~= ((k % 2) == 0), frame.args['evenstyle'], frame.args['oddstyle']))
+
   U.addStyle(ret, U.cv((frame.args['evenodd'] == "swap") ~= ((k % 2) == 0), frame.args['evenstyle'], frame.args['oddstyle']))
   style.add(ret, liststyle)
+
   U.addStyle(ret, liststyle)
   ret[#ret+1] = '" class="navbox-list ' .. common.cv((frame.args['evenodd'] == "swap") ~= ((k % 2) == 0), 'navbox-even', 'navbox-odd') .. '">'
+
   ret[#ret+1] = '" class="navbox-list ' .. U.cv((frame.args['evenodd'] == "swap") ~= ((k % 2) == 0), 'navbox-even', 'navbox-odd') .. '">'
    
   -- add the <div> with content (same <div> that child navbox has to close when starting table)
 
   -- add the <div> with content (same <div> that child navbox has to close when starting table)
 
   ret[#ret+1] = '<div style="padding:'
 
   ret[#ret+1] = '<div style="padding:'
   if common.isset(frame.args['list' .. k .. 'padding']) then
+
   if U.isset(frame.args['list' .. k .. 'padding']) then
 
     ret[#ret+1] = frame.args['list' .. k .. 'padding']
 
     ret[#ret+1] = frame.args['list' .. k .. 'padding']
   elseif common.isset(frame.args['listpadding']) then
+
   elseif U.isset(frame.args['listpadding']) then
 
     ret[#ret+1] = frame.args['listpadding']
 
     ret[#ret+1] = frame.args['listpadding']
 
   else
 
   else
Line 303: Line 302:  
local function build_body(frame, border, ttype, lists)
 
local function build_body(frame, border, ttype, lists)
 
   local ret = {}
 
   local ret = {}
   local sep = common.isset(frame.args['title']) -- if there was a title, we have to add separation for first row
+
   local sep = U.isset(frame.args['title']) -- if there was a title, we have to add separation for first row
 
   local imgs = true -- add images if present
 
   local imgs = true -- add images if present
   local irows = common.cv( (#lists > 0), (2 * #lists - 1), 1 )
+
   local irows = U.cv( (#lists > 0), (2 * #lists - 1), 1 )
    
   -- aff the 'above' row
 
   -- aff the 'above' row
Line 319: Line 318:  
     -- add left image (if wasn't added yet and is present)
 
     -- add left image (if wasn't added yet and is present)
 
     if imgs then
 
     if imgs then
       if common.isset(frame.args['imageleft']) then
+
       if U.isset(frame.args['imageleft']) then
 
         ret[#ret+1] = '<td style="width:0%;padding:0px 2px 0px 0px;'
 
         ret[#ret+1] = '<td style="width:0%;padding:0px 2px 0px 0px;'
         style.add(ret, frame.args['imageleftstyle'])
+
         U.addStyle(ret, frame.args['imageleftstyle'])
 
         ret[#ret+1] = '" rowspan="' .. irows .. '">' .. frame.args['imageleft'] .. '</td>'
 
         ret[#ret+1] = '" rowspan="' .. irows .. '">' .. frame.args['imageleft'] .. '</td>'
 
       end
 
       end
Line 331: Line 330:  
     -- add right image (if wasn't added yet and is present)
 
     -- add right image (if wasn't added yet and is present)
 
     if imgs then
 
     if imgs then
       if common.isset(frame.args['image']) then
+
       if U.isset(frame.args['image']) then
 
         ret[#ret+1] = '<td style="width:0%;padding:0px 0px 0px 2px;'
 
         ret[#ret+1] = '<td style="width:0%;padding:0px 0px 0px 2px;'
         style.add(ret, frame.args['imagestyle'])
+
         U.addStyle(ret, frame.args['imagestyle'])
 
         ret[#ret+1] = '" rowspan="' .. irows .. '">' .. frame.args['image'] .. '</td>'
 
         ret[#ret+1] = '" rowspan="' .. irows .. '">' .. frame.args['image'] .. '</td>'
 
       end
 
       end
Line 357: Line 356:  
   local ttype = ""
 
   local ttype = ""
   −
   if common.isset(frame.args['border']) then
+
   if U.isset(frame.args['border']) then
 
     border = frame.args['border']
 
     border = frame.args['border']
   elseif common.isset(frame.args[1]) then
+
   elseif U.isset(frame.args[1]) then
 
     border = mw.text.trim(frame.args[1])
 
     border = mw.text.trim(frame.args[1])
 
   end
 
   end
   −
   if common.isset(frame.args['type']) then
+
   if U.isset(frame.args['type']) then
 
     ttype = frame.args['type']
 
     ttype = frame.args['type']
 
   end
 
   end
Line 383: Line 382:  
-- [[ Workaround for the "Navbox subgroup" template ]]
 
-- [[ Workaround for the "Navbox subgroup" template ]]
 
local function buildNavboxSubgroup(frame)
 
local function buildNavboxSubgroup(frame)
   if not common.isset(frame.args['border']) then frame.args['border'] = 'child' end
+
   if not U.isset(frame.args['border']) then frame.args['border'] = 'child' end
    
   -- TODO: add/modify/remove other params?
 
   -- TODO: add/modify/remove other params?
cssedit, gkautomate
7,064

edits