(no breaking wrapped words) Tag: sourceedit |
(added support for external links (hopefully)) |
||
Line 92: | Line 92: | ||
: wikitext(table.concat{ '[','[File:', image, '|center|', imagesize, '|alt=', text, |
: wikitext(table.concat{ '[','[File:', image, '|center|', imagesize, '|alt=', text, |
||
'|link=', link, ']', ']' }) |
'|link=', link, ']', ']' }) |
||
− | + | ||
+ | if link.starts("http") then |
||
+ | wrapper: node( |
||
+ | mw.html.create('span') |
||
+ | : css{ |
||
+ | position = 'absolute', |
||
+ | padding = '0px', |
||
+ | width = size, |
||
+ | bottom = '2px', |
||
+ | left = '4px', |
||
+ | ['font-size'] = fontsize |
||
+ | } |
||
+ | : wikitext(table.concat{'[', link, ' ', text, ']'}) |
||
+ | ) |
||
+ | else |
||
+ | wrapper: node( |
||
mw.html.create('span') |
mw.html.create('span') |
||
: css{ |
: css{ |
||
Line 104: | Line 119: | ||
: wikitext(table.concat{'[', '[', link, '|', text, ']', ']'}) |
: wikitext(table.concat{'[', '[', link, '|', text, ']', ']'}) |
||
) |
) |
||
+ | end |
||
-- add non used images so they don't appear on the wiki feed |
-- add non used images so they don't appear on the wiki feed |
Revision as of 04:18, 4 April 2020
Documentation for this module may be created at Module:Graphical link/doc
local p = {}
local HF = require('Module:HF')
local getlist = function( frame, name, ... )
return frame:expandTemplate{ title = ':'..name, args = ... }
end
function p.main( frame )
frame = frame:getParent()
-- decide text
local link = frame.args[1]
local text = frame.args[2]
if text == '' or text == nil then
text = link
elseif text == 's' then
text = link .. 's'
end
-- decide image
local image = nil
local allimages = {}
local arg = HF.trim(frame.args[3])
-- set seed because it seems to never change unless manually set
math.randomseed(tonumber(os.date('%s')))
if string.sub( arg, -5 ) == '/list' and mw.title.new(arg) ~= nil then
-- get images from a list page
local imagetag = frame.args[4]
if imagetag == nil then
imagetag = 'image'
end
local size = tonumber(getlist( frame, arg, {'count'}))
local choice = math.random(size)
for i = 1, size do
local value = getlist( frame, arg, { i } )
value = getlist( frame, value..'/data', { '', imagetag } )
if i == choice then
image = value
end
allimages[i] = value
end
else
-- get images from arguments
local size = 0
for i, value in ipairs(frame.args) do
if i > 2 then -- avoid the text arguments
size = size + 1
allimages[size] = value
end
end
local choice = math.random(size)
image = allimages[choice]
end
-- decide on properties
local size = frame.args['size']
if HF.isempty(size) then
size = '64px'
elseif tonumber(size) ~= nil then
size = size..'px'
end
local imagesize = frame.args['imagesize']
if HF.isempty(imagesize) then
imagesize = '48px'
elseif tonumber(imagesize) ~= nil then
imagesize = imagesize..'px'
end
local fontsize = frame.args['fontsize']
if HF.isempty(fontsize) then
fontsize = 'inherit'
elseif tonumber(fontsize) ~= nil then
fontsize = fontsize..'px'
end
-- create the actual content
local wrapper = mw.html.create('span')
wrapper: css{
float = 'left',
position = 'relative',
width = size,
height = size,
['background-color'] = '#515151',
['border-radius'] = '7px',
margin = '8px',
padding = '4px',
border = '3px outset #383838',
['text-align'] = 'center',
['word-wrap'] = 'normal'
}
: wikitext(table.concat{ '[','[File:', image, '|center|', imagesize, '|alt=', text,
'|link=', link, ']', ']' })
if link.starts("http") then
wrapper: node(
mw.html.create('span')
: css{
position = 'absolute',
padding = '0px',
width = size,
bottom = '2px',
left = '4px',
['font-size'] = fontsize
}
: wikitext(table.concat{'[', link, ' ', text, ']'})
)
else
wrapper: node(
mw.html.create('span')
: css{
position = 'absolute',
padding = '0px',
width = size,
bottom = '2px',
left = '4px',
['font-size'] = fontsize
}
: wikitext(table.concat{'[', '[', link, '|', text, ']', ']'})
)
end
-- add non used images so they don't appear on the wiki feed
for i, value in ipairs(allimages) do
allimages[i] = '['..'[File:'..value..'|1px]'..']'
end
wrapper:node(
mw.html.create('span')
:css('display', 'none')
:wikitext(table.concat(allimages))
)
return wrapper
end
return p