Module:Navbar: Difference between revisions
m>Plastikspork (Per edit request) |
m (6 revisions imported from wikipedia:Module:Navbar: see Topic:Vtixlm0q28eo6jtf) |
||
| (26 intermediate revisions by 18 users not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local cfg = mw.loadData('Module:Navbar/configuration') | |||
local | local function get_title_arg(is_collapsible, template) | ||
local title_arg = 1 | |||
if is_collapsible then title_arg = 2 end | |||
if template then title_arg = 'template' end | |||
return title_arg | |||
end | |||
local function | local function choose_links(template, args) | ||
-- The show table indicates the default displayed items. | |||
-- view, talk, edit, hist, move, watch | |||
-- TODO: Move to configuration. | |||
local show = {true, true, true, false, false, false} | |||
if template then | |||
show[2] = false | |||
show[3] = false | |||
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, | |||
talk = 2, edit = 3, hist = 4, move = 5, watch = 6} | |||
-- TODO: Consider removing TableTools dependency. | |||
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do | |||
local num = index[v] | |||
if num then show[num] = true end | |||
end | |||
end | |||
local remove_edit_link = args.noedit | |||
if remove_edit_link then show[3] = false end | |||
return show | |||
end | end | ||
local function | local function add_link(link_description, ul, is_mini, font_style) | ||
local l | |||
if link_description.url then | |||
l = {'[', '', ']'} | |||
else | |||
l = {'[[', '|', ']]'} | |||
end | |||
ul:tag('li') | |||
:addClass('nv-' .. link_description.full) | |||
:wikitext(l[1] .. link_description.link .. l[2]) | |||
:tag(is_mini and 'abbr' or 'span') | |||
:attr('title', link_description.html_title) | |||
:cssText(font_style) | |||
:wikitext(is_mini and link_description.mini or link_description.full) | |||
:done() | |||
:wikitext(l[3]) | |||
:done() | |||
end | |||
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) | |||
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) | |||
if not title then | |||
error(cfg.invalid_title .. title_text) | |||
end | |||
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' | |||
-- TODO: Get link_descriptions and show into the configuration module. | |||
-- link_descriptions should be easier... | |||
local link_descriptions = { | |||
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', | |||
['link'] = title.fullText, ['url'] = false }, | |||
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', | |||
['link'] = talkpage, ['url'] = false }, | |||
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', | |||
| < | |||