در حال ویرایش پودمان:Userbox
این ویرایش را میتوان خنثی کرد. لطفاً تفاوت زیر را بررسی کنید تا تأیید کنید که این چیزی است که میخواهید انجام دهید، سپس تغییرات زیر را ذخیره کنید تا خنثیسازی ویرایش را به پایان ببرید.
| نسخهٔ فعلی | متن شما | ||
| خط ۱: | خط ۱: | ||
-- This module implements {{userbox}}. | -- This module implements {{userbox}}. | ||
local getArgs = require('Module:Arguments').getArgs | |||
local categoryHandler = require('Module:Category handler').main | local categoryHandler = require('Module:Category handler').main | ||
local p = {} | local p = {} | ||
| خط ۱۸: | خط ۱۳: | ||
-- Checks whether a value is a number greater than or equal to zero. If so, | -- Checks whether a value is a number greater than or equal to zero. If so, | ||
-- returns it as a number. If not, returns a default value. | -- returns it as a number. If not, returns a default value. | ||
val = tonumber( | val = tonumber(val) | ||
if val and val >= 0 then | if val and val >= 0 then | ||
return val | return val | ||
| خط ۲۹: | خط ۲۴: | ||
-- Turns a number into a string and adds a suffix. | -- Turns a number into a string and adds a suffix. | ||
if num then | if num then | ||
return tostring( | return tostring(num) .. suffix | ||
else | else | ||
return nil | return nil | ||
| خط ۴۴: | خط ۳۹: | ||
-- Makes a category link. | -- Makes a category link. | ||
if sort then | if sort then | ||
return mw.ustring.format(' | return mw.ustring.format('', cat, sort) | ||
else | else | ||
return mw.ustring.format(' | return mw.ustring.format('', cat) | ||
end | end | ||
end | end | ||
| خط ۵۶: | خط ۵۱: | ||
local function makeInvokeFunc(funcName) | local function makeInvokeFunc(funcName) | ||
return function (frame) | return function (frame) | ||
local | local args = getArgs(frame) | ||
return p.main(funcName, args) | return p.main(funcName, args) | ||
end | end | ||
| خط ۷۴: | خط ۶۵: | ||
function p.main(funcName, args) | function p.main(funcName, args) | ||
local userboxData = p[funcName](args) | local userboxData = p[funcName](args) | ||
local userbox = p.render(userboxData) | local userbox = p.render(userboxData) | ||
| خط ۱۲۱: | خط ۷۶: | ||
-- Get div tag values. | -- Get div tag values. | ||
data.float = | data.float = args.float or 'right' | ||
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. | local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. | ||
data.borderWidth = addSuffix(borderWidthNum, 'px') | data.borderWidth = addSuffix(borderWidthNum, 'px') | ||
data.borderColor = args['border-color'] or args['border-c' | data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' | ||
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. | data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. | ||
data.bodyClass = args.bodyclass | data.bodyClass = args.bodyclass | ||
| خط ۱۳۰: | خط ۸۵: | ||
-- Get table tag values. | -- Get table tag values. | ||
data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' | data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' | ||
-- Get id values. | -- Get id values. | ||
| خط ۱۴۹: | خط ۹۳: | ||
data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') | data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') | ||
data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' | data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' | ||
data.idTextAlign = | data.idTextAlign = args['id-a'] or 'center' | ||
data.idFontSize = | data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') | ||
data.idColor = args['logo-color'] or args['id-fc'] or | data.idColor = args['logo-color'] or args['id-fc'] or 'black' | ||
data.idPadding = args['logo-padding'] or args['id-p'] or '0 0 0 | data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' | ||
data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' | data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' | ||
data.idOtherParams = args['logo-other-param'] or args['id-op'] | data.idOtherParams = args['logo-other-param'] or args['id-op'] | ||
data.idClass = args['id-class'] | data.idClass = args['id-class'] | ||
-- Get info values. | |||
data.info = args.info or args[4] or "''اطلاعات''" | |||
data.infoTextAlign = args['info-a'] or 'right' | |||
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') | |||
data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') | |||
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' | |||
data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' | |||
data.infoColor = args['info-color'] or args['info-fc'] or 'black' | |||
data.infoOtherParams = args['info-other-param'] or args['info-op'] | |||
data.infoClass = args['info-class'] | |||
return data | return data | ||
| خط ۱۶۳: | خط ۱۱۸: | ||
-- Does argument processing for {{userbox-2}}. | -- Does argument processing for {{userbox-2}}. | ||
local data = {} | local data = {} | ||
-- Get div tag values. | -- Get div tag values. | ||
data.float = args.float or 'right' | data.float = args.float or 'right' | ||
data.borderWidth = checkNumAndAddSuffix(args[9] or args['border-s'], 1, 'px') | |||
data.borderColor = args[1] or args['border-c'] or args['id1-c'] or '#999999' | |||
data.borderColor = args['border-c' | data.width = '238px' -- Also used in the table tag. | ||
data.width = | |||
data.bodyClass = args.bodyclass | data.bodyClass = args.bodyclass | ||
-- Get table tag values. | -- Get table tag values. | ||
data.backgroundColor = | data.backgroundColor = args[2] or args['info-c'] or '#eeeeee' | ||
-- Get id values. | -- Get id values. | ||
data.showId = true | data.showId = true | ||
data.id = args.logo or args[3] or args.id1 or ' | data.id = args.logo or args[3] or args.id1 or 'id1' | ||
data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') | data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') | ||
data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') | data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') | ||
data.idBackgroundColor = args['id1-c' | data.idBackgroundColor = args[1] or args['id1-c'] or '#dddddd' | ||
data.idTextAlign = 'center' | data.idTextAlign = 'center' | ||
data.idFontSize = | data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt') | ||
data.idLineHeight = args['id1-lh'] or '1.25em' | data.idLineHeight = args['id1-lh'] or '1.25em' | ||
data.idColor = args['id1-fc'] or | data.idColor = args['id1-fc'] or 'black' | ||
data.idPadding = args['id1-p'] or '0 0 0 1px' | data.idPadding = args['id1-p'] or '0 0 0 1px' | ||
data.idOtherParams = args['id1-op'] | data.idOtherParams = args['id1-op'] | ||
-- Get info values. | |||
data.info = args[4] or args.info or "''اطلاعات''" | |||
data.infoTextAlign = args['info-a'] or 'right' | |||
data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') | |||
data.infoColor = args[8] or args['info-fc'] or 'black' | |||
data.infoPadding = args['info-p'] or '0 4px 0 4px' | |||
data.infoLineHeight = args['info-lh'] or '1.25em' | |||
data.infoOtherParams = args['info-op'] | |||
-- Get id2 values. | -- Get id2 values. | ||
data.showId2 = true | data.showId2 = true | ||
data.id2 = args.logo or args[5] or args.id2 or ' | data.id2 = args.logo or args[5] or args.id2 or 'id2' | ||
data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') | data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') | ||
data.id2Height = data.idHeight | data.id2Height = data.idHeight | ||
data.id2BackgroundColor = args['id2-c' | data.id2BackgroundColor = args[7] or args['id2-c'] or args[1] or '#dddddd' | ||
data.id2TextAlign = 'center' | data.id2TextAlign = 'center' | ||
data.id2FontSize = | data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt') | ||
data.id2LineHeight = args['id2-lh'] or '1.25em' | data.id2LineHeight = args['id2-lh'] or '1.25em' | ||
data.id2Color = args['id2-fc'] or | data.id2Color = args['id2-fc'] or 'black' | ||
data.id2Padding = args['id2-p'] or '0 1px 0 0' | data.id2Padding = args['id2-p'] or '0 1px 0 0' | ||
data.id2OtherParams = args['id2-op'] | data.id2OtherParams = args['id2-op'] | ||
| خط ۲۱۸: | خط ۱۷۲: | ||
-- Get div tag values. | -- Get div tag values. | ||
data.float = | data.float = args.float or 'right' | ||
data.borderWidth = checkNumAndAddSuffix(args['border-width'] or args['border-s'], 1, 'px') | |||
data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' | |||
data.borderColor = args['border-color'] or args['border-c' | data.width = '238px' -- Also used in the table tag. | ||
data.width = | |||
data.bodyClass = args.bodyclass | data.bodyClass = args.bodyclass | ||
| خط ۲۳۲: | خط ۱۸۵: | ||
-- Get info values. | -- Get info values. | ||
data.info = args.info or args[4] or " | data.info = args.info or args[4] or "''اطلاعات''" | ||
data.infoTextAlign = | data.infoTextAlign = args['info-align'] or args['info-a'] or 'right' | ||
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') | data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') | ||
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' | data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' | ||
| خط ۲۴۲: | خط ۱۹۵: | ||
-- Get id2 values. | -- Get id2 values. | ||
data.showId2 = true | data.showId2 = true | ||
data.id2 = args.logo or args[3] or args.id or ' | data.id2 = args.logo or args[3] or args.id or 'id' | ||
data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') | data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') | ||
data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') | data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') | ||
data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' | data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' | ||
data.id2TextAlign = | data.id2TextAlign = args['id-a'] or 'center' | ||
data.id2FontSize = | data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') | ||
data.id2Color = args['logo-color'] or args['id-fc'] or | data.id2Color = args['logo-color'] or args['id-fc'] or 'black' | ||
data.id2Padding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' | data.id2Padding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' | ||
data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' | data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' | ||
| خط ۲۶۵: | خط ۲۱۸: | ||
:css('margin', '1px') | :css('margin', '1px') | ||
:css('width', data.width) | :css('width', data.width) | ||
:addClass(' | :addClass('wikishiauserbox') | ||
:addClass(data.bodyClass) | :addClass(data.bodyClass) | ||
| خط ۲۷۱: | خط ۲۲۴: | ||
local tableroot = root:tag('table') | local tableroot = root:tag('table') | ||
tableroot | tableroot | ||
:css('border-collapse', 'collapse') | :css('border-collapse', 'collapse') | ||
:css('width', data.width) | :css('width', data.width) | ||
:css('margin-bottom', '0') | :css('margin-bottom', '0') | ||
:css('background', data.backgroundColor) | :css('background', data.backgroundColor) | ||
-- Render the id html. | -- Render the id html. | ||
local tablerow = tableroot:tag('tr') | local tablerow = tableroot:tag('tr') | ||
if data.showId then | if data.showId then | ||
tablerow:tag(' | tablerow:tag('th') | ||
:css('border', '0') | :css('border', '0') | ||
:css('width', data.idWidth) | :css('width', data.idWidth) | ||
| خط ۲۸۸: | خط ۲۳۸: | ||
:css('background', data.idBackgroundColor) | :css('background', data.idBackgroundColor) | ||
:css('text-align', data.idTextAlign) | :css('text-align', data.idTextAlign) | ||
:css('font-size', data.idFontSize | :css('font-size', data.idFontSize) | ||
:css('color', data.idColor) | :css('color', data.idColor) | ||
:css('padding', data.idPadding) | :css('padding', data.idPadding) | ||
| خط ۳۱۵: | خط ۲۶۴: | ||
-- Render the second id html. | -- Render the second id html. | ||
if data.showId2 then | if data.showId2 then | ||
tablerow:tag(' | tablerow:tag('th') | ||
:css('border', '0') | :css('border', '0') | ||
:css('width', data.id2Width) | :css('width', data.id2Width) | ||
| خط ۳۲۱: | خط ۲۷۰: | ||
:css('background', data.id2BackgroundColor) | :css('background', data.id2BackgroundColor) | ||
:css('text-align', data.id2TextAlign) | :css('text-align', data.id2TextAlign) | ||
:css('font-size', data.id2FontSize | :css('font-size', data.id2FontSize) | ||
:css('color', data.id2Color) | :css('color', data.id2Color) | ||
:css('padding', data.id2Padding) | :css('padding', data.id2Padding) | ||
| خط ۳۲۹: | خط ۲۷۷: | ||
:cssText(data.id2OtherParams) | :cssText(data.id2OtherParams) | ||
:wikitext(data.id2) | :wikitext(data.id2) | ||
end | end | ||
| خط ۳۹۳: | خط ۲۹۰: | ||
cats[#cats + 1] = args.usercategory2 | cats[#cats + 1] = args.usercategory2 | ||
cats[#cats + 1] = args.usercategory3 | cats[#cats + 1] = args.usercategory3 | ||
if #cats > 0 then | |||
-- Get the title object | |||
local title | |||
if page then | |||
title = mw.title.new(page) | |||
title = mw.title. | else | ||
title = mw.title.getCurrentTitle() | |||
end | |||
-- Build category handler arguments. | |||
local chargs = {} | |||
chargs.page = page | |||
chargs.nocat = args.nocat | |||
if args.notcatsubpages then | |||
chargs.subpage = 'no' | |||
end | |||
-- User namespace. | |||
local user = '' | |||
for i, cat in ipairs(cats) do | |||
user = user .. makeCat(cat) | |||
end | |||
chargs.user = user | |||
-- Template namespace. | |||
local basepage = title.baseText | |||
local template = '' | |||
for i, cat in ipairs(cats) do | |||
template = template .. makeCat(cat, ' ' .. basepage) | |||
end | |||
chargs.template = template | |||
return categoryHandler(chargs) | |||
else | else | ||
return nil | |||
end | end | ||
end | end | ||
return p | return p | ||