לדלג לתוכן

יחידה: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 }