پرش به محتوا

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

از ویکی البرز
صفحه‌ای تازه حاوی «local p = {} local getArgs = require('Module:Arguments').getArgs -- Helper functions local function isSet(v) if v == nil 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...» ایجاد کرد
 
جزبدون خلاصۀ ویرایش
خط ۲: خط ۲:
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs


-- Helper functions
local function isSet(v)
local function isSet(v)
     if v == nil then return false end
     if v == nil then return false end
خط ۸: خط ۷:
end
end


-- اولین مقدار موجود از میان چندین کلید را برمی‌گرداند
local function firstArg(args, ...)
local function firstArg(args, ...)
     for i = 1, select('#', ...) do
     for i = 1, select('#', ...) do
خط ۳۳: خط ۳۱:


local function addMultiDataRow(root, label, dataa, datab, datac)
local function addMultiDataRow(root, label, dataa, datab, datac)
     if not isSet(dataa) and not isSet(datab) and not isSet(datac) then  
     if not isSet(dataa) and not isSet(datab) and not isSet(datac) then return end
        return  
    end
     local row = root:tag('tr')
     local row = root:tag('tr')
     row:tag('th')
     row:tag('th')
خط ۶۸: خط ۶۴:
     -- Title
     -- Title
     local title = firstArg(args, 'name', 'playername') or mw.title.getCurrentTitle().text
     local title = firstArg(args, 'name', 'playername') or mw.title.getCurrentTitle().text
     if isSet(title) then
     root:tag('caption')
        root:tag('caption')
        :addClass('infobox-title')
            :addClass('infobox-title')
        :wikitext(title)
            :wikitext(title)
    end


     -- Image
     -- Image
خط ۸۸: خط ۸۲:


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


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


     -- باشگاه‌های جوانان (تک پاس)
     -- باشگاه‌های جوانان
     local i = 1
     local i = 1
     local youthHeaderAdded = false
     while isSet(args['youthclubs' .. i]) or (i == 1 and isSet(args.youthclubs)) do
    while true do
         local club = args['youthclubs' .. i] or (i == 1 and args.youthclubs)
         local club = firstArg(args, 'youthclubs' .. i, 'youthclubs')
         local years = args['youthyears' .. i] or (i == 1 and args.youthyears)
         if not isSet(club) then break end
         if i == 1 then
 
         if not youthHeaderAdded then
             root:tag('tr'):tag('th')
             root:tag('tr'):tag('th')
                 :attr('colspan', '4')
                 :attr('colspan', '4')
                 :addClass('infobox-header')
                 :addClass('infobox-header')
                 :wikitext('باشگاه‌های جوانان')
                 :wikitext('باشگاه‌های جوانان')
            youthHeaderAdded = true
        end
        local years = firstArg(args, 'youthyears' .. i, 'youthyears')
        addRow(root, years or '', club)
        i = i + 1
    end
    -- باشگاه‌های حرفه‌ای (تک پاس)
    i = 1
    local seniorHeaderAdded = false
    while true do
        local club = args['clubs' .. i] or (i == 1 and args.clubs)
        if not isSet(club) then break end
        if not seniorHeaderAdded then
            root:tag('tr'):tag('th')
                :attr('colspan', '4')
                :addClass('infobox-header')
                :wikitext('باشگاه‌های حرفه‌ای')
            seniorHeaderAdded = true
        end
        local years = args['years' .. i]
        local caps  = args['caps' .. i] or args['caps(goals)' .. i]
        local goals = args['goals' .. i]
        addMultiDataRow(root, years or '', club, caps, isSet(goals) and '(' .. goals .. ')' or nil)
        i = i + 1
    end
    -- مجموع
    if seniorHeaderAdded and (isSet(args.totalcaps) or isSet(args.totalgoals)) then
        addMultiDataRow(root, 'مجموع', '', args.totalcaps, isSet(args.totalgoals) and '(' .. args.totalgoals .. ')' or nil)
    end
    -- تیم ملی
    i = 1
    local nationalHeaderAdded = false
    while true do
        local team = args['nationalteam' .. i] or (i == 1 and args.nationalteam)
        if not isSet(team) then break end
        if not nationalHeaderAdded then
            root:tag('tr'):tag('th')
                :attr('colspan', '4')
                :addClass('infobox-header')
                :wikitext('تیم ملی')
            nationalHeaderAdded = 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
    local managerHeaderAdded = false
    while true do
        local club = args['managerclubs' .. i]
        if not isSet(club) then break end
        if not managerHeaderAdded then
            root:tag('tr'):tag('th')
                :attr('colspan', '4')
                :addClass('infobox-header')
                :wikitext('دوران مربیگری')
            managerHeaderAdded = true
         end
         end
        local years = args['manageryears' .. i]
         addRow(root, years or '', club)
         addRow(root, years or '', club)
         i = i + 1
         i = i + 1
     end
     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)
     return tostring(root)

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

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

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

local function isSet(v)
    if v == nil 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;')

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

    -- Image
    if isSet(args.image) then
        local imgCell = root:tag('tr'):tag('td')
            :attr('colspan', '4')
            :addClass('infobox-image')
            :wikitext(args.image)
        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 current = firstArg(args, 'currentclub', 'باشگاه کنونی')
    if isSet(current) then
        root:tag('tr'):tag('th')
            :attr('colspan', '4')
            :addClass('infobox-header')
            :wikitext('اطلاعات باشگاهی')
        addRow(root, 'باشگاه کنونی', current)
        addRow(root, 'شمارهٔ پیراهن', firstArg(args, 'clubnumber', 'شمارهٔ پیراهن'))
    end

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

    -- بقیه بخش‌ها را برای جلوگیری از خطا فعلاً ساده کردم
    -- (بعداً کامل می‌کنیم)

    return tostring(root)
end

return p