پرش به محتوا

پودمان:Infobox football biography: تفاوت میان نسخه‌ها

از ویکی البرز
جزبدون خلاصۀ ویرایش
جزبدون خلاصۀ ویرایش
خط ۴۲: خط ۴۲:
     root:tag('caption'):addClass('infobox-title'):wikitext(title)
     root:tag('caption'):addClass('infobox-title'):wikitext(title)


     -- تصویر
     -- تصویر (اصلاح شده)
     if isSet(args.image) then
     if isSet(args.image) then
         local imgCell = root:tag('tr'):tag('td'):attr('colspan', '4'):addClass('infobox-image'):wikitext(args.image)
        local img = args.image
        if not img:match('^%[%[.*%]%]$') and not img:match('^<') then
            img = '[[File:' .. img .. '|220px]]'
        end
         local imgCell = root:tag('tr'):tag('td'):attr('colspan', '4'):addClass('infobox-image'):wikitext(img)
         if isSet(args.caption) then
         if isSet(args.caption) then
             imgCell:tag('div'):addClass('infobox-caption'):wikitext(args.caption)
             imgCell:tag('div'):addClass('infobox-caption'):wikitext(args.caption)
خط ۶۸: خط ۷۲:
     end
     end


     -- باشگاه‌های جوانان
     -- جوانان، حرفه‌ای، مجموع، تیم ملی، مربیگری (همان کد قبلی)
 
     local i = 1
     local i = 1
     local header = false
     local header = false
خط ۸۲: خط ۸۷:
     end
     end


    -- باشگاه‌های حرفه‌ای
     i = 1
     i = 1
     header = false
     header = false
خط ۹۸: خط ۱۰۲:
     end
     end


    -- مجموع
     if isSet(args.totalcaps) or isSet(args.totalgoals) then
     if isSet(args.totalcaps) or isSet(args.totalgoals) then
         addMultiDataRow(root, 'مجموع', '', args.totalcaps, isSet(args.totalgoals) and '('..args.totalgoals..')' or nil)
         addMultiDataRow(root, 'مجموع', '', args.totalcaps, isSet(args.totalgoals) and '('..args.totalgoals..')' or nil)
خط ۱۲۰: خط ۱۲۳:
     end
     end


     -- دوران مربیگری
     -- مربیگری
     i = 1
     i = 1
     header = false
     header = false
خط ۱۳۵: خط ۱۳۸:
     end
     end


     -- افتخارات
     -- مدال‌ها (اصلاح شده)
     if isSet(args.medaltemplates) then
     if isSet(args.medaltemplates) then
         root:tag('tr'):tag('td'):attr('colspan', '4'):wikitext(args.medaltemplates)
         root:tag('tr'):tag('td')
            :attr('colspan', '4')
            :wikitext(args.medaltemplates)
     end
     end



نسخهٔ ‏۷ ژوئیهٔ ۲۰۲۶، ساعت ۲۰:۰۶

توضیحات این پودمان می‌تواند در پودمان:Infobox football biography/توضیحات قرار گیرد.

local p = {}
local getArgs = require('Module:Arguments').getArgs

local function isSet(v)
    if v == nil or v == false then return false end
    return mw.text.trim(tostring(v)) ~= ''
end

local function firstArg(args, ...)
    for i = 1, select('#', ...) do
        local key = select(i, ...)
        if isSet(args[key]) then return args[key] end
    end
    return nil
end

local function addRow(root, label, data)
    if not isSet(data) then return end
    local row = root:tag('tr')
    row:tag('th'):attr('scope', 'row'):addClass('infobox-label'):wikitext(label)
    row:tag('td'):attr('colspan', '3'):addClass('infobox-data'):wikitext(data)
end

local function addMultiDataRow(root, label, dataa, datab, datac)
    if not isSet(dataa) and not isSet(datab) and not isSet(datac) then return end
    local row = root:tag('tr')
    row:tag('th'):attr('scope', 'row'):addClass('infobox-label'):wikitext(label)
    row:tag('td'):addClass('infobox-data infobox-data-a'):wikitext(isSet(dataa) and dataa or '')
    if isSet(datab) then row:tag('td'):addClass('infobox-data infobox-data-b'):wikitext(datab) end
    if isSet(datac) then row:tag('td'):addClass('infobox-data infobox-data-c'):wikitext(datac) end
end

function p.main(frame)
    local args = getArgs(frame)
    local root = mw.html.create('table')
        :addClass('infobox')
        :addClass(args.child == 'yes' and 'infobox-subbox' or nil)
        :cssText(args.bodystyle or 'width: 22em; line-height: 1.2em;')

    -- عنوان
    local title = firstArg(args, 'name', 'playername') or mw.title.getCurrentTitle().text
    root:tag('caption'):addClass('infobox-title'):wikitext(title)

    -- تصویر (اصلاح شده)
    if isSet(args.image) then
        local img = args.image
        if not img:match('^%[%[.*%]%]$') and not img:match('^<') then
            img = '[[File:' .. img .. '|220px]]'
        end
        local imgCell = root:tag('tr'):tag('td'):attr('colspan', '4'):addClass('infobox-image'):wikitext(img)
        if isSet(args.caption) then
            imgCell:tag('div'):addClass('infobox-caption'):wikitext(args.caption)
        end
    end

    -- اطلاعات شخصی
    root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('اطلاعات شخصی')
    addRow(root, 'نام کامل', firstArg(args, 'fullname', 'full_name', 'نام کامل'))
    addRow(root, 'زادروز', firstArg(args, 'birth_date', 'dateofbirth', 'زادروز'))
    addRow(root, 'زادگاه', firstArg(args, 'birth_place', 'cityofbirth', 'زادگاه'))
    addRow(root, 'تاریخ مرگ', firstArg(args, 'death_date', 'dateofdeath', 'تاریخ مرگ'))
    addRow(root, 'محل مرگ', firstArg(args, 'death_place', 'محل مرگ'))
    addRow(root, 'قد', firstArg(args, 'height', 'قد'))
    addRow(root, 'پست', firstArg(args, 'position', 'پست'))

    -- باشگاه کنونی
    local curr = firstArg(args, 'currentclub', 'باشگاه کنونی')
    if isSet(curr) then
        root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('اطلاعات باشگاهی')
        addRow(root, 'باشگاه کنونی', curr)
        addRow(root, 'شمارهٔ پیراهن', firstArg(args, 'clubnumber', 'شمارهٔ پیراهن'))
    end

    -- جوانان، حرفه‌ای، مجموع، تیم ملی، مربیگری (همان کد قبلی)

    local i = 1
    local header = false
    while i <= 7 do
        local club = args['youthclubs' .. i] or (i == 1 and args.youthclubs)
        if not isSet(club) then break end
        if not header then
            root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('باشگاه‌های جوانان')
            header = true
        end
        addRow(root, args['youthyears' .. i] or '', club)
        i = i + 1
    end

    i = 1
    header = false
    while i <= 10 do
        local club = args['clubs' .. i] or (i == 1 and args.clubs)
        if not isSet(club) then break end
        if not header then
            root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('باشگاه‌های حرفه‌ای')
            header = true
        end
        local caps = args['caps' .. i] or args['caps(goals)' .. i]
        local goals = args['goals' .. i]
        addMultiDataRow(root, args['years' .. i] or '', club, caps, isSet(goals) and '('..goals..')' or nil)
        i = i + 1
    end

    if isSet(args.totalcaps) or isSet(args.totalgoals) then
        addMultiDataRow(root, 'مجموع', '', args.totalcaps, isSet(args.totalgoals) and '('..args.totalgoals..')' or nil)
    end

    -- تیم ملی
    i = 1
    header = false
    while i <= 8 do
        local team = args['nationalteam' .. i] or (i == 1 and args.nationalteam)
        if not isSet(team) then break end
        if not header then
            root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('تیم ملی')
            header = true
        end
        local years = args['nationalyears' .. i]
        local caps = args['nationalcaps' .. i] or args['nationalcaps(goals)' .. i]
        local goals = args['nationalgoals' .. i]
        addMultiDataRow(root, years or '', team, caps, isSet(goals) and '('..goals..')' or nil)
        i = i + 1
    end

    -- مربیگری
    i = 1
    header = false
    while i <= 10 do
        local club = args['managerclubs' .. i]
        if not isSet(club) then break end
        if not header then
            root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('دوران مربیگری')
            header = true
        end
        local years = args['manageryears' .. i]
        addRow(root, years or '', club)
        i = i + 1
    end

    -- مدال‌ها (اصلاح شده)
    if isSet(args.medaltemplates) then
        root:tag('tr'):tag('td')
            :attr('colspan', '4')
            :wikitext(args.medaltemplates)
    end

    -- پانویس
    local footer = {}
    if isSet(args.pcupdate) then
        table.insert(footer, "* آمار باشگاهی به‌روزرسانی شده در تاریخ " .. args.pcupdate)
    end
    if isSet(args.ntupdate) then
        table.insert(footer, "‡ آمار ملی به‌روزرسانی شده در تاریخ " .. args.ntupdate)
    end
    if #footer > 0 then
        root:tag('tr'):tag('td'):attr('colspan', '4'):addClass('infobox-below'):css('font-size', '82%'):wikitext(table.concat(footer, '<br>'))
    end

    return tostring(root)
end

return p