לדלג לתוכן

יחידה:Sister project links

מתוך חב"דפדיה, אנציקלופדיה חב"דית חופשית

ניתן ליצור תיעוד על היחידה הזאת בדף יחידה: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 }