پرش به محتوا

پودمان:AlborzInfoBox

از ویکی البرز
نسخهٔ تاریخ ‏۳ ژوئیهٔ ۲۰۲۶، ساعت ۱۵:۴۱ توسط Modir (بحث | مشارکت‌ها) (صفحه‌ای تازه حاوی «-------------------------------------------------------------------------------- -- Module:AlborzInfoBox -- Wiki Alborz -- Version 1.0 -------------------------------------------------------------------------------- local p = {} local data = mw.loadData('Module:AlborzInfoBox/Data/Geography') -------------------------------------------------------------------------------- -- Render ----------------------------------------------------...» ایجاد کرد)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)

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

--------------------------------------------------------------------------------
-- Module:AlborzInfoBox
-- Wiki Alborz
-- Version 1.0
--------------------------------------------------------------------------------

local p = {}

local data = mw.loadData('Module:AlborzInfoBox/Data/Geography')

--------------------------------------------------------------------------------
-- Render
--------------------------------------------------------------------------------

local function render(args)

    local layout = data.layouts[args["نوع"] or "city"]

    if not layout then
        layout = data.layouts.city
    end

    local root = mw.html.create("table")
        :addClass("infobox")
        :addClass("alborz-infobox")

    --------------------------------------------------------------------------
    -- Title
    --------------------------------------------------------------------------

    local title = args["نام"]

    if not title or title == "" then
        title = mw.title.getCurrentTitle().text
    end

    root
        :tag("tr")
            :tag("th")
                :attr("colspan","2")
                :addClass("infobox-title")
                :wikitext(title)

    --------------------------------------------------------------------------
    -- Image
    --------------------------------------------------------------------------

    if args["تصویر"] and args["تصویر"] ~= "" then

        root
            :tag("tr")
                :tag("td")
                    :attr("colspan","2")
                    :addClass("infobox-image")
                    :wikitext("[[پرونده:" ..
                        args["تصویر"] ..
                        "|250px|وسط]]")

        if args["توضیح تصویر"] and args["توضیح تصویر"] ~= "" then

            root
                :tag("tr")
                    :tag("td")
                        :attr("colspan","2")
                        :addClass("infobox-caption")
                        :wikitext(args["توضیح تصویر"])

        end

    end

    --------------------------------------------------------------------------
    -- Rows
    --------------------------------------------------------------------------
        for i = 1, #layout do

        local field = data.fields[layout[i]]

        if field then

            local value

            ------------------------------------------------------------------
            -- Default value
            ------------------------------------------------------------------

            if field.default then
                value = field.default
            end

            ------------------------------------------------------------------
            -- Argument value
            ------------------------------------------------------------------

            if field.arg and args[field.arg] and args[field.arg] ~= "" then
                value = args[field.arg]
            end

            ------------------------------------------------------------------
            -- Render row
            ------------------------------------------------------------------

            if value and value ~= "" then

                local row = root:tag("tr")

                row
                    :tag("th")
                        :addClass("infobox-label")
                        :wikitext(field.label)

                if field.arg == "وبگاه" then

                    row
                        :tag("td")
                            :addClass("infobox-data")
                            :css("direction","ltr")
                            :css("text-align","left")
                            :wikitext(value)

                else

                    row
                        :tag("td")
                            :addClass("infobox-data")
                            :wikitext(value)

                end

            end

        end

    end

    --------------------------------------------------------------------------
    -- Categories
    --------------------------------------------------------------------------

    if args["رده"] and args["رده"] ~= "" then
        root:wikitext(args["رده"])
    end

    return tostring(root)

end

--------------------------------------------------------------------------------
-- Main
--------------------------------------------------------------------------------

function p.main(frame)

    local args = {}

    local parent = frame:getParent()

    if parent then
        for k, v in pairs(parent.args) do
            if v and v ~= "" then
                args[k] = mw.text.trim(v)
            end
        end
    end

    for k, v in pairs(frame.args) do
        if v and v ~= "" then
            args[k] = mw.text.trim(v)
        end
    end

    return render(args)

end

return p