پرش به محتوا

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

از ویکی البرز
جزبدون خلاصۀ ویرایش
جزبدون خلاصۀ ویرایش
 
(۲ نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد)
خط ۴۰: خط ۴۰:
     -- عنوان
     -- عنوان
     local title = firstArg(args, 'name', 'playername') or mw.title.getCurrentTitle().text
     local title = firstArg(args, 'name', 'playername') or mw.title.getCurrentTitle().text
     root:tag('caption'):addClass('infobox-title'):wikitext(title)
     root:tag('caption')
        :addClass('infobox-title')
        :css('text-align', 'center')
        :css('font-weight', 'bold')
        :wikitext(title)


     -- تصویر (اصلاح شده)
     -- تصویر
     if isSet(args.image) then
     if isSet(args.image) then
         local img = args.image
         local img = args.image
         if not img:match('^%[%[.*%]%]$') and not img:match('^<') then
         if not img:match('^%[%[File:') and not img:match('^<') then
             img = '[[File:' .. img .. '|220px]]'
             img = '[[File:' .. img .. '|220px]]'
         end
         end
         local imgCell = root:tag('tr'):tag('td'):attr('colspan', '4'):addClass('infobox-image'):wikitext(img)
         local imgCell = root:tag('tr'):tag('td')
            :attr('colspan', '4')
            :addClass('infobox-image')
            :css('text-align', 'center')
            :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')
                :css('text-align', 'center')
                :wikitext(args.caption)
         end
         end
     end
     end
    -- هدر با رنگ و وسط‌چین
    local headerCss = 'background-color: #b0c4de; text-align: center; font-weight: bold; padding: 4px;'


     -- اطلاعات شخصی
     -- اطلاعات شخصی
     root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('اطلاعات شخصی')
     root:tag('tr'):tag('th')
        :attr('colspan', '4')
        :addClass('infobox-header')
        :cssText(headerCss)
        :wikitext('اطلاعات شخصی')
 
     addRow(root, 'نام کامل', firstArg(args, 'fullname', 'full_name', 'نام کامل'))
     addRow(root, 'نام کامل', firstArg(args, 'fullname', 'full_name', 'نام کامل'))
     addRow(root, 'زادروز', firstArg(args, 'birth_date', 'dateofbirth', 'زادروز'))
     addRow(root, 'زادروز', firstArg(args, 'birth_date', 'dateofbirth', 'زادروز'))
خط ۶۷: خط ۸۶:
     local curr = firstArg(args, 'currentclub', 'باشگاه کنونی')
     local curr = firstArg(args, 'currentclub', 'باشگاه کنونی')
     if isSet(curr) then
     if isSet(curr) then
         root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('اطلاعات باشگاهی')
         root:tag('tr'):tag('th')
            :attr('colspan', '4')
            :addClass('infobox-header')
            :cssText(headerCss)
            :wikitext('اطلاعات باشگاهی')
         addRow(root, 'باشگاه کنونی', curr)
         addRow(root, 'باشگاه کنونی', curr)
         addRow(root, 'شمارهٔ پیراهن', firstArg(args, 'clubnumber', 'شمارهٔ پیراهن'))
         addRow(root, 'شمارهٔ پیراهن', firstArg(args, 'clubnumber', 'شمارهٔ پیراهن'))
     end
     end


     -- جوانان، حرفه‌ای، مجموع، تیم ملی، مربیگری (همان کد قبلی)
     -- جوانان
 
     local i = 1
     local i = 1
     local header = false
     local header = false
خط ۸۰: خط ۱۰۲:
         if not isSet(club) then break end
         if not isSet(club) then break end
         if not header then
         if not header then
             root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('باشگاه‌های جوانان')
             root:tag('tr'):tag('th')
                :attr('colspan', '4')
                :addClass('infobox-header')
                :cssText(headerCss)
                :wikitext('باشگاه‌های جوانان')
             header = true
             header = true
         end
         end
خط ۸۷: خط ۱۱۳:
     end
     end


    -- حرفه‌ای
     i = 1
     i = 1
     header = false
     header = false
خط ۹۳: خط ۱۲۰:
         if not isSet(club) then break end
         if not isSet(club) then break end
         if not header then
         if not header then
             root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('باشگاه‌های حرفه‌ای')
             root:tag('tr'):tag('th')
                :attr('colspan', '4')
                :addClass('infobox-header')
                :cssText(headerCss)
                :wikitext('باشگاه‌های حرفه‌ای')
             header = true
             header = true
         end
         end
خط ۱۱۳: خط ۱۴۴:
         if not isSet(team) then break end
         if not isSet(team) then break end
         if not header then
         if not header then
             root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('تیم ملی')
             root:tag('tr'):tag('th')
                :attr('colspan', '4')
                :addClass('infobox-header')
                :cssText(headerCss)
                :wikitext('تیم ملی')
             header = true
             header = true
         end
         end
خط ۱۳۰: خط ۱۶۵:
         if not isSet(club) then break end
         if not isSet(club) then break end
         if not header then
         if not header then
             root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('دوران مربیگری')
             root:tag('tr'):tag('th')
                :attr('colspan', '4')
                :addClass('infobox-header')
                :cssText(headerCss)
                :wikitext('دوران مربیگری')
             header = true
             header = true
         end
         end
خط ۱۳۸: خط ۱۷۷:
     end
     end


    -- مدال‌ها
    if isSet(args.medaltemplates) then
        root:tag('tr'):tag('th')
            :attr('colspan', '4')
            :addClass('infobox-header')
            :wikitext('افتخارات')
       
        root:tag('tr'):tag('td')
            :attr('colspan', '4')
            :wikitext(args.medaltemplates)
    end
     -- پانویس
     -- پانویس
     local footer = {}
     local footer = {}
خط ۱۵۸: خط ۱۸۶:
     end
     end
     if #footer > 0 then
     if #footer > 0 then
         root:tag('tr'):tag('td'):attr('colspan', '4'):addClass('infobox-below'):css('font-size', '82%'):wikitext(table.concat(footer, '<br>'))
         root:tag('tr'):tag('td')
            :attr('colspan', '4')
            :addClass('infobox-below')
            :css('font-size', '82%')
            :wikitext(table.concat(footer, '<br>'))
     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')
        :css('text-align', 'center')
        :css('font-weight', 'bold')
        :wikitext(title)

    -- تصویر
    if isSet(args.image) then
        local img = args.image
        if not img:match('^%[%[File:') and not img:match('^<') then
            img = '[[File:' .. img .. '|220px]]'
        end
        local imgCell = root:tag('tr'):tag('td')
            :attr('colspan', '4')
            :addClass('infobox-image')
            :css('text-align', 'center')
            :wikitext(img)
        if isSet(args.caption) then
            imgCell:tag('div')
                :addClass('infobox-caption')
                :css('text-align', 'center')
                :wikitext(args.caption)
        end
    end

    -- هدر با رنگ و وسط‌چین
    local headerCss = 'background-color: #b0c4de; text-align: center; font-weight: bold; padding: 4px;'

    -- اطلاعات شخصی
    root:tag('tr'):tag('th')
        :attr('colspan', '4')
        :addClass('infobox-header')
        :cssText(headerCss)
        :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')
            :cssText(headerCss)
            :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')
                :cssText(headerCss)
                :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')
                :cssText(headerCss)
                :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')
                :cssText(headerCss)
                :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')
                :cssText(headerCss)
                :wikitext('دوران مربیگری')
            header = true
        end
        local years = args['manageryears' .. i]
        addRow(root, years or '', club)
        i = i + 1
    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