יחידה:Sister project links
ניתן ליצור תיעוד על היחידה הזאת בדף יחידה:Sister project links/תיעוד
local projectsTemplate = {
['cphe'] = {
['logo']='סמל ב"ה.png',
['projectName'] = 'חב"דפדיה',
['description']='[[חב"דפדיה]]',
['display']='שפה זו',
['pageName'] = ''
},
['chabadtext'] = {
['logo']='סמל ב"ה.png',
['projectName'] = 'חב"דטקסט',
['description']='טקסט',
['display']='חב"דטקסט',
['projectPrefix']='text'
},
['chabadquote'] = {
['logo']='סמל ב"ה.png',
['projectName'] = 'חב"דציטוט',
['description']='ציטוטים',
['display']='חב"דציטוט',
['projectPrefix']='zitut'
}
}
local function renderProject(projectTemplate)
local prefix = projectTemplate['projectPrefix'] or ''
local pageName = projectTemplate['pageName'] or ''
local pageDisplay = projectTemplate['pageDisplay'] or pageName
return mw.html.create('div')
:addClass('sistersitebox')
:wikitext(mw.ustring.format(
"[[File:%s|20px|link=|%s]] %s ב%s: %s",
projectTemplate['logo'],
projectTemplate['projectName'],
projectTemplate['description'],
projectTemplate['display'],
(prefix ~= '' and '[[:'..prefix..':'..pageName..'|'..pageDisplay..']]' or pageDisplay)
))
end
local function render(frame)
local args = require('Module:Arguments').getArgs(frame)
local title = mw.title.getCurrentTitle().text
local projectLinks = {}
-- projects from arguments
if args['חב"דפדיה'] then
local t = mw.clone(projectsTemplate['cphe'])
t['projectPrefix'] = args['חב"דפדיה']
t['pageName'] = args['חב"דפדיה']
t['pageDisplay'] = args['שם חב"דפדיה'] or title
table.insert(projectLinks, t)
end
if args['חב"דפדיה 2'] then
local t = mw.clone(projectsTemplate['cphe'])
t['projectPrefix'] = args['חב"דפדיה 2']
t['pageName'] = args['חב"דפדיה 2']
t['pageDisplay'] = args['שם חב"דפדיה 2'] or title
table.insert(projectLinks, t)
end
local projects = {
{arg='חב"דציטוט', template='chabadquote'},
{arg='חב"דטקסט', template='chabadtext'}
}
for _, proj in ipairs(projects) do
if args[proj.arg] then
local t = mw.clone(projectsTemplate[proj.template])
t.pageName = args[proj.arg]
t.pageDisplay = args['שם ' .. proj.arg] or t.pageName
table.insert(projectLinks, t)
end
-- handle multiple numbered args
local i = 2
local additionalArg = mw.ustring.format('%s %i', proj.arg, i)
while args[additionalArg] do
local t = mw.clone(projectsTemplate[proj.template])
t.pageName = args[additionalArg]
t.pageDisplay = args[mw.ustring.format('שם %s %i', proj.arg, i)] or t.pageName
table.insert(projectLinks, t)
i = i + 1
additionalArg = mw.ustring.format('%s %i', proj.arg, i)
end
end
local float = 'float: left;'
if args['1'] == 'ימין' then float = 'float: right;' end
local templatestyles = frame:extensionTag{
name='templatestyles', args={src='יחידה:Sister project links/styles.css'}
}
local root = mw.html.create('table')
root:addClass('sistersitebox'):addClass('plainlinks'):addClass('noprint')
:cssText('margin: 0 1em 0.5em 0;' .. float)
root:tag('tr'):tag('th'):css('text-align','center'):wikitext('מיזמי [[חב"דפדיה]]')
local cat = ''
if not next(projectLinks) then
mw.log('Category added: קטגוריה:שגיאות פרמטריות בתבנית מיזמים')
cat = '[[קטגוריה:שגיאות פרמטריות בתבנית מיזמים]]'
else
for _, v in ipairs(projectLinks) do
root:tag('tr'):tag('td'):node(renderProject(v))
end
end
return templatestyles .. tostring(root) .. cat
end
return { render = render }