יחידה:Sister project links: הבדלים בין גרסאות בדף

מתוך חב"דפדיה, אנציקלופדיה חב"דית חופשית
קפיצה לניווט קפיצה לחיפוש
(יצירת דף עם התוכן "local projectsTemplate = { ['cphe'] = { ['logo']='סמל ב"ה.png', ['projectName'] = 'חב"דפדיה', ['description']='חב"דפדיה', ['display']='שפה זו', ['pageName'] = '' }, ['wiktionary'] = { ['logo']='סמל ב"ה.png', ['projectName'] = 'חב"דטקסט', ['description']='טקסט', ['display']='חב"דטקסט', ['projectPrefix']='text' }, ['wikiquote'] = { ['logo']='סמל ב"ה.png', ['projectName'] = '...")
 
אין תקציר עריכה
שורה 28: שורה 28:
local title = mw.title.getCurrentTitle().text
local title = mw.title.getCurrentTitle().text
local projectLinks = {}
local projectLinks = {}
local entity = mw.wikibase.getEntityIdForCurrentPage()
local projects = {
local projects = {
{
{
שורה 43: שורה 42:


for i, proj in ipairs(projects) do
for i, proj in ipairs(projects) do
-- fetch link from wikidata if not specific
if args[proj['arg']] then
if args[proj['arg']] then
local t = projectsTemplate[proj['template']]
local t = projectsTemplate[proj['template']]
local defaultDisplayName = args[proj['arg']]
local defaultDisplayName = args[proj['arg']]
if proj['arg'] == 'ויקישיתוף' then
defaultDisplayName = title
end
t['pageName'] = args[proj['arg']]
t['pageName'] = args[proj['arg']]
t['pageDisplay'] = args['שם ' .. proj['arg']] or defaultDisplayName
t['pageDisplay'] = args['שם ' .. proj['arg']] or defaultDisplayName

גרסה מ־10:55, 21 ביוני 2024

ניתן ליצור תיעוד על היחידה הזאת בדף יחידה:Sister project links/תיעוד

local projectsTemplate = {
	['cphe'] = {
		['logo']='סמל ב"ה.png',
		['projectName'] = 'חב"דפדיה',
		['description']='[[חב"דפדיה]]',
		['display']='שפה זו',
		['pageName'] = ''
	},
	['wiktionary'] = {
		['logo']='סמל ב"ה.png',
		['projectName'] = 'חב"דטקסט',
		['description']='טקסט',
		['display']='חב"דטקסט',
		['projectPrefix']='text'
	},
	['wikiquote'] = {
		['logo']='סמל ב"ה.png',
		['projectName'] = 'חב"דציטוט',
		['description']='ציטוטים',
		['display']='חב"דציטוט',
		['projectPrefix']='zitut'
	}
}

function render(frame)
	
	local args = require('Module:Arguments').getArgs(frame)
	local title = mw.title.getCurrentTitle().text
	local projectLinks = {}
	local projects = {
		{
			arg='חב"דציטוט',
			template='wikiquote',
			name='zitut'
		},
		{
			arg='חב"דטקסט',
			template='wikisource',
			name='zitut'
		}
	}

	for i, proj in ipairs(projects) do
		if args[proj['arg']] then
			local t = projectsTemplate[proj['template']]
			local defaultDisplayName = args[proj['arg']]
			t['pageName'] = args[proj['arg']]
			t['pageDisplay'] = args['שם ' .. proj['arg']] or defaultDisplayName
			
			table.insert(projectLinks, t)
		else
			
		end	

		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  = ''
	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 k,v in pairs(projectLinks) do
			root:tag('tr'):tag('td'):node(renderProject(v))
		end
	end
	
	return tostring(root) .. templatestyles .. cat
end

function renderProject(projectTemplate)
	return mw.html.create('div')
		:addClass('sisterwikilinkT')
		:wikitext(mw.ustring.format("[[File:%s|20px|link=|%s]] %s ב%s: '''[[:%s:%s|%s]]'''", 
			projectTemplate['logo'], projectTemplate['projectName'], 
			projectTemplate['description'], projectTemplate['display'],
			projectTemplate['projectPrefix'], projectTemplate['pageName'], projectTemplate['pageDisplay']))

end

return 	{
	render=render
}