Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Portal maintenance status
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} function cleanupArgs(argsTable) local cleanArgs = {} for key, val in pairs(argsTable) do if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val ~= '' then cleanArgs[key] = val end else cleanArgs[key] = val end end return cleanArgs end local content = {} function makeTemplatePattern(template) local first = string.sub(template, 1, 1) local rest = string.sub(template, 2) local pattern = mw.ustring.format('%s[%s%s]%s%s', '%{%{%s*', mw.ustring.upper(first), mw.ustring.lower(first), rest, '%s*|?[^%}]*%}%}') return pattern end function makeParameterPattern(parameter) return mw.ustring.format('%s%s%s%s', '|%s*', parameter, '%s*=%s*', '([^|%}]*)', '%s*[|%}]') end function getMatchingTemplateWikitext(content, template, leadOnly) if leadOnly then content = mw.ustring.gsub(content, "%c%s*==.*","") -- remove first ==Heading== and everything after it end for templateWikitext in mw.ustring.gmatch(content, '%b{}') do local isCorrectTemplate = mw.ustring.match(templateWikitext, makeTemplatePattern(template)) if isCorrectTemplate then return templateWikitext end end return false end function getSubjectPageContent(contentNamespaceNumber) local namespace = mw.site.namespaces[contentNamespaceNumber] ["name"] local talkTitle = mw.title.getCurrentTitle() if talkTitle.namespace ~= contentNamespaceNumber + 1 then return error('Wrong namespace', 0) end local subjectTitle = mw.title.new(namespace .. ":" .. talkTitle.text) return subjectTitle:getContent() end -- historical function -- Looks for {{Historical}} on a Wikipedia_talk: page's related project page. -- Returns 'yes' if found or '' (empty string) if not found, or an error if used in the wrong namespace. p.historical = function(frame) local parent = frame.getParent(frame) local args = cleanupArgs(frame.args) local demo = args.demo and true or false local content if demo then local demoText = mw.ustring.gsub(args.demo, '%{%{%!%}%}', '|') content = '{{' .. demoText .. '}}' if args.demo2 then local demo2Text = mw.ustring.gsub(args.demo2, '%{%{%!%}%}', '|') content= portalContent .. '{{' .. demo2Text .. '}}' end else content = getSubjectPageContent(4) end content = mw.ustring.gsub(content, "<!%-%-.-%-%->","") -- remove HTML comments content = mw.ustring.gsub(content, "%c%s*==.*","") -- remove first ==Heading== and everything after it content = mw.ustring.gsub(content, "<noinclude>.-</noinclude>", "") -- remove noinclude bits local isHistorical = mw.ustring.match(content, makeTemplatePattern('Historical')) and true or false return isHistorical and 'yes' or '' end -- featured function -- Looks for {{Featured portal}} on a Portal_talk: page's related portal page. -- Returns 'yes' if found or '' (empty string) if not found, or an error if used in the wrong namespace. p.featured = function(frame) local parent = frame.getParent(frame) local args = cleanupArgs(frame.args) local demo = args.demo and true or false local content if demo then local demoText = mw.ustring.gsub(args.demo, '%{%{%!%}%}', '|') content = '{{' .. demoText .. '}}' if args.demo2 then local demo2Text = mw.ustring.gsub(args.demo2, '%{%{%!%}%}', '|') content= portalContent .. '{{' .. demo2Text .. '}}' end else content = getSubjectPageContent(100) end content = mw.ustring.gsub(content, "<!%-%-.-%-%->","") -- remove HTML comments content = mw.ustring.gsub(content, "<noinclude>.-</noinclude>", "") -- remove noinclude bits local isFeatured = mw.ustring.match(content, makeTemplatePattern('Featured portal')) and true or false return isFeatured and 'yes' or '' end -- main function -- Looks for {{Portal maintenance status}} (or earlier deprecated templates) on a Portal_talk: page's related portal page. -- Returns an appropriate message string if found or '' (empty string) if not found, or an error if used in the wrong namespace. p.main = function(frame) local parent = frame.getParent(frame) local args = cleanupArgs(frame.args) local demo = args.demo and true or false local portalContent if demo then local demoText = mw.ustring.gsub(args.demo, '%{%{%!%}%}', '|') portalContent = '{{' .. demoText .. '}}' if args.demo2 then local demo2Text = mw.ustring.gsub(args.demo2, '%{%{%!%}%}', '|') portalContent = portalContent .. '{{' .. demo2Text .. '}}' end else portalContent = getSubjectPageContent(100) end local status = getMatchingTemplateWikitext(portalContent, 'Portal maintenance status') or getMatchingTemplateWikitext(portalContent, 'Portal flag') if not status then return '' end local output = mw.ustring.sub(status, 0, -3) .. '|embed=yes}}' return frame:preprocess(output) end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Large
(
edit
)
Template:Module other
(
edit
)
Template:Module rating
(
edit
)
Template:Ombox
(
edit
)
Template:Para
(
edit
)
Template:Portal maintenance status
(
edit
)
Template:Portal templates navbox
(
edit
)
Template:Slink
(
edit
)
Template:Tl
(
edit
)
Template:Tld
(
edit
)
Module:Arguments
(
edit
)
Module:Message box
(
edit
)
Module:Message box/configuration
(
edit
)
Module:Message box/ombox.css
(
edit
)
Module:Portal maintenance status
(
edit
)
Module:Portal maintenance status/doc
(
edit
)
Module:Yesno
(
edit
)