Module:Wn/bn/Userscript table

Documentation for this module may be created at Module:Wn/bn/Userscript table/doc

local p = {}

function p.generateTable(frame)
    local args = frame.args

    if next(args) == nil then
        args = frame:getParent().args
    end

    local outerDiv = mw.html.create('div')
    outerDiv:addClass('cdx-table')

    local tableWrapperDiv = outerDiv:tag('div')
    tableWrapperDiv:addClass('cdx-table__table-wrapper')

    local html = tableWrapperDiv:tag('table')
    html:addClass('cdx-table__table cdx-table__table--borders-vertical sortable')

    local header = html:tag('tr')
    header:tag('th'):wikitext('স্ক্রিপ্টের নাম'):css('width', '30%'):done()
    header:tag('th'):wikitext('বিবরণ'):done()

    local i = 1
    while args['source' .. i] do
        local source = args['source' .. i]
        if source and source ~= '' then
            local row = html:tag('tr')
            
            -- Add CSS for even rows
            if i % 2 == 0 then
                row:css('background-color', '#f8f9fa')
            end

            local desc = args['desc' .. i] or ''
            local sourcePage = mw.title.new(source)
            local name = source:match('([^/]+)%.js') or 'Unknown'

            local nameCell = row:tag('td')
            local baseSource = source:match('(.+)%.js')
            local basePage = baseSource and mw.title.new(baseSource) or nil

            if basePage and basePage.exists then
                nameCell:wikitext(string.format('[[%s|%s]] ([[%s|উৎস]])', baseSource, name, source))
            else
                nameCell:wikitext(string.format('%s ([[%s|উৎস]])', name, source))
            end
            nameCell:done()

            local descCell = row:tag('td')
            descCell:wikitext(desc)
            
            local instruction = string.format(
                '[[Special:MyPage/common.js&action=edit|<b title="আপনার common.js পাতাটি সম্পাদনা করতে এখানে ক্লিক করুন">এখানে ক্লিক করুন</b>]] এবং এটি প্রতিলেপন করুন:<div><code>{{subst:lusc|1=%s}}</code></div>',
                source
            )

            local collapsibleDiv = descCell:tag('div')
                :newline()
                :addClass('mw-collapsible mw-collapsed userscripttable-instruction')

            collapsibleDiv:tag('div')
                :addClass('mw-collapsible-toggle toccolours')
                :css('color', '#3366CC')
                :css('float', 'none')
                :css('margin-top', '0.3em')
                :wikitext('কীভাবে ইনস্টল করবেন!')
                :done()

            collapsibleDiv:tag('div')
                :addClass('mw-collapsible-content plainlinks')
                :css('margin-top', '0.5em')
                :wikitext(instruction)
                :done()

            descCell:done()
        end
        i = i + 1
    end

    return tostring(outerDiv)
end

return p