לדלג לתוכן

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

מתוך חב"דפדיה, אנציקלופדיה חב"דית חופשית
מ. רובין (שיחה | תרומות)
אין תקציר עריכה
מ. רובין (שיחה | תרומות)
ניסיון
שורה 1: שורה 1:
local projectsTemplate = {
local projectsTemplate = {
['cphe'] = {
    ['cphe'] = {
['logo']='סמל ב"ה.png',
        logo='סמל ב"ה.png',
['projectName'] = 'חב"דפדיה',
        projectName='חב"דפדיה',
['description']='[[חב"דפדיה]]',
        description='[[חב"דפדיה]]',
['display']='שפה זו',
        display='שפה זו',
['pageName'] = ''
        projectPrefix='',
},
        pageName=''
['chabadtext'] = {
    },
['logo']='סמל ב"ה.png',
    ['chabadtext'] = {
['projectName'] = 'חב"דטקסט',
        logo='סמל ב"ה.png',
['description']='טקסט',
        projectName='חב"דטקסט',
['display']='חב"דטקסט',
        description='טקסט',
['projectPrefix']='text'
        display='חב"דטקסט',
},
        projectPrefix='text',
['chabadquote'] = {
        pageName=''
['logo']='סמל ב"ה.png',
    },
['projectName'] = 'חב"דציטוט',
    ['chabadquote'] = {
['description']='ציטוטים',
        logo='סמל ב"ה.png',
['display']='חב"דציטוט',
        projectName='חב"דציטוט',
['projectPrefix']='zitut'
        description='ציטוטים',
}
        display='חב"דציטוט',
        projectPrefix='zitut',
        pageName=''
    }
}
}


local function renderProject(projectTemplate)
local function renderProject(proj)
local prefix = projectTemplate['projectPrefix'] or ''
    local prefix = proj.projectPrefix or ''
local pageName = projectTemplate['pageName'] or ''
    local page = proj.pageName or ''
local pageDisplay = projectTemplate['pageDisplay'] or pageName
    local display = proj.pageDisplay or page
return mw.html.create('div')
    local logo = proj.logo or ''
:addClass('sistersitebox')
   
:wikitext(mw.ustring.format(
    local link
"[[File:%s|20px|link=|%s]] %s ב%s: %s",
    if prefix ~= '' and page ~= '' then
projectTemplate['logo'],
        link = string.format('[[:%s:%s|%s]]', prefix, page, display)
projectTemplate['projectName'],
    else
projectTemplate['description'],
        link = display
projectTemplate['display'],
    end
(prefix ~= '' and '[[:'..prefix..':'..pageName..'|'..pageDisplay..']]' or pageDisplay)
 
))
    local html = mw.html.create('div'):addClass('sisterwikilinkT')
    if logo ~= '' then
        html:wikitext(string.format('[[File:%s|20px|link=|%s]] %s ב%s: %s',
            logo, proj.projectName, proj.description, proj.display, link))
    else
        html:wikitext(string.format('%s ב%s: %s', proj.projectName, proj.display, link))
    end
    return html
end
end


local function render(frame)
local function render(frame)
local args = require('Module:Arguments').getArgs(frame)
    local args = require('Module:Arguments').getArgs(frame)
local title = mw.title.getCurrentTitle().text
    local title = mw.title.getCurrentTitle().text
local projectLinks = {}
    local projectLinks = {}


-- projects from arguments
    -- חב"דפדיה
if args['חב"דפדיה'] then
    if args['חב"דפדיה'] then
local t = mw.clone(projectsTemplate['cphe'])
        local t = mw.clone(projectsTemplate['cphe'])
t['projectPrefix'] = args['חב"דפדיה']
        t.projectPrefix = args['חב"דפדיה']
t['pageName'] = args['חב"דפדיה']
        t.pageName = args['חב"דפדיה']
t['pageDisplay'] = args['שם חב"דפדיה'] or title
        t.pageDisplay = args['שם חב"דפדיה'] or title
table.insert(projectLinks, t)
        table.insert(projectLinks, t)
end
    end
if args['חב"דפדיה 2'] then
    -- חב"דפדיה 2
local t = mw.clone(projectsTemplate['cphe'])
    if args['חב"דפדיה 2'] then
t['projectPrefix'] = args['חב"דפדיה 2']
        local t = mw.clone(projectsTemplate['cphe'])
t['pageName'] = args['חב"דפדיה 2']
        t.projectPrefix = args['חב"דפדיה 2']
t['pageDisplay'] = args['שם חב"דפדיה 2'] or title
        t.pageName = args['חב"דפדיה 2']
table.insert(projectLinks, t)
        t.pageDisplay = args['שם חב"דפדיה 2'] or title
end
        table.insert(projectLinks, t)
    end


local projects = {
    local projects = {
{arg='חב"דציטוט', template='chabadquote'},
        {arg='חב"דציטוט', template='chabadquote'},
{arg='חב"דטקסט', template='chabadtext'}
        {arg='חב"דטקסט', template='chabadtext'}
}
    }


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


-- handle multiple numbered args
        -- מספרים נוספים
local i = 2
        local i = 2
local additionalArg = mw.ustring.format('%s %i', proj.arg, i)
        local additionalArg = string.format('%s %d', proj.arg, i)
while args[additionalArg] do
        while args[additionalArg] do
local t = mw.clone(projectsTemplate[proj.template])
            local t = mw.clone(projectsTemplate[proj.template])
t.pageName = args[additionalArg]
            t.pageName = args[additionalArg]
t.pageDisplay = args[mw.ustring.format('שם %s %i', proj.arg, i)] or t.pageName
            t.pageDisplay = args[string.format('שם %s %d', proj.arg, i)] or t.pageName
table.insert(projectLinks, t)
            table.insert(projectLinks, t)
i = i + 1
            i = i + 1
additionalArg = mw.ustring.format('%s %i', proj.arg, i)
            additionalArg = string.format('%s %d', proj.arg, i)
end
        end
end
    end


local float = 'float: left;'
    local float = 'float: left;'
if args['1'] == 'ימין' then float = 'float: right;' end
    if args['1'] == 'ימין' then float = 'float: right;' end


local templatestyles = frame:extensionTag{
    local templatestyles = frame:extensionTag{
name='templatestyles', args={src='יחידה:Sister project links/styles.css'}
        name='templatestyles',
}
        args={ src='יחידה:Sister project links/styles.css' }
    }


local root = mw.html.create('table')
    local root = mw.html.create('table')
root:addClass('sistersitebox'):addClass('plainlinks'):addClass('noprint')
    root:addClass('sistersitebox'):addClass('plainlinks'):addClass('noprint')
:cssText('margin: 0 1em 0.5em 0;' .. float)
        :cssText('margin: 0 1em 0.5em 0;' .. float)
root:tag('tr'):tag('th'):css('text-align','center'):wikitext('מיזמי [[חב"דפדיה]]')
    root:tag('tr'):tag('th'):css('text-align','center'):wikitext('מיזמי [[חב"דפדיה]]')


local cat = ''
    local cat = ''
if not next(projectLinks) then
    if not next(projectLinks) then
mw.log('Category added: קטגוריה:שגיאות פרמטריות בתבנית מיזמים')
        mw.log('Category added: קטגוריה:שגיאות פרמטריות בתבנית מיזמים')
cat = '[[קטגוריה:שגיאות פרמטריות בתבנית מיזמים]]'
        cat = '[[קטגוריה:שגיאות פרמטריות בתבנית מיזמים]]'
else
    else
for _, v in ipairs(projectLinks) do
        for _, v in ipairs(projectLinks) do
root:tag('tr'):tag('td'):node(renderProject(v))
            root:tag('tr'):tag('td'):node(renderProject(v))
end
        end
end
    end


return templatestyles .. tostring(root) .. cat
    return templatestyles .. tostring(root) .. cat
end
end


return { render = render }
return { render = render }

גרסה מ־13:22, 17 באוגוסט 2025

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

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

local function renderProject(proj)
    local prefix = proj.projectPrefix or ''
    local page = proj.pageName or ''
    local display = proj.pageDisplay or page
    local logo = proj.logo or ''
    
    local link
    if prefix ~= '' and page ~= '' then
        link = string.format('[[:%s:%s|%s]]', prefix, page, display)
    else
        link = display
    end

    local html = mw.html.create('div'):addClass('sisterwikilinkT')
    if logo ~= '' then
        html:wikitext(string.format('[[File:%s|20px|link=|%s]] %s ב%s: %s',
            logo, proj.projectName, proj.description, proj.display, link))
    else
        html:wikitext(string.format('%s ב%s: %s', proj.projectName, proj.display, link))
    end
    return html
end

local function render(frame)
    local args = require('Module:Arguments').getArgs(frame)
    local title = mw.title.getCurrentTitle().text
    local projectLinks = {}

    -- חב"דפדיה
    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
    -- חב"דפדיה 2
    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

        -- מספרים נוספים
        local i = 2
        local additionalArg = string.format('%s %d', proj.arg, i)
        while args[additionalArg] do
            local t = mw.clone(projectsTemplate[proj.template])
            t.pageName = args[additionalArg]
            t.pageDisplay = args[string.format('שם %s %d', proj.arg, i)] or t.pageName
            table.insert(projectLinks, t)
            i = i + 1
            additionalArg = string.format('%s %d', 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 }