Module:Tasks
MyWikiBiz, Author Your Legacy — Wednesday January 01, 2025
Jump to navigationJump to searchDocumentation for this module may be created at Module:Tasks/doc
-- This module implements {{tasks}}. local itemHeadings = mw.loadData('Module:Tasks/headings') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do if v ~= '' then args[k] = v end end return p.luaMain(args) end function p.luaMain(args) -- Make an array of list items. local items = {} for k, v in pairs(args) do local heading = itemHeadings[k] if heading then items[#items + 1] = { key = k, heading = heading, content = v } end end table.sort(items, function (t1, t2) local key1 = t1.key local key2 = t2.key if key1 == 'reason' then return true else return key1 < key2 end end) -- Add the "other" argument to the list item array. if args.other then table.insert(items, { key = 'other', heading = args.othertext or 'Other', content = args.other }) end -- Make the list wikitext. local list = mw.html.create('ul') list :css{ ['font-size'] = '100%', padding = '.3em 0 .3em 25px', margin = '0' } if args.listclass then list:addClass(args.listclass) end for i, t in ipairs(items) do list:tag('li'):wikitext(string.format( "'''''%s''''':\n%s", t.heading, t.content )) end list = tostring(list) -- Make the surrounding div tags. local listDiv = mw.html.create('div') listDiv :css{ position = 'relative', left = '0px', ['margin-right'] = '-0px', ['z-index'] = '15' } :wikitext( "Here are some " .. "'''[[Wikipedia:Community portal/Opentask|tasks you can do]]''':" ) :newline() :wikitext(list) listDiv = tostring(listDiv) -- Construct the wikitable. local image if args.image == 'off' then image = '' else image = '[[File:Nuvola apps korganizer.svg|50px|<nowiki></nowiki>]]' .. '<br /><div style="width:65px;height:0px;"></div>' end local tableFormat = [[ {| style="background:none;width:auto;" | style="vertical-align:top" | %s | %s |}]] return string.format(tableFormat, image, listDiv) end return p