×
Create a new article
Write your page title here:
We currently have 230 articles on Farthest Frontier. Type your article name above or create one of the articles listed here!



    Farthest Frontier

    Module:Uses TemplateStyles: Difference between revisions

    Content added Content deleted
    (Created page with "local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local TNT = require('Module:TNT') local p = {} local function format(msg, ...) return TNT.format('I18n/Uses TemplateStyles', msg, ...) end local function getConfig() return mw.loadData('Module:Uses TemplateStyles/config') end local function renderBox(tStyles) local boxArgs = { type = 'notice...")
     
    (Update to mediawiki templatestyles)
     
    Line 1: Line 1:
    -- This module implements the {{Uses TemplateStyles}} template.
    local yesno = require('Module:Yesno')
    local yesno = require('Module:Yesno')
    local mList = require('Module:List')
    local mList = require('Module:List')
    Line 15: Line 16:
    end
    end


    local function renderBox(tStyles)
    function p.main(frame)
    local boxArgs = {
    local origArgs = frame:getParent().args
    local args = {}
    type = 'notice',
    for k, v in pairs(origArgs) do
    small = true,
    v = v:match('^%s*(.-)%s*$')
    image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt'))
    if v ~= '' then
    }
    args[k] = v
    end
    end
    return p._main(args)
    end

    function p._main(args, cfg)
    local tStyles = mTableTools.compressSparseArray(args)
    local box = p.renderBox(tStyles)
    local trackingCategories = p.renderTrackingCategories(args, tStyles)
    return box .. trackingCategories
    end

    function p.renderBox(tStyles)
    local boxArgs = {}
    if #tStyles < 1 then
    if #tStyles < 1 then
    boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
    boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
    Line 44: Line 60:
    '\n' .. tStylesList
    '\n' .. tStylesList
    end
    end
    boxArgs.type = 'notice'
    boxArgs.small = true
    boxArgs.image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt'))
    return mMessageBox.main('mbox', boxArgs)
    return mMessageBox.main('mbox', boxArgs)
    end
    end


    local function renderTrackingCategories(args, tStyles, titleObj)
    function p.renderTrackingCategories(args, tStyles, titleObj)
    if yesno(args.nocat) then
    if yesno(args.nocat) then
    return ''
    return ''
    Line 77: Line 96:
    local tsTitleObj = mw.title.new(ts)
    local tsTitleObj = mw.title.new(ts)
    local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
    local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
    if cfg['protection_conflict_category'] and tsProt ~= currentProt and not addedLevelCat then
    addedLevelCat = true
    cats[#cats + 1] = cfg['protection_conflict_category']
    end
    if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then
    if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then
    local content = tsTitleObj:getContent()
    local content = tsTitleObj:getContent()
    Line 82: Line 105:
    cats[#cats + 1] = cfg['missing_padlock_category']
    cats[#cats + 1] = cfg['missing_padlock_category']
    addedPadlockCat = true
    addedPadlockCat = true
    end
    end
    if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then
    currentProt = cfg['protection_hierarchy'][currentProt] or 0
    tsProt = cfg['protection_hierarchy'][tsProt] or 0
    if tsProt < currentProt then
    addedLevelCat = true
    cats[#cats + 1] = cfg['protection_conflict_category']
    end
    end
    end
    end
    Line 99: Line 114:
    end
    end
    return table.concat(cats)
    return table.concat(cats)
    end

    function p._main(args, cfg)
    local tStyles = mTableTools.compressSparseArray(args)
    local box = renderBox(tStyles)
    local trackingCategories = renderTrackingCategories(args, tStyles)
    return box .. trackingCategories
    end

    function p.main(frame)
    local origArgs = frame:getParent().args
    local args = {}
    for k, v in pairs(origArgs) do
    v = v:match('^%s*(.-)%s*$')
    if v ~= '' then
    args[k] = v
    end
    end
    return p._main(args)
    end
    end



    Latest revision as of 19:26, 30 August 2022

    Implements {{Uses TemplateStyles}}


    -- This module implements the {{Uses TemplateStyles}} template.
    local yesno = require('Module:Yesno')
    local mList = require('Module:List')
    local mTableTools = require('Module:TableTools')
    local mMessageBox = require('Module:Message box')
    local TNT = require('Module:TNT')
    
    local p = {}
    
    local function format(msg, ...)
    	return TNT.format('I18n/Uses TemplateStyles', msg, ...)
    end
    
    local function getConfig()
    	return mw.loadData('Module:Uses TemplateStyles/config')
    end
    
    function p.main(frame)
    	local origArgs = frame:getParent().args
    	local args = {}
    	for k, v in pairs(origArgs) do
    		v = v:match('^%s*(.-)%s*$')
    		if v ~= '' then
    			args[k] = v
    		end
    	end
    	return p._main(args)
    end
    
    function p._main(args, cfg)
    	local tStyles = mTableTools.compressSparseArray(args)
    	local box = p.renderBox(tStyles)
    	local trackingCategories = p.renderTrackingCategories(args, tStyles)
    	return box .. trackingCategories
    end
    
    function p.renderBox(tStyles)
    	local boxArgs = {}
    	if #tStyles < 1 then
    		boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
    	else
    		local cfg = getConfig()
    		local tStylesLinks = {}
    		for i, ts in ipairs(tStyles) do
    			local link = string.format('[[:%s]]', ts)
    			local sandboxLink = nil
    			local tsTitle = mw.title.new(ts)
    			if tsTitle and cfg['sandbox_title'] then
    				local tsSandboxTitle = mw.title.new(string.format(
    					'%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText))
    				if tsSandboxTitle and tsSandboxTitle.exists then
    					sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText)
    				end
    			end
    			tStylesLinks[i] = sandboxLink or link
    		end
    		local tStylesList = mList.makeList('bulleted', tStylesLinks)
    		boxArgs.text = format(
    			mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') ..
    			'\n' .. tStylesList
    	end
    	boxArgs.type = 'notice'
    	boxArgs.small = true
    	boxArgs.image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt'))
    	return mMessageBox.main('mbox', boxArgs)
    end
    
    function p.renderTrackingCategories(args, tStyles, titleObj)
    	if yesno(args.nocat) then
    		return ''
    	end
    	
    	local cfg = getConfig()
    	
    	local cats = {}
    	
    	-- Error category
    	if #tStyles < 1 and cfg['error_category'] then
    		cats[#cats + 1] = cfg['error_category']
    	end
    	
    	-- TemplateStyles category
    	titleObj = titleObj or mw.title.getCurrentTitle()
    	if (titleObj.namespace == 10 or titleObj.namespace == 828)
    		and not cfg['subpage_blacklist'][titleObj.subpageText]
    	then
    		local category = args.category or cfg['default_category']
    		if category then
    			cats[#cats + 1] = category
    		end
    		if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then
    			local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil
    			local addedLevelCat = false
    			local addedPadlockCat = false
    			for i, ts in ipairs(tStyles) do
    				local tsTitleObj = mw.title.new(ts)
    				local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
    				if cfg['protection_conflict_category'] and tsProt ~= currentProt and not addedLevelCat then
    					addedLevelCat = true
    					cats[#cats + 1] = cfg['protection_conflict_category']
    				end
    				if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then
    					local content = tsTitleObj:getContent()
    					if not content:find(cfg['padlock_pattern']) then
    						cats[#cats + 1] = cfg['missing_padlock_category']
    						addedPadlockCat = true
    					end
    				end
    			end
    		end
    	end
    	for i, cat in ipairs(cats) do
    		cats[i] = string.format('[[Category:%s]]', cat)
    	end
    	return table.concat(cats)
    end
    
    return p
    
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.