This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing.
require('strict')localp={}localsandbox-- = '/sandbox' -- BE SURE TO COMMENT OUT this definition when deploying to livelocalyesno=require('Module:Yesno')localshell=function(frame,header,content,collapsed,class)localstyles=frame:extensionTag('templatestyles','',{src='Module:Message box/tmbox.css'})..frame:extensionTag('templatestyles','',{src='Module:Banner shell'..(sandboxor'')..'/styles.css'})localcontent_rowifcontentthencontent_row=mw.html.create('tr'):tag('td'):attr('colspan','2'):addClass('banner-shell-inner'):addClass('outercollapse'):wikitext(content):done()endlocalholder=mw.html.create('table'):attr('role','presentation'):addClass('tmbox'):addClass('tmbox-notice'):addClass('banner-shell'):addClass(class)-- allow additional class to be specified:addClass(contentand'mw-collapsible'ornil):addClass(collapsedand'mw-collapsed'ornil):node(header):node(content_row)returnstyles..tostring(holder)endp.banner_holder=function(frame)localargs=require('Module:Arguments').getArgs(frame,{wrappers={'Template:Banner holder'}})localimage='[[File:'..(args.imageor'NewFavicon icon.svg')..'|'..(args.sizeor'24')..'px'..'|link='..(args.image_linkor'')..'|alt='..(args.altor'')..']]'localimage_cell=mw.html.create('td'):addClass('mbox-image'):wikitext(image)localtext_cell=mw.html.create('td'):addClass('mbox-text'):addClass('banner-shell-header'):tag('span'):addClass('nowrap'):css('float','left'):wikitext(string.rep(' ',10)):done():wikitext(args.textor'Other talk page banners')localheader=mw.html.create('tr'):node(image_cell):node(text_cell)returnshell(frame,header,args[1],yesno(args.collapsed))endlocalDuplicateBanners=function(text)localcapture='<span class="wpb%-project">([^<>]*)</span>'localbanners={}forprojectintext:gmatch(capture)doifbanners[project]==truethenreturnprojectendbanners[project]=trueendendp.banner_shell=function(frame)localcfg=mw.loadData('Module:Banner shell/config'..(sandboxor''))localargs=require('Module:Arguments').getArgs(frame,{wrappers={cfg.template}})localtitle=args.demo_pageandmw.title.new(args.demo_page)ormw.title.getCurrentTitle()localpagetype=require('Module:Pagetype')._main{page=title.prefixedText,dab=cfg.page_types.dab,sia='set index article',soft_redirect=cfg.page_types.soft_redirect,nonexistent=cfg.page_types.nonexistent,timedtext=cfg.page_types.timedtext,defaultns='extended'}locallang=mw.language.getContentLanguage()localclassmask=require('Module:WikiProject banner'..(sandboxor'')).class_masklocalclass=classmask(args.classor'',title.talkPageTitle,false,pagetype)localdemo=notyesno(args.categoryortrue,true)orargs.demo_pagelocalout={}localaddCategory=function(category,sort_key)ifnotdemoandtitle.isTalkPagethenlocalcategory_title=mw.title.new('Category:'..category)table.insert(out,'[['..category_title.prefixedText..(sort_keyand('|'..sort_key)or'')..']]')endendifdemoandnotargs.demo_pagethenpagetype='article'endlocalblp=args.blpandargs.blp:lower()ifyesno(blp)orblp=='activepol'oryesno(args.living)thentable.insert(out,frame:expandTemplate{title=cfg.blp_template.blp,args={activepol=blp=='activepol'and'yes'}})elseifblp=='other'thentable.insert(out,frame:expandTemplate{title=cfg.blp_template.blpo})endlocalvitalifyesno(args.vital)thenlocalpage=mw.ustring.upper(mw.ustring.sub(title.subjectPageTitle.text,1,1))-- get first letter of article namelocalcodepoint=mw.ustring.codepoint(page,1,1)ifcodepoint<65orcodepoint>90then--first letter is not between A-Zpage='others'endlocaldata_page=mw.title.new('Wikipedia:Vital articles/data/'..page..'.json')ifdata_page.existsthenlocalindex=title.subjectPageTitle.textindex=tostring(tonumber(index))==indexandtonumber(index)orindex--convert to number if page is numerical, otherwise loadJsonData does not worklocaldata=mw.loadJsonData(data_page.fullText)[index]ifdatathenlocallevel=data.levelandtostring(data.level)iflevelanddata.topicthenlocallink='Wikipedia:Vital articles/Level/'..levelif(level=='4'orlevel=='5')thenlink=link..'/'..data.topicendifdata.sublistthenlink=link..'/'..data.sublistendifdata.sectionthenlink=link..'#'..data.sectionendifnotmw.title.new(link).existsthen-- add tracking category if link does not existaddCategory(cfg.vital.attention,'L')endvital=cfg.vital.with_level:format(link,level)elsevital=cfg.vital.without_levelendfor_,catinipairs(cfg.vital.categories)doifcat:find('_CLASS')and(class=='NA'orclass=='')thenaddCategory(cfg.vital.attention,class=='NA'and'N'or'U')elseiflevel==nilthenaddCategory(cfg.vital.attention,'V')elseifdata.topic==nilthenaddCategory(cfg.vital.attention,'T')elselocalcategory=cat:gsub('_CLASS',class..'-Class'):gsub('_LEVEL',level):gsub('_TOPIC',data.topic)addCategory(category)endendaddCategory(cfg.vital.all)elseaddCategory(cfg.vital.not_listed)endendendlocaltext,icon_image,icon_strifclass=='NA'thenicon_image=cfg.icons.type[pagetype]orcfg.icons.defaulticon_str=pagetype=='page'and'Non-article page'orlang:ucfirst(pagetype)text={cfg.rating.not_required:format(vitalorpagetype)}ifargs.classthenaddCategory(cfg.tracking.redundant_class)endelseifclass==''thenicon_image=cfg.icons.unassessedicon_str='Unassessed article'text={cfg.rating.not_yet:format(vitalorpagetype)}addCategory('All unassessed articles')elseicon_image=cfg.icons.quality[class]orcfg.icons.unassessedicon_str=class..'-Class '..pagetypetext={cfg.rating.rated:format(vitalorpagetype,class)}endlocalicon=string.format('[[File:%s|%s|35px|class=noviewer|alt=]]',icon_image,icon_str)table.insert(text,' '..cfg.rating.scale)ifargs[1]thentable.insert(text,'<br>'..cfg.project.interest..' ')table.insert(text,yesno(args.collapsed)andcfg.project.collapsedorcfg.project.uncollapsed)localduplicate_cat=DuplicateBanners(args[1])ifduplicate_catandtitle.isTalkPagethenaddCategory(cfg.tracking.duplicate,duplicate_cat)endelseifnotyesno(args.vital)andclass~=''then-- if no projects and not vital and assessed then add class super categoryifclass=='NA'thenaddCategory('NA-Class pages')elseaddCategory(class..'-Class articles')endendlocalheader=mw.html.create('tr'):tag('td'):addClass('assess'):wikitext(icon):done():tag('td'):addClass('banner-shell-header'):css('text-align','left'):css('font-weight','normal'):wikitext(table.concat(text)):done()table.insert(out,shell(frame,header,args[1],yesno(args.collapsed),'wpbs'))ifargs.listasthentable.insert(out,frame:preprocess('{{DEFAULTSORT:'..args.listas..'}}'))endifnotdemothenlocaltracking=require('Module:Check for unknown parameters')._check({unknown=cfg.tracking.unknown,preview=cfg.tracking.preview,'1','blp','category','class','collapsed','demo_page','listas','vital'},frame:getParent().args)table.insert(out,tracking)ifargs.categoryandyesno(args.category)~=falsethen-- category should not be "yes"addCategory(cfg.tracking.invalid,'category')endifargs.collapsedandyesno(args.collapsed)~=truethen-- collapsed should not be "no"addCategory(cfg.tracking.invalid,'collapsed')endifyesno(blp)==nilandblp~=nilandblp~='other'andblp~='activepol'thenaddCategory(cfg.tracking.invalid,'blp')endifpagetype=='article'andargs.classandclass==''then-- find pages with invalid class parameteraddCategory(cfg.tracking.invalid,'Zclass')endendreturntable.concat(out)endreturnp