Module:collapsible category tree: Difference between revisions

From Linguifex
Jump to navigation Jump to search
(Created page with "local export = {} local m_utilities = require("Module:utilities") function export.make(args) local lang = args.lang local sc = args.sc -- Add a span which records information to be used by the catfix gadget. local catfix_info = lang and m_utilities.catfix(lang, sc) or "" -- Only provide collapsibility if 5 or more elements local pages_in_cat = mw.site.stats.pagesInCategory(args.category, "pages") local collapsible = pages_in_cat >= 5 -- CategoryTree only...")
 
No edit summary
Line 46: Line 46:
-- Maintenance categories
-- Maintenance categories
local categories = ""
local categories = ""
if pages_in_cat == 0 and not mw.title.new(args.category, 'Category').exists then
categories = categories ..
require("Module:utilities").format_categories('Entries with collapsible category trees for nonexistent categories')
end


return require("Module:TemplateStyles")("Module:collapsible category tree/style.css") ..
return require("Module:TemplateStyles")("Module:collapsible category tree/style.css") ..

Revision as of 13:41, 25 January 2025

Documentation for this module may be created at Module:collapsible category tree/doc

local export = {}

local m_utilities = require("Module:utilities")

function export.make(args)
	local lang = args.lang
	local sc = args.sc
	
	-- Add a span which records information to be used by the catfix gadget.
	local catfix_info = lang and m_utilities.catfix(lang, sc) or ""
	
	-- Only provide collapsibility if 5 or more elements
	local pages_in_cat = mw.site.stats.pagesInCategory(args.category, "pages")
	local collapsible = pages_in_cat >= 5
	
	-- CategoryTree only shows the first 200 categories. How many pages are left over?
	local pages_left_over = ((pages_in_cat <= 200) and 0 or (pages_in_cat - 200))
	
	local output = mw.getCurrentFrame():callParserFunction{
		name = "#categorytree",
		args = {
			args.category,
			type = "pages",
			depth = 1,
			class = "\"columns-bg term-list" .. (sc and " " .. sc:getCode() or "") .. "\"",
			style = "counter-reset: pagesleftover " .. pages_left_over,
			namespaces = "-" .. (mw.title.getCurrentTitle().nsText == "Reconstruction" and " Reconstruction" or ""),
			["data-pages-left-over"] = pages_left_over,
		}
	}
	
	if collapsible then
		output = mw.html.create("div")
			:addClass("list-switcher-wrapper")
			:node(
				mw.html.create("div")
					:addClass("list-switcher list-switcher-category-tree")
					:wikitext(output)
			)
	else
		output = mw.html.create("div")
			:addClass("list-switcher-category-tree")
			:wikitext(output)
	end
	
	-- Maintenance categories
	local categories = ""

	return require("Module:TemplateStyles")("Module:collapsible category tree/style.css") ..
		catfix_info .. tostring(output) .. categories
end

-- for testing via wikitext ("wt")
function export.make_wt_test(frame)
	return export.make(frame.args)
end

return export