پرش به محتوا

پودمان: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 imgCell = root:tag('tr'):tag('td'):attr('colspan', '4'):addClass('infobox-image'):wikitext(args.image)
        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
         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
خط ۹۸: خط ۱۳۳:
     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)
خط ۱۱۰: خط ۱۴۴:
         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
خط ۱۲۰: خط ۱۵۸:
     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
خط ۱۳۳: خط ۱۷۵:
         addRow(root, years or '', club)
         addRow(root, years or '', club)
         i = i + 1
         i = i + 1
    end
    -- افتخارات
    if isSet(args.medaltemplates) then
        root:tag('tr'):tag('td'):attr('colspan', '4'):wikitext(args.medaltemplates)
     end
     end


خط ۱۴۹: خط ۱۸۶:
     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