Jump to content
Menyu yikuru
Menyu yikuru
move to sidebar
kubisa
Mayendelo
Jani likulu
Vidumbizgano vya chikaya
Vakuchitika vasono
Kusintha kuphya
Jani lililose
Wovwili
To Do
Vyakuti vinozgeke
Vinyake
Mafumbo
Mazgo ghakomi
Helpful Pages (Wovwili)
Need for Fix
Need for Review
Admin Pages
Home pages
Home templates
Kufufuza
Kufufuza
Kaonekelo
Chakupeleka
Panga akaunti
Njila
Vilwelo vyako
Chakupeleka
Panga akaunti
Njila
Pages for logged out editors
learn more
vyakulemba
Pakuchezgela
Kulemba
Module:Random portal component
Sazgapo viyowoyelo
Module
Kudumbizgana
English
Ŵelengani
Kulemba source
Kuona umo mayambilo
Vilwelo
Vilwelo
move to sidebar
kubisa
Vyakuchita
Ŵelengani
Kulemba source
Kuona umo mayambilo
Vya masiku ghose
Ivo vikwiza pano
Vyaku sintha
Kwezgela chinthu
Va jani lino
Penjani URL yakufupikizgika
Sangululani kodi ya QR
Kaonekelo
move to sidebar
kubisa
Chenjezgo:
Mundanjile mu akaunti yinu. Pala mulembenge chilichose IP adilesi yinu waliyose waionenge. Pala
mwanjila
mu akaunti yinu
panji
mwapanga akaunti
, vyakulemba vinu vyose viŵenge mu zina linu, na uwemi unyake.
Anti-spam check. Do
not
fill this in!
-- This module implements [[Template:Random portal component]] local p = {} local mRandom = require('Module:Random') local currentTitle = mw.title.getCurrentTitle() -- tracking function added by BHG 29/04/2019 -- called as subPageTrackingCategories(pages, args.max) local function subPageTrackingCategories(pages, max, header) local retval = ""; local thispagetitle = mw.title.getCurrentTitle().text -- don't track DYK etc, only selected/featured articles, biogs etc if ((string.find(header, "/[sS]elected") == -1) and (string.find(header, "/[fF]eatured") == -1)) then return retval end -- no tracking unless we are in Portal namespace if (mw.title.getCurrentTitle().nsText ~= "Portal") then return "" end -- no tracking if this is a subpage if ((mw.ustring.match(thispagetitle, "/") ~= nil) and (thispagetitle ~= "AC/DC")) then return retval end local maxNum = tonumber(max) local availableSubPageCount = maxNum -- Check for missing subpages at end of alleged number range while availableSubPageCount > 0 and not mw.title.new(pages.subpage .. '/' .. tostring(availableSubPageCount)).exists do availableSubPageCount = availableSubPageCount - 1 end if availableSubPageCount < maxNum then retval = retval .. "[[Category:Random portal component with fewer available subpages than specified max]]" else -- Check for spurious subpages beyond end of alleged number range while mw.title.new(pages.subpage .. '/' .. tostring(availableSubPageCount + 1)).exists do availableSubPageCount = availableSubPageCount + 1 end if availableSubPageCount > maxNum then retval = retval .. "[[Category:Random portal component with more available subpages than specified max]]" end end -- before categorising, check what type of subpage we are categorising, and if detected, categorise images separately local subpageType = "subpages" -- generic type local subpageName = pages.subpage subpageName = mw.ustring.gsub(subpageName, "^[^/]*/", "") subpageName = mw.ustring.lower(subpageName) if ((mw.ustring.find(subpageName, "picture", 1, true) ~= nil) or (mw.ustring.find(subpageName, "image", 1, true) ~= nil) or (mw.ustring.find(subpageName, "panorama", 1, true) ~= nil)) then subpageType = "image subpages" end if (availableSubPageCount < 2) then retval = retval .. "[[Category:Random portal component with less than 2 available " .. subpageType .. "]]" elseif (availableSubPageCount <= 5) then retval = retval .. "[[Category:Random portal component with 2–5 available " .. subpageType .. "]]" elseif (availableSubPageCount <= 10) then retval = retval .. "[[Category:Random portal component with 6–10 available " .. subpageType .. "]]" elseif (availableSubPageCount <= 15) then retval = retval .. "[[Category:Random portal component with 11–15 available " .. subpageType .. "]]" elseif (availableSubPageCount <= 20) then retval = retval .. "[[Category:Random portal component with 16–20 available " .. subpageType .. "]]" elseif (availableSubPageCount <= 25) then retval = retval .. "[[Category:Random portal component with 21–25 available " .. subpageType .. "]]" elseif (availableSubPageCount <= 30) then retval = retval .. "[[Category:Random portal component with 26–30 available " .. subpageType .. "]]" elseif (availableSubPageCount <= 40) then retval = retval .. "[[Category:Random portal component with 31–40 available " .. subpageType .. "]]" elseif (availableSubPageCount <= 50) then retval = retval .. "[[Category:Random portal component with 41–50 available " .. subpageType .. "]]" else retval = retval .. "[[Category:Random portal component with over 50 available " .. subpageType .. "]]" end return retval; end local function getRandomNumber(max) -- gets a random integer between 1 and max; max defaults to 1 return mRandom.number{max or 1} end local function expandArg(args, key) -- Emulate how unspecified template parameters appear in wikitext. If the -- specified argument exists, its value is returned, and if not the argument -- name is returned inside triple curly braces. local val = args[key] if val then return val else return string.format('{{{%s}}}', key) end end local function getPages(args) local pages = {} pages.root = args.rootpage or currentTitle.prefixedText pages.subpage = pages.root .. '/' .. expandArg(args, 'subpage') local tries = 10 repeat pages.random = pages.subpage .. '/' .. getRandomNumber(args.max) tries = tries - 1 until tries < 1 or mw.title.new(pages.random).exists pages.footer = 'Template:Box-footer' return pages end local function tryExpandTemplate(frame, title, args) local success, result = pcall(frame.expandTemplate, frame, {title = title, args = args}) if success then return result else local msg = string.format( '<strong class="error">The page "[[%s]]" does not exist.</strong>', title ) if mw.title.getCurrentTitle().namespace == 100 then -- is in the portal namespace msg = msg .. '[[Category:Portals needing attention]]' end return msg end end local function getHeader(frame, pages, header, template) return tryExpandTemplate( frame, template or pages.root .. '/box-header', {header, pages.random} ) end local function getRandomSubpageContent(frame, pages) return tryExpandTemplate( frame, pages.random ) end local function getFooter(frame, pages, link) return tryExpandTemplate( frame, pages.footer, {link} ) end function p._main(args, frame) frame = frame or mw.getCurrentFrame() local pages = getPages(args) local ret = {} ret[#ret + 1] = getHeader(frame, pages, args.header or 'subpage', args.headertemplate) ret[#ret + 1] = getRandomSubpageContent(frame, pages) if not args.footer or not args.footer:find('%S') then ret[#ret + 1] = '<div style="clear:both;"></div></div>' else ret[#ret + 1] = getFooter(frame, pages, string.format( '[[%s|%s]]', pages.subpage, expandArg(args, 'footer') )) end return table.concat(ret, '\n') .. subPageTrackingCategories(pages, args.max, args.header) end function p._nominate(args, frame) frame = frame or mw.getCurrentFrame() local pages = getPages(args) local ret = {} ret[#ret + 1] = getHeader(frame, pages, expandArg(args, 'header'), args.headertemplate) ret[#ret + 1] = getRandomSubpageContent(frame, pages) ret[#ret + 1] = getFooter(frame, pages, string.format( '[[/Nominate/%s|Suggest]] • [[%s|%s]] ', expandArg(args, 'subpage'), pages.subpage, args.footer or 'Archive' )) return table.concat(ret, '\n') .. subPageTrackingCategories(pages, args.max, args.header) end local function makeInvokeFunction(func) return function (frame) local args = require('Module:Arguments').getArgs(frame, { trim = false, removeBlanks = false, wrappers = { 'Template:Random portal component', 'Template:Random portal component/BHG-test', 'Template:Random portal component with nominate' } }) return func(args, frame) end end p.main = makeInvokeFunction(p._main) p.nominate = makeInvokeFunction(p._nominate) return p
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Kuleka
Wowili wakalembelo
(julani mu windo lanyuwani)
Preview page with this template
Nkhwaska yagwiliskika apa:
Module:Random portal component/doc
(
lemba
)
Kufufuza
Kufufuza
Kulemba
Module:Random portal component
Sazgapo viyowoyelo
Add topic