编辑“
Module:Random portal component
”
跳转到导航
跳转到搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
-- 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:子页面少于随机主题组件指定值的主题]]" 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:子页面多于随机主题组件指定值的主题]]" end end -- before categorising, check what type of subpage we are categorising, and if detected, categorise images separately local subpageType = "子页面" -- 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) or (mw.ustring.find(subpageName, "图", 1, true) ~= nil) or (mw.ustring.find(subpageName, "圖", 1, true) ~= nil)) then subpageType = "图片子页面" end if (availableSubPageCount < 2) then retval = retval .. "[[Category:随机组件的" .. subpageType .. "少于2个的主题]]" elseif (availableSubPageCount <= 5) then retval = retval .. "[[Category:随机组件有2-5个" .. subpageType .. "的主题]]" elseif (availableSubPageCount <= 10) then retval = retval .. "[[Category:随机组件有6-10个" .. subpageType .. "的主题]]" elseif (availableSubPageCount <= 15) then retval = retval .. "[[Category:随机组件有11-15个" .. subpageType .. "的主题]]" elseif (availableSubPageCount <= 20) then retval = retval .. "[[Category:随机组件有16-20个" .. subpageType .. "的主题]]" elseif (availableSubPageCount <= 25) then retval = retval .. "[[Category:随机组件有21-25个" .. subpageType .. "的主题]]" elseif (availableSubPageCount <= 30) then retval = retval .. "[[Category:随机组件有26-30个" .. subpageType .. "的主题]]" elseif (availableSubPageCount <= 40) then retval = retval .. "[[Category:随机组件有31-40个" .. subpageType .. "的主题]]" elseif (availableSubPageCount <= 50) then retval = retval .. "[[Category:随机组件有41-50个" .. subpageType .. "的主题]]" else retval = retval .. "[[Category:随机组件的" .. subpageType .. "超过50个的主题]]" 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">页面"[[%s]]"不存在。</strong>', title ) if mw.title.getCurrentTitle().namespace == 100 then -- is in the portal namespace msg = msg .. '[[Category:需要关注的主题]]' 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( '[[/提議/%s|建議]] • [[%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
摘要:
请注意,您对Positive WiKi的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Positive WiKi:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
Module:Random portal component/doc
(
编辑
)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
模块
讨论
English
查看
阅读
编辑源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息