Anonymous user
Module:Shortcut: Difference between revisions
Undid revision 1212853521 by Jdlrobson (talk) no, that class is exclusive to the module in which it appears
m (1 revision imported) |
en>Izno (Undid revision 1212853521 by Jdlrobson (talk) no, that class is exclusive to the module in which it appears) |
||
Line 24: | Line 24: | ||
frame = frame or mw.getCurrentFrame() | frame = frame or mw.getCurrentFrame() | ||
cfg = cfg or mw.loadData(CONFIG_MODULE) | cfg = cfg or mw.loadData(CONFIG_MODULE) | ||
local isCategorized = yesno(options.category) ~= false | local templateMode = options.template and yesno(options.template) | ||
local redirectMode = options.redirect and yesno(options.redirect) | |||
local isCategorized = not options.category or yesno(options.category) ~= false | |||
-- Validate shortcuts | -- Validate shortcuts | ||
Line 37: | Line 39: | ||
local listItems = {} | local listItems = {} | ||
for i, shortcut in ipairs(shortcuts) do | for i, shortcut in ipairs(shortcuts) do | ||
listItems[i] = frame:expandTemplate{ | local templatePath, prefix | ||
if templateMode then | |||
-- Namespace detection | |||
local titleObj = mw.title.new(shortcut, 10) | |||
if titleObj.namespace == 10 then | |||
templatePath = titleObj.fullText | |||
else | |||
templatePath = shortcut | |||
end | |||
prefix = options['pre' .. i] or options.pre or '' | |||
end | |||
if options.target and yesno(options.target) then | |||
listItems[i] = templateMode | |||
and string.format("{{%s[[%s|%s]]}}", prefix, templatePath, shortcut) | |||
or string.format("[[%s]]", shortcut) | |||
else | |||
listItems[i] = frame:expandTemplate{ | |||
title = 'No redirect', | |||
args = templateMode and {templatePath, shortcut} or {shortcut, shortcut} | |||
} | |||
if templateMode then | |||
listItems[i] = string.format("{{%s%s}}", prefix, listItems[i]) | |||
end | |||
end | |||
end | end | ||
table.insert(listItems, options.msg) | table.insert(listItems, options.msg) | ||
Line 55: | Line 77: | ||
local root = mw.html.create() | local root = mw.html.create() | ||
root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = 'Shortcut/styles.css'} }) | root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Shortcut/styles.css'} }) | ||
-- Anchors | -- Anchors | ||
local anchorDiv = root | local anchorDiv = root | ||
Line 70: | Line 92: | ||
local nShortcuts = #shortcuts | local nShortcuts = #shortcuts | ||
if nShortcuts > 0 then | if nShortcuts > 0 then | ||
local headingMsg = options['shortcut-heading'] or | |||
redirectMode and cfg['redirect-heading'] or | |||
cfg['shortcut-heading'] | |||
shortcutHeading = message(headingMsg, nShortcuts) | |||
shortcutHeading = frame:preprocess(shortcutHeading) | shortcutHeading = frame:preprocess(shortcutHeading) | ||
end | end | ||
Line 78: | Line 103: | ||
local shortcutList = root | local shortcutList = root | ||
:tag('div') | :tag('div') | ||
:addClass('module-shortcutboxplain | :addClass('module-shortcutboxplain noprint') | ||
:attr('role', 'note') | :attr('role', 'note') | ||
if options.float and options.float:lower() == 'left' then | |||
shortcutList:addClass('module-shortcutboxleft') | |||
end | |||
if options.clear and options.clear ~= '' then | |||
shortcutList:css('clear', options.clear) | |||
end | |||
if shortcutHeading then | if shortcutHeading then | ||
shortcutList | shortcutList | ||
Line 86: | Line 117: | ||
:wikitext(shortcutHeading) | :wikitext(shortcutHeading) | ||
end | end | ||
local | |||
local ubl = require('Module:List').unbulleted(listItems) | |||
shortcutList:wikitext(ubl) | |||
return tostring(root) | return tostring(root) | ||
end | end | ||
function p.main(frame) | function p.main(frame) | ||
local args = require('Module:Arguments').getArgs(frame | local args = require('Module:Arguments').getArgs(frame) | ||
-- Separate shortcuts from options | -- Separate shortcuts from options |