p = {}
-- simple helper for simple cases
local function var_or_default(var, default)
if var and var ~= '' then
return var
else
return default
end
end
local function talk_other(demospace, talk)
if demospace and demospace ~= '' then return demospace end
if mw.title.getCurrentTitle().isTalkPage then return talk end
return nil -- just return nil rather than 'other' since we have no need
end
local function image(builder)
end
local function archive_list(builder)
end
local function make_title(builder)
end
local function search_box(frame, is_banner, root, search, search_prefix,
search_break, search_width, search_label
)
if search and search == 'no' then return nil end
local prefix = ''
if search_prefix and search_prefix ~= '' then
prefix = search_prefix
-- this double-check elseif may move out to code-proper
elseif root and root ~= '' then
prefix = root
else
prefix = mw.title.getCurrentTitle().prefixedText .. '/'
end
-- break
local sbreak
if search_break and (search_break == 'yes' or search_break == 'no') then
sbreak = search_break
end
-- set search_break's default
if not sbreak then
if is_banner then
sbreak = 'no'
else
sbreak = 'yes'
end
end
-- width
local width = ''
if not is_banner then
width = var_or_default(search_width, '22')
end
-- label
local label = var_or_default(search_label, 'Search archives')
local inputbox_options = {
['bgcolor'] = 'transparent',
['type'] = 'fulltext',
['prefix'] = prefix,
['break'] = sbreak,
['width'] = width,
['searchbuttonlabel'] = label
}
local inputbox_content = ''
for k, v in pairs(inputbox_options) do
inputbox_content = inputbox_content .. '\n' .. k .. '=' .. v
end
local inputbox = frame:extensionTag{
name = 'inputbox',
content = inputbox_content
}
local div = mw.html.create('div')
div
:addClass('archives-search')
:wikitext(inputbox)
return div
end
function prep_search_options (
search_prefix, root, search_break, search_width, search_label
)
local label = ''
if args['search-button-label'] and args['search-button-label'] ~= '' then
search_button_label = args['search-button-label']
else
search_button_label = 'Search archives'
end
return search, prefix, search_break, width, label
end
--[[
pass the frame down for a minute because we do a lot of work with a frame
]]
function p._main(args, frame)
local frame = frame -- data continuity
local list = args.list
local list1 = args[1]
local auto = args.auto
local root = args.root
local index = args.index
local box_width = args['box-width']
local image = args.image
local image_alt = args.alt
local image_link = args.link
local image_size = args['image-size']
local collapsed = args.collapsed
local collapsible = args.collapsible
local title = args.title
local archive_list = args.archivelist
local prefix = args.prefix
local search = args.search
local search_options = {
['button_label'] = search_button_label
}
local is_banner = false
if (args.banner and args.banner == 'yes') or (args.large and args.large == 'yes') then
is_banner = true
end
local demospace
if args.demospace and args.demospace ~= '' then
demospace = args.demospace
end
root = mw.html.create()
root
:tag('div')
:addClass('archives plainlinks')
-- banner is roughly mbox, small is roughly mbox-small
:addClass(is_banner and 'archives-banner' or 'archives-small')
-- archives-talk has same-ish styles as tmbox tmbox-notice
-- base styles are same-ish as ombox ombox-notice
:addClass(talk_other(demospace, 'archives-talk'))
end
function p.main(frame)
return p._main(require('Module:Arguments').getArgs(frame), frame)
end
return p