پودمان:Gallery: تفاوت میان نسخه‌ها

۲۶۹ بایت اضافه‌شده ،  ‏۷ مهٔ ۲۰۲۱
use if preview, move to module version (someone bug me about hist merging the template namespace templatestyles page
جز (۱ نسخه واردشده)
 
(use if preview, move to module version (someone bug me about hist merging the template namespace templatestyles page)
خط ۲: خط ۲:


local p = {}
local p = {}
local templatestyles = 'Module:Gallery/styles.css'
local yesno = require('Module:Yesno')


local function trim(s)
local function trim(s)
return (mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1"))
return mw.ustring.gsub(mw.ustring.gsub(s, '%s', ' '), '^%s*(.-)%s*$', '%1')
end
 
local tracking, preview
 
local function checkarg(k,v)
if k and type(k) == 'string' then
if k == 'align' or k == 'state' or k == 'style' or k == 'title' or
k == 'width' or k == 'height' or k == 'lines' or k == 'whitebg' or
k == 'mode' or k == 'footer' or k == 'perrow' or k == 'noborder' or
k:match('^alt%d+$') or k:match('^%d+$') then
-- valid
elseif k == 'captionstyle' then
if not v:match('^text%-align%s*:%s*center[;%s]*$') then
table.insert(tracking, '[[Category:Pages using gallery with the captionstyle parameter]]')
end
else
-- invalid
local vlen = mw.ustring.len(k)
k = mw.ustring.sub(k, 1, (vlen < 25) and vlen or 25)
k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
table.insert(tracking, '[[Category:Pages using gallery with unknown parameters|' .. k .. ']]')
table.insert(preview, '"' .. k .. '"')
end
end
end
end


function p.gallery(frame)
function p.gallery(frame)
local origArgs
-- If called via #invoke, use the args passed into the invoking template.
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
-- Otherwise, for testing purposes, assume args are being passed directly in.
if type(frame.getParent) == 'function' then
local origArgs = (type(frame.getParent) == 'function') and frame:getParent().args or frame
origArgs = frame:getParent().args
else
origArgs = frame
end
      
      
     -- ParserFunctions considers the empty string to be false, so to preserve the previous  
     -- ParserFunctions considers the empty string to be false, so to preserve the previous  
خط ۲۱: خط ۴۳:
     -- them false too.
     -- them false too.
     local args = {}
     local args = {}
    tracking, preview = {}, {}
     for k, v in pairs(origArgs) do
     for k, v in pairs(origArgs) do
     if v ~= '' then
     if v ~= '' then
     args[k] = v
     args[k] = v
    checkarg(k,v)
     end
     end
end
if (args.mode or '') == 'packed' and (args.align or '') == '' then
args.align = 'center'
end
end


local tbl = mw.html.create('table')
local tbl = mw.html.create('div')
tbl:addClass('mod-gallery')
      
      
if args.state then
if args.state then
tbl
tbl
:css('width', '100%')
:addClass('mod-gallery-collapsible')
:addClass('collapsible')
:addClass('collapsible')
:addClass(args.state)
:addClass(args.state)
خط ۳۹: خط ۶۸:
tbl:cssText(args.style)
tbl:cssText(args.style)
else
else
tbl
tbl:addClass('mod-gallery-default')
:css('background', 'transparent')
:css('margin-top', '0.5em')
end
end
if args.align then
if args.align then
tbl:attr('align', args.align)
tbl:addClass('mod-gallery-' .. args.align:lower())
end
end
 
if args.title then
if args.title then
tbl
tbl:tag('div')
:tag('tr')
:addClass('title')
:tag('th')
:tag('div')
:css('text-align', 'center')
:css('font-weight', 'bold')
:wikitext(args.title)
:wikitext(args.title)
end
end
local mainCell = tbl:tag('tr'):tag('td')
local gargs = {}
gargs['class'] = 'nochecker' .. (args.noborder and '' or ' bordered-images')
gargs['widths'] = tonumber(args.width) or 180
gargs['heights'] = tonumber(args.height) or 180
gargs['style'] = args.captionstyle
gargs['perrow'] = args.perrow
gargs['mode'] = args.mode
if yesno(args.whitebg or 'yes') then
gargs['class'] = gargs['class'] .. ' whitebg'
end
local gallery = {}
local imageCount = math.ceil(#args / 2)
local imageCount = math.ceil(#args / 2)
local cellWidth = tonumber(args.cellwidth) or tonumber(args.width) or 180
 
local imgHeight = tonumber(args.height) or 180
local lines = tonumber(args.lines) or 2
local captionstyle = args.captionstyle
     for i = 1, imageCount do
     for i = 1, imageCount do
local img = trim(args[i*2 - 1] or '')
local img = trim(args[i*2 - 1] or '')
local caption = trim(args[i*2] or '')
local caption = trim(args[i*2] or '')
local imgWidth = tonumber(args['width' .. i]) or tonumber(args.width) or 180
local alt = trim(args['alt' .. i] or '')
local alt = args['alt' .. i] or ''
local textWidth
if cellWidth < 30 then
textWidth = imgHeight + 27
else
textWidth = cellWidth + 7
end
 
if img ~= '' then
if img ~= '' then
local imgTbl = mainCell:tag('table')
table.insert(gallery, img .. (alt ~= '' and ('|alt=' .. alt) or '') .. '|' .. caption )
           
imgTbl
:css('width', (cellWidth + 20) .. 'px')
:css('float', 'right')
:css('border-collapse', 'collapse')
:css('margin', '3px')
:tag('tr')
:tag('td')
:css('height', (imgHeight + 20) .. 'px')
:css('border', '1px solid #CCCCCC')
:css('background-color', '#F8F8F8')
:css('padding', '0px')
:css('text-align', 'center')
:wikitext(string.format('[[%s|center|border|%dx%dpx|alt=%s|%s]]', img, imgWidth, imgHeight, alt, caption))
:done()
:done()
:tag('tr')
:css('vertical-align', 'top')
:tag('td')
:css('display', 'block')
:css('font-size', '1em')
:css('height', (0.2 + 1.5*lines) .. 'em')
:css('padding', '0px')
:tag('div')
:addClass('gallerytext')
:css('height', (0.1 + 1.5*lines) .. 'em')
:css('width', textWidth .. 'px')
:css('line-height', '1.3em')
:css('padding', '2px 6px 1px 6px')
:css('overflow-y', 'auto')
:css('margin', '0px')
:css('border', 'none')
:css('border-width', '0px')
:cssText(captionstyle)
:wikitext(caption .. '&nbsp;')
end
end
end
end
tbl:tag('div')
:addClass('main')
:tag('div')
:wikitext(
frame:extensionTag{ name = 'gallery', content = '\n' .. table.concat(gallery,'\n'), args = gargs}
)
      
      
if args.footer then
if args.footer then
tbl
tbl:tag('div')
:tag('tr')
:addClass('footer')
:tag('td')
:tag('div')
:css('text-align', 'left')
:css('font-size', '80%')
:css('line-height', '1em')
:wikitext(args.footer)
:wikitext(args.footer)
end
end
if args.perrow then
 
tbl:css('width', 8 + (cellWidth + 20 + 6)*tonumber(args.perrow) .. 'px')
local trackstr = (#tracking > 0) and table.concat(tracking, '') or ''
if #preview > 0 then
trackstr = require('Module:If preview')._warning({
'Unknown parameters ' .. table.concat(preview, '; ') .. '.'
}) .. trackstr
end
end
 
return tostring(tbl)
return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(tbl) .. trackstr
end
end


return p
return p
کاربر ناشناس