વિકિપીડિયા guwiki https://gu.wikipedia.org/wiki/%E0%AA%AE%E0%AB%81%E0%AA%96%E0%AA%AA%E0%AB%83%E0%AA%B7%E0%AB%8D%E0%AA%A0 MediaWiki 1.47.0-wmf.18 first-letter દ્રશ્ય-શ્રાવ્ય (મિડિયા) વિશેષ ચર્ચા સભ્ય સભ્યની ચર્ચા વિકિપીડિયા વિકિપીડિયા ચર્ચા ચિત્ર ચિત્રની ચર્ચા મીડિયાવિકિ મીડિયાવિકિ ચર્ચા ઢાંચો ઢાંચાની ચર્ચા મદદ મદદની ચર્ચા શ્રેણી શ્રેણીની ચર્ચા TimedText TimedText talk વિભાગ વિભાગ ચર્ચા Event Event talk મેવાડા (તા. ધાનેરા) 0 28614 904882 900597 2026-09-08T08:33:35Z Dinesh P Purohit 9677 904882 wikitext text/x-wiki {{Infobox Indian jurisdiction | type = ગામ | native_name = મેવાડા | state_name = ગુજરાત | district = બનાસકાંઠા | taluk_names = [[ધાનેરા તાલુકો|ધાનેરા]] | latd = 24.528722 | longd = 72.163836 | area_total = | altitude = | population_total = | population_as_of = | population_density = | leader_title_1 = | leader_name_1 = | leader_title_2 = | leader_name_2 = | postal_code_type = પિનકોડ | postal_code = ૩૮૫ ૫૪૫ | area_code = +૯૧ ૨૭૪૮ | area_code_type = ટેલિફોન કોડ | registration_plate = GJ-08 | blank_title_1 = સગવડો | blank_value_1 = [[પ્રાથમિક શાળા]], [[પંચાયતઘર]], [[આંગણવાડી]], દૂધની ડેરી | blank_title_2 = મુખ્ય વ્યવસાય | blank_value_2 = [[ખેતી]], [[પશુપાલન]] | blank_title_3 = મુખ્ય ખેતપેદાશ | blank_value_3 = [[ઘઉં]], [[બાજરી]], [[રાયડો]], મગફળી, દિવેલા, [[શાકભાજી]] }} '''મેવાડા''' [[ભારત]] દેશના પશ્ચિમ ભાગમાં આવેલા [[ગુજરાત|ગુજરાત રાજ્ય]]ના ઉત્તર ભાગમાં આવેલા [[બનાસકાંઠા જિલ્લો|બનાસકાંઠા જિલ્લા]]માં આવેલા કુલ ૮ (આઠ) તાલુકાઓ પૈકીના એક એવા [[ધાનેરા તાલુકો|ધાનેરા તાલુકા]]માં આવેલું અને રેલ નદીના તટે વસેલું એક ગામ છે. મેવાડા ગામના લોકોનો મુખ્ય વ્યવસાય [[ખેતી]], [[ખેતમજૂરી]] તેમજ [[પશુપાલન]] છે. આ ગામમાં મુખ્યત્વે [[ઘઉં]], [[બાજરી]], [[રાયડો]], મગફળી, દિવેલા તેમજ અન્ય [[શાકભાજી]]ના પાકની [[ખેતી]] કરવામાં આવે છે. આ ગામમાં [[પ્રાથમિક શાળા]], [[પંચાયતઘર]], [[આંગણવાડી]], આરોગ્ય કેન્દ્ર તેમજ દૂધની ડેરી જેવી સવલતો પ્રાપ્ય થયેલી છે. == ધાર્મિક સ્થળો == મેવાડા ગામમાં સ્વયંભૂ પ્રકટ ઢાંકણિયા [[શિવ|મહાદેવ]], ભડથિયા (પુરોહિત)ની કુળદેવી [[આશાપુરા માતા]] અને [[કૃષ્ણ|ઠાકોરજી]]નાં મંદિરો આવેલાં છે. == પરિવહન == તાલુકા મથક ધાનેરાથી મેવાડા જવા માટે GSRTC ની બસો પણ ઉપલબ્ધ છે *ધાનેરા - મેવાડા - વાછોલ બોર્ડર વાયા મેવાડા *ધાનેરા - મેવાડા - રાજોડા વાયા મેવાડા {{ગુજરાત ગામ સ્ટબ}} [[શ્રેણી:ધાનેરા તાલુકો]] 6h2mln21tub2ze2dxj2ao4swyn45gac 904883 904882 2026-09-08T08:36:21Z Dinesh P Purohit 9677 /* પરિવહન */ 904883 wikitext text/x-wiki {{Infobox Indian jurisdiction | type = ગામ | native_name = મેવાડા | state_name = ગુજરાત | district = બનાસકાંઠા | taluk_names = [[ધાનેરા તાલુકો|ધાનેરા]] | latd = 24.528722 | longd = 72.163836 | area_total = | altitude = | population_total = | population_as_of = | population_density = | leader_title_1 = | leader_name_1 = | leader_title_2 = | leader_name_2 = | postal_code_type = પિનકોડ | postal_code = ૩૮૫ ૫૪૫ | area_code = +૯૧ ૨૭૪૮ | area_code_type = ટેલિફોન કોડ | registration_plate = GJ-08 | blank_title_1 = સગવડો | blank_value_1 = [[પ્રાથમિક શાળા]], [[પંચાયતઘર]], [[આંગણવાડી]], દૂધની ડેરી | blank_title_2 = મુખ્ય વ્યવસાય | blank_value_2 = [[ખેતી]], [[પશુપાલન]] | blank_title_3 = મુખ્ય ખેતપેદાશ | blank_value_3 = [[ઘઉં]], [[બાજરી]], [[રાયડો]], મગફળી, દિવેલા, [[શાકભાજી]] }} '''મેવાડા''' [[ભારત]] દેશના પશ્ચિમ ભાગમાં આવેલા [[ગુજરાત|ગુજરાત રાજ્ય]]ના ઉત્તર ભાગમાં આવેલા [[બનાસકાંઠા જિલ્લો|બનાસકાંઠા જિલ્લા]]માં આવેલા કુલ ૮ (આઠ) તાલુકાઓ પૈકીના એક એવા [[ધાનેરા તાલુકો|ધાનેરા તાલુકા]]માં આવેલું અને રેલ નદીના તટે વસેલું એક ગામ છે. મેવાડા ગામના લોકોનો મુખ્ય વ્યવસાય [[ખેતી]], [[ખેતમજૂરી]] તેમજ [[પશુપાલન]] છે. આ ગામમાં મુખ્યત્વે [[ઘઉં]], [[બાજરી]], [[રાયડો]], મગફળી, દિવેલા તેમજ અન્ય [[શાકભાજી]]ના પાકની [[ખેતી]] કરવામાં આવે છે. આ ગામમાં [[પ્રાથમિક શાળા]], [[પંચાયતઘર]], [[આંગણવાડી]], આરોગ્ય કેન્દ્ર તેમજ દૂધની ડેરી જેવી સવલતો પ્રાપ્ય થયેલી છે. == ધાર્મિક સ્થળો == મેવાડા ગામમાં સ્વયંભૂ પ્રકટ ઢાંકણિયા [[શિવ|મહાદેવ]], ભડથિયા (પુરોહિત)ની કુળદેવી [[આશાપુરા માતા]] અને [[કૃષ્ણ|ઠાકોરજી]]નાં મંદિરો આવેલાં છે. == પરિવહન == મેવાડાથી ધાનેરા, ડીસા, પાલનપુર, અમદાવાદ, સુરત, નવસારી જવા માટે ખાનગી તથા GSRTC ની બસો પણ ઉપલબ્ધ છે *ધાનેરા - મેવાડા - વાછોલ બોર્ડર વાયા મેવાડા *ધાનેરા - મેવાડા - રાજોડા વાયા મેવાડા {{ગુજરાત ગામ સ્ટબ}} [[શ્રેણી:ધાનેરા તાલુકો]] 3yzv1e2yldkmcc2xizkcqs53lbsyq6c 904884 904883 2026-09-08T08:53:54Z Snehrashmi 41463 Manual Revert 904884 wikitext text/x-wiki {{Infobox Indian jurisdiction | type = ગામ | native_name = મેવાડા | state_name = ગુજરાત | district = બનાસકાંઠા | taluk_names = [[ધાનેરા તાલુકો|ધાનેરા]] | latd = 24.528722 | longd = 72.163836 | area_total = | altitude = | population_total = | population_as_of = | population_density = | leader_title_1 = | leader_name_1 = | leader_title_2 = | leader_name_2 = | postal_code_type = પિનકોડ | postal_code = ૩૮૫ ૫૪૫ | area_code = +૯૧ ૨૭૪૮ | area_code_type = ટેલિફોન કોડ | registration_plate = GJ-08 | blank_title_1 = સગવડો | blank_value_1 = [[પ્રાથમિક શાળા]], [[પંચાયતઘર]], [[આંગણવાડી]], દૂધની ડેરી | blank_title_2 = મુખ્ય વ્યવસાય | blank_value_2 = [[ખેતી]], [[પશુપાલન]] | blank_title_3 = મુખ્ય ખેતપેદાશ | blank_value_3 = [[ઘઉં]], [[બાજરી]], [[રાયડો]], મગફળી, દિવેલા, [[શાકભાજી]] }} '''મેવાડા''' [[ભારત]] દેશના પશ્ચિમ ભાગમાં આવેલા [[ગુજરાત|ગુજરાત રાજ્ય]]ના ઉત્તર ભાગમાં આવેલા [[બનાસકાંઠા જિલ્લો|બનાસકાંઠા જિલ્લા]]માં આવેલા કુલ ૮ (આઠ) તાલુકાઓ પૈકીના એક એવા [[ધાનેરા તાલુકો|ધાનેરા તાલુકા]]માં આવેલું અને રેલ નદીના તટે વસેલું એક ગામ છે. મેવાડા ગામના લોકોનો મુખ્ય વ્યવસાય [[ખેતી]], [[ખેતમજૂરી]] તેમજ [[પશુપાલન]] છે. આ ગામમાં મુખ્યત્વે [[ઘઉં]], [[બાજરી]], [[રાયડો]], મગફળી, દિવેલા તેમજ અન્ય [[શાકભાજી]]ના પાકની [[ખેતી]] કરવામાં આવે છે. આ ગામમાં [[પ્રાથમિક શાળા]], [[પંચાયતઘર]], [[આંગણવાડી]], આરોગ્ય કેન્દ્ર તેમજ દૂધની ડેરી જેવી સવલતો પ્રાપ્ય થયેલી છે. == ધાર્મિક સ્થળો == મેવાડા ગામમાં સ્વયંભૂ પ્રકટ ઢાંકણિયા [[શિવ|મહાદેવ]], ભડથિયા (પુરોહિત)ની કુળદેવી [[આશાપુરા માતા]] અને [[કૃષ્ણ|ઠાકોરજી]]નાં મંદિરો આવેલાં છે. {{ગુજરાત ગામ સ્ટબ}} [[શ્રેણી:ધાનેરા તાલુકો]] 74ll3y0x0xyjpd1aiuri6t1d338pvub ઢાંચો:Anglicise rank 10 51681 904865 761772 2025-05-09T06:10:49Z en>Peter coxhead 0 updated to tested sandbox version, which uses [[Module:Taxobox ranks]] 904865 wikitext text/x-wiki <includeonly>{{#invoke:Taxobox ranks|angliciseRank|{{{1}}}|check={{{check|no}}}}}</includeonly><noinclude>{{documentation}}</noinclude> cpu7lfravqq998fz16tu241d0dpcgca 904866 904865 2026-09-08T04:32:27Z KartikMistry 10383 [[:en:Template:Anglicise_rank]] માંથી આયાત કરેલ ૧ પુનરાવર્તન 904865 wikitext text/x-wiki <includeonly>{{#invoke:Taxobox ranks|angliciseRank|{{{1}}}|check={{{check|no}}}}}</includeonly><noinclude>{{documentation}}</noinclude> cpu7lfravqq998fz16tu241d0dpcgca ઢાંચો:Taxonomy 10 51694 904863 354903 2022-02-07T22:05:15Z en>Peter coxhead 0 Undid revision 1070515375 by [[Special:Contributions/Peter coxhead|Peter coxhead]] ([[User talk:Peter coxhead|talk]]) not the answer 904863 wikitext text/x-wiki <includeonly>{{#if:{{{rank|}}}|<!-- Cell stating the rank: --> {{!}} {{anglicise rank|{{{rank|}}}}}:<!-- Cell stating the taxon's name, with authority: DO NOT USE named parameters in the call to replace as they will strip the trailing whitespace. --> {{!}} <div style="display:inline" class="{{lc:{{anglicise rank|{{{rank}}} }} }}">{{#invoke:string|replace|{{{link}}}|. |.&nbsp;|count=1}}</div>{{#if:{{{auth|}}} |<br /><div style="font-size: 85%;">{{{auth}}}</div>}} {{!}}- }}</includeonly><noinclude>{{documentation}}</noinclude> 1od1jtxkb7ikgwlrhgknz4manhmrjm2 904864 904621 2026-09-08T04:32:27Z KartikMistry 10383 [[:en:Template:Taxonomy]] માંથી આયાત કરેલ ૧ પુનરાવર્તન 354903 wikitext text/x-wiki <includeonly>{{#if:{{{rank|}}}|<!-- Cell stating the rank: --> {{!}} {{ucfirst:{{lc:{{anglicise rank| {{{rank|}}} }} }} }}:<!-- Cell stating the taxon's name, italicized if necessary, with authority: --> {{!}} <span class="{{lc:{{anglicise rank|{{{rank}}} }} }}" style="white-space:nowrap;">{{#switch:{{lc:{{{rank}}} }} |genus|ichnogenus|oogenus|subgenus|ichnosubgenus|oosubgenus|sectio|subsectio|series|subseries|species|ichnospecies|oospecies|subspecies|ichnosubspecies|oosubspecies=''{{{link}}}'' |{{{link}}} }}</span>{{#if:{{{auth|}}} |<br /><small>{{{auth}}}</small>}} {{!}}- }}</includeonly><noinclude>{{documentation}}</noinclude> 9w8zz1e4t1rfdirqfmosyfgtn5mzg6g ઢાંચો:Sandbox other 10 85334 904867 700476 2025-08-05T04:52:35Z en>Theknightwho 0 Make substable. 904867 wikitext text/x-wiki <onlyinclude>{{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#ifeq:{{safesubst:<noinclude/>#invoke:String|sublength|s={{safesubst:<noinclude/>SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{safesubst:<noinclude/>#ifeq:{{safesubst:<noinclude/>SUBPAGENAME}}|doc|1}}{{safesubst:<noinclude/>#invoke:String|match|{{safesubst:<noinclude/>PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}</onlyinclude><!-- -->{{documentation}} qglmfuqapld2v7m2c8ehvpm6ympoljf 904868 904867 2026-09-08T04:32:27Z KartikMistry 10383 [[:en:Template:Sandbox_other]] માંથી આયાત કરેલ ૧ પુનરાવર્તન 904867 wikitext text/x-wiki <onlyinclude>{{safesubst:<noinclude/>#if:{{safesubst:<noinclude/>#ifeq:{{safesubst:<noinclude/>#invoke:String|sublength|s={{safesubst:<noinclude/>SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{safesubst:<noinclude/>#ifeq:{{safesubst:<noinclude/>SUBPAGENAME}}|doc|1}}{{safesubst:<noinclude/>#invoke:String|match|{{safesubst:<noinclude/>PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}</onlyinclude><!-- -->{{documentation}} qglmfuqapld2v7m2c8ehvpm6ympoljf વિભાગ:High-use 828 111708 904869 897674 2026-07-30T21:52:39Z en>Andrybak 0 Set `approx_num_total_pages = 66000000` (66 million). [[Special:Statistics]] shows 65,988,696 right now. We don't need a lot of precision here. Next update can be at 67 million. 904869 Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs local _fetch = require('Module:Transclusion_count')._fetch -- _fetch looks at the 'demo' argument local yesno = require('Module:Yesno') local lang_obj = mw.getContentLanguage() -- this here because the language object is used multiple places in the module local large_count_cutoff = 100000 local approx_num_total_pages = 66000000 local user_subpage_info_page = 'Wikipedia:User pages#SUB' local sandbox_module_page = 'Module:Sandbox' local system_messages_cat = 'Pages used in system messages needing protection' local sandbox_word = 'sandbox' local testcases_word = 'testcases' local doc_word = 'doc' local function count_from_args(args) if tonumber(args.count) then -- check if function has already been used return tonumber(args.count) -- early exit if so end local count if yesno(args['fetch']) ~= false then count = _fetch(args) -- fetch transclusion count end -- use explicitly-provided count when fetch fails if count == nil and args[1] ~= nil and args[1] ~= '' then -- convert local language number string to a number understandable by Lua count = mw.ustring.gsub(args[1], '+$', '') count = lang_obj:parseFormattedNumber(args[1]) end -- in case someone writes a non-positive number if count and count > 0 then return count end return nil end -- Actions if there is a large (greater than or equal to 100,000) transclusion count local function risk_boolean(args) if args.risk == true or args.risk == false then return args.risk elseif args[1] == 'risk' then return true else local count = count_from_args(args) if count and count >= large_count_cutoff then return true end end return false end -- function retained for backwards compatibility function p._risk(args) return risk_boolean(args) and 'risk' or '' end -- function retained for backwards compatibility function p.risk(frame) return p._risk(getArgs(frame)) end -- count and no_percent arguments retained for backwards compatibility function p._num(args, count, no_percent) if count == nil then count = count_from_args(args) end args.count = count args.risk = risk_boolean(args) -- Build output string local return_value = '' if args.count == nil and args.risk then return 'a very large number of' elseif args.count == nil then return 'many' else -- Use 2 significant figures for smaller numbers and 3 for larger ones local sigfig = 2 if args.count >= large_count_cutoff then sigfig = 3 end -- Prepare to round to appropriate number of sigfigs local f = math.floor(math.log10(args.count)) - sigfig + 1 -- Round and insert 'approximately' or '+' when appropriate if yesno(args[2]) == true or (type(args[1]) == 'string' and (mw.ustring.sub(args[1], -1) == '+')) then -- Round down return_value = string.format('%s+', lang_obj:formatNum(math.floor( (args.count / 10^(f)) ) * (10^(f))) ) else -- Round to nearest return_value = string.format('approximately&#x20;%s', lang_obj:formatNum(math.floor( (args.count / 10^(f)) + 0.5) * (10^(f))) ) end -- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes no_percent = yesno(no_percent or args['no-percent']) if args.count and args.count >= approx_num_total_pages/100 and not no_percent then local num_total_pages = mw.getCurrentFrame():callParserFunction('NUMBEROFPAGES', 'R') local total_percent = math.floor( ( ( args.count/num_total_pages ) * 100) + 0.5) if total_percent >= 1 then return_value = string.format('%s&#x20;pages, or roughly %s%% of all', return_value, total_percent) end end end return return_value end -- used by [[Template:Stub documentation]] and other pages -- count argument retained for backwards compatibility function p.num(frame, count) return p._num(getArgs(frame), count) end -- count argument retained for backwards compatibility function p._text(args, count) --[=[ Only show the information about how this template gets updated if someone is actually editing the page and maybe trying to update the count. ]=] local bot_text = (mw.getCurrentFrame():preprocess('{{REVISIONID}}') == '') and ("\n\n----\n'''Preview message''':" .. ' Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]]).') or '' if count == nil then count = count_from_args(args) end args.count = count args.risk = risk_boolean(args) -- trim /doc, /sandbox and /testcases local title = args.title or (args.demo and args.demo ~= '' and mw.title.new(args.demo, 'Template')) or mw.title.getCurrentTitle() if title.subpageText == doc_word or title.subpageText == sandbox_word or title.subpageText == testcases_word then title = title.basePageTitle end -- use /testcases of base template local testcases_page = mw.title.new(title.prefixedText .. '/' .. testcases_word) -- exists is expensive while testcases_page.basePageTitle.isSubpage and not testcases_page.exists do testcases_page = mw.title.new(testcases_page.basePageTitle.basePageTitle.prefixedText .. '/' .. testcases_word) end local systemMessages = (args['system'] or '') ~= '' -- This retrieves the project URL automatically to simplify localization. local templateCount = ('on [https://linkcount.toolforge.org/?project=%s&page=%s#transclusions %s pages]'):format( title:fullUrl():gsub('//(.-)/.*', '%1'), mw.uri.encode(title.fullText), p._num(args)) local used_on_text = "'''This " .. (title:inNamespace('Module') and 'Lua module' or 'template') .. ' is used ' if systemMessages then used_on_text = used_on_text .. args['system'] .. ((args.count and args.count > 2000) and ("''', and " .. templateCount) or ("'''")) else used_on_text = used_on_text .. templateCount .. "'''" end local sandbox_text = ('%s\'s [[%s/sandbox|/sandbox]] or [[%s|/testcases]] subpages, or in your own [[%s]]. '):format( title:inNamespace('Module') and 'module' or 'template', title.fullText, testcases_page.fullText, title:inNamespace('Module') and (sandbox_module_page .. '|module sandbox') or (user_subpage_info_page .. '|user subpage') ) local infoArg = args['info'] ~= '' and args['info'] if (systemMessages or args.risk) then local info = '.' if systemMessages then info = info .. '<br />Changes to it can cause immediate changes to the ' .. mw.site.namespaces.Project.name .. ' user interface.' end if infoArg then info = info .. '<br />' .. infoArg end sandbox_text = info .. '<br /> To avoid major disruption' .. (args.count and args.count >= large_count_cutoff and ' and server load' or '') .. -- should this use args.risk? ', any changes should be tested in the ' .. sandbox_text .. 'The tested changes can be added to this page in a single edit. ' else sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') .. 'hanges may be widely noticed. Test changes in the ' .. sandbox_text end local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes ' if args[2] ~= nil and args[2] ~= '' and yesno(args[2]) == nil then discussion_text = string.format('%sat [[%s]]', discussion_text, args[2]) else discussion_text = string.format('%son the [[%s|talk page]]', discussion_text, title.talkPageTitle.fullText) end return used_on_text .. sandbox_text .. discussion_text .. ' before implementing them.' .. bot_text end -- used by [[Template:R from high-use template]] -- count argument retained for backwards compatibility function p.text(frame, count) return p._text(getArgs(frame), count) end -- nocat argument retained for backwards compatibility function p._main(args, nocat) args.count = count_from_args(args) args.risk = risk_boolean(args) args.title = (args.demo and args.demo ~= '' and mw.title.new(args.demo, 'Template')) or mw.title.getCurrentTitle() local image = 'Ambox warning yellow.svg' local type_param = 'style' local epilogue = '' if args['system'] and args['system'] ~= '' then image = 'Ambox important.svg' type_param = 'content' if yesno(nocat or args['nocat']) ~= true and not args.title.isRedirect then local protection_action = (args.title:inNamespace('File') and 'upload') or 'edit' local protection_level = require('Module:Effective protection level')._main(protection_action, args.title.fullText) if protection_level ~= 'sysop' and protection_level ~= 'templateeditor' and protection_level ~= 'interfaceadmin' then epilogue = mw.getCurrentFrame():expandTemplate { title = 'sandbox other', args = { [2] = '[[Category:' .. system_messages_cat .. ']]' } } end end elseif args.risk then image = 'Ambox warning orange.svg' type_param = 'content' end image = '[[File:' .. image .. '|40px|alt=Warning|link=]]' if args['form'] == 'editnotice' then return mw.getCurrentFrame():expandTemplate{ title = 'editnotice', args = { ['image'] = image, ['text'] = p._text(args), ['expiry'] = (args['expiry'] or '') } } .. epilogue else return require('Module:Message box').main('ombox', { type = type_param, image = image, text = p._text(args), expiry = (args['expiry'] or '') }) .. epilogue end end function p.main(frame) return p._main(getArgs(frame)) end return p qkt57qdst1ol2kbo88d4jxkr0ibiuy4 904870 904869 2026-09-08T04:32:27Z KartikMistry 10383 [[:en:Module:High-use]] માંથી આયાત કરેલ ૧ પુનરાવર્તન 904869 Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs local _fetch = require('Module:Transclusion_count')._fetch -- _fetch looks at the 'demo' argument local yesno = require('Module:Yesno') local lang_obj = mw.getContentLanguage() -- this here because the language object is used multiple places in the module local large_count_cutoff = 100000 local approx_num_total_pages = 66000000 local user_subpage_info_page = 'Wikipedia:User pages#SUB' local sandbox_module_page = 'Module:Sandbox' local system_messages_cat = 'Pages used in system messages needing protection' local sandbox_word = 'sandbox' local testcases_word = 'testcases' local doc_word = 'doc' local function count_from_args(args) if tonumber(args.count) then -- check if function has already been used return tonumber(args.count) -- early exit if so end local count if yesno(args['fetch']) ~= false then count = _fetch(args) -- fetch transclusion count end -- use explicitly-provided count when fetch fails if count == nil and args[1] ~= nil and args[1] ~= '' then -- convert local language number string to a number understandable by Lua count = mw.ustring.gsub(args[1], '+$', '') count = lang_obj:parseFormattedNumber(args[1]) end -- in case someone writes a non-positive number if count and count > 0 then return count end return nil end -- Actions if there is a large (greater than or equal to 100,000) transclusion count local function risk_boolean(args) if args.risk == true or args.risk == false then return args.risk elseif args[1] == 'risk' then return true else local count = count_from_args(args) if count and count >= large_count_cutoff then return true end end return false end -- function retained for backwards compatibility function p._risk(args) return risk_boolean(args) and 'risk' or '' end -- function retained for backwards compatibility function p.risk(frame) return p._risk(getArgs(frame)) end -- count and no_percent arguments retained for backwards compatibility function p._num(args, count, no_percent) if count == nil then count = count_from_args(args) end args.count = count args.risk = risk_boolean(args) -- Build output string local return_value = '' if args.count == nil and args.risk then return 'a very large number of' elseif args.count == nil then return 'many' else -- Use 2 significant figures for smaller numbers and 3 for larger ones local sigfig = 2 if args.count >= large_count_cutoff then sigfig = 3 end -- Prepare to round to appropriate number of sigfigs local f = math.floor(math.log10(args.count)) - sigfig + 1 -- Round and insert 'approximately' or '+' when appropriate if yesno(args[2]) == true or (type(args[1]) == 'string' and (mw.ustring.sub(args[1], -1) == '+')) then -- Round down return_value = string.format('%s+', lang_obj:formatNum(math.floor( (args.count / 10^(f)) ) * (10^(f))) ) else -- Round to nearest return_value = string.format('approximately&#x20;%s', lang_obj:formatNum(math.floor( (args.count / 10^(f)) + 0.5) * (10^(f))) ) end -- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes no_percent = yesno(no_percent or args['no-percent']) if args.count and args.count >= approx_num_total_pages/100 and not no_percent then local num_total_pages = mw.getCurrentFrame():callParserFunction('NUMBEROFPAGES', 'R') local total_percent = math.floor( ( ( args.count/num_total_pages ) * 100) + 0.5) if total_percent >= 1 then return_value = string.format('%s&#x20;pages, or roughly %s%% of all', return_value, total_percent) end end end return return_value end -- used by [[Template:Stub documentation]] and other pages -- count argument retained for backwards compatibility function p.num(frame, count) return p._num(getArgs(frame), count) end -- count argument retained for backwards compatibility function p._text(args, count) --[=[ Only show the information about how this template gets updated if someone is actually editing the page and maybe trying to update the count. ]=] local bot_text = (mw.getCurrentFrame():preprocess('{{REVISIONID}}') == '') and ("\n\n----\n'''Preview message''':" .. ' Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]]).') or '' if count == nil then count = count_from_args(args) end args.count = count args.risk = risk_boolean(args) -- trim /doc, /sandbox and /testcases local title = args.title or (args.demo and args.demo ~= '' and mw.title.new(args.demo, 'Template')) or mw.title.getCurrentTitle() if title.subpageText == doc_word or title.subpageText == sandbox_word or title.subpageText == testcases_word then title = title.basePageTitle end -- use /testcases of base template local testcases_page = mw.title.new(title.prefixedText .. '/' .. testcases_word) -- exists is expensive while testcases_page.basePageTitle.isSubpage and not testcases_page.exists do testcases_page = mw.title.new(testcases_page.basePageTitle.basePageTitle.prefixedText .. '/' .. testcases_word) end local systemMessages = (args['system'] or '') ~= '' -- This retrieves the project URL automatically to simplify localization. local templateCount = ('on [https://linkcount.toolforge.org/?project=%s&page=%s#transclusions %s pages]'):format( title:fullUrl():gsub('//(.-)/.*', '%1'), mw.uri.encode(title.fullText), p._num(args)) local used_on_text = "'''This " .. (title:inNamespace('Module') and 'Lua module' or 'template') .. ' is used ' if systemMessages then used_on_text = used_on_text .. args['system'] .. ((args.count and args.count > 2000) and ("''', and " .. templateCount) or ("'''")) else used_on_text = used_on_text .. templateCount .. "'''" end local sandbox_text = ('%s\'s [[%s/sandbox|/sandbox]] or [[%s|/testcases]] subpages, or in your own [[%s]]. '):format( title:inNamespace('Module') and 'module' or 'template', title.fullText, testcases_page.fullText, title:inNamespace('Module') and (sandbox_module_page .. '|module sandbox') or (user_subpage_info_page .. '|user subpage') ) local infoArg = args['info'] ~= '' and args['info'] if (systemMessages or args.risk) then local info = '.' if systemMessages then info = info .. '<br />Changes to it can cause immediate changes to the ' .. mw.site.namespaces.Project.name .. ' user interface.' end if infoArg then info = info .. '<br />' .. infoArg end sandbox_text = info .. '<br /> To avoid major disruption' .. (args.count and args.count >= large_count_cutoff and ' and server load' or '') .. -- should this use args.risk? ', any changes should be tested in the ' .. sandbox_text .. 'The tested changes can be added to this page in a single edit. ' else sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') .. 'hanges may be widely noticed. Test changes in the ' .. sandbox_text end local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes ' if args[2] ~= nil and args[2] ~= '' and yesno(args[2]) == nil then discussion_text = string.format('%sat [[%s]]', discussion_text, args[2]) else discussion_text = string.format('%son the [[%s|talk page]]', discussion_text, title.talkPageTitle.fullText) end return used_on_text .. sandbox_text .. discussion_text .. ' before implementing them.' .. bot_text end -- used by [[Template:R from high-use template]] -- count argument retained for backwards compatibility function p.text(frame, count) return p._text(getArgs(frame), count) end -- nocat argument retained for backwards compatibility function p._main(args, nocat) args.count = count_from_args(args) args.risk = risk_boolean(args) args.title = (args.demo and args.demo ~= '' and mw.title.new(args.demo, 'Template')) or mw.title.getCurrentTitle() local image = 'Ambox warning yellow.svg' local type_param = 'style' local epilogue = '' if args['system'] and args['system'] ~= '' then image = 'Ambox important.svg' type_param = 'content' if yesno(nocat or args['nocat']) ~= true and not args.title.isRedirect then local protection_action = (args.title:inNamespace('File') and 'upload') or 'edit' local protection_level = require('Module:Effective protection level')._main(protection_action, args.title.fullText) if protection_level ~= 'sysop' and protection_level ~= 'templateeditor' and protection_level ~= 'interfaceadmin' then epilogue = mw.getCurrentFrame():expandTemplate { title = 'sandbox other', args = { [2] = '[[Category:' .. system_messages_cat .. ']]' } } end end elseif args.risk then image = 'Ambox warning orange.svg' type_param = 'content' end image = '[[File:' .. image .. '|40px|alt=Warning|link=]]' if args['form'] == 'editnotice' then return mw.getCurrentFrame():expandTemplate{ title = 'editnotice', args = { ['image'] = image, ['text'] = p._text(args), ['expiry'] = (args['expiry'] or '') } } .. epilogue else return require('Module:Message box').main('ombox', { type = type_param, image = image, text = p._text(args), expiry = (args['expiry'] or '') }) .. epilogue end end function p.main(frame) return p._main(getArgs(frame)) end return p qkt57qdst1ol2kbo88d4jxkr0ibiuy4 વિભાગ:Transclusion count/data/T 828 112265 904871 897692 2026-09-06T05:10:24Z en>Ahechtbot 0 [[Wikipedia:BOT|Bot]]: Updated page. 904871 Scribunto text/plain return { ["T"] = 324000, ["T1"] = 9100, ["T:TDYK"] = 2700, ["TAFI/Picture_box"] = 2800, ["TBA"] = 6500, ["TCH"] = 2300, ["TCMDb_name"] = 2600, ["TCMDb_title"] = 15000, ["TDMCA"] = 23000, ["TERYT"] = 53000, ["TFAFULL"] = 14000, ["TFAIMAGE"] = 3000, ["TFAR_link"] = 118000, ["TFA_footer"] = 9800, ["TFAfooter"] = 9800, ["TFArecentlist"] = 5400, ["THA"] = 4500, ["TOC_bottom"] = 86000, ["TOC_left"] = 3100, ["TOC_left/styles.css"] = 3100, ["TOC_limit"] = 24000, ["TOC_limit/styles.css"] = 26000, ["TOC_right"] = 51000, ["TOC_right/styles.css"] = 51000, ["TOC_top"] = 86000, ["TOC_top/styles.css"] = 86000, ["TOClimit"] = 3100, ["TOCright"] = 7500, ["TPE"] = 2500, ["TUN"] = 2300, ["TUR"] = 8200, ["TWA/Logo/3"] = 74000, ["TWA/Navigation2"] = 5200, ["TWA_nav_inner_black"] = 38000, ["Tab"] = 6700, ["Tab/Number_of_defined_parameters"] = 6700, ["Tab/styles.css"] = 6700, ["TableTBA"] = 3100, ["Table_alignment"] = 19000, ["Table_alignment/styles.css"] = 19000, ["Tag"] = 7300, ["Talk"] = 4300, ["Talk_Header"] = 5500, ["Talk_archive"] = 45000, ["Talk_archive_navigation"] = 21000, ["Talk_header"] = 848000, ["Talk_header/archivebotparse"] = 115000, ["Talk_header/styles.css"] = 849000, ["Talk_other"] = 4590000, ["Talk_page"] = 8200, ["Talk_page_header"] = 4600, ["Talk_page_of_a_redirect"] = 4300, ["Talk_page_of_redirect"] = 36000, ["Talk_page_stalker"] = 13000, ["Talk_page_watcher"] = 3800, ["Talk_quote"] = 2500, ["Talk_quote_block"] = 22000, ["Talk_quote_block/styles.css"] = 22000, ["Talk_quote_inline"] = 177000, ["Talk_quote_inline/styles.css"] = 177000, ["Talk_quote_inline_with_italics"] = 2800, ["Talk_quote_inline_with_quotes"] = 7400, ["Talkarchive"] = 118000, ["Talkarchivenav"] = 31000, ["Talkback"] = 65000, ["Talkheader"] = 118000, ["Talkpage"] = 5800, ["Talkquote"] = 9200, ["Talkref"] = 3500, ["Talkspace_detect"] = 558000, ["Tallyho"] = 2300, ["Tan"] = 5200, ["Task_force_assessment_category"] = 3100, ["Task_force_assessment_category/core"] = 3100, ["Tasks"] = 953000, ["Taxobox"] = 3400, ["Taxobox/Error_colour"] = 507000, ["Taxobox/core"] = 507000, ["Taxobox/core/styles.css"] = 507000, ["Taxobox/species"] = 200000, ["Taxobox_colour"] = 658000, ["Taxon_author"] = 6300, ["Taxon_info"] = 547000, ["Taxon_italics"] = 395000, ["Taxonbar"] = 504000, ["Taxonbar/candidate"] = 502000, ["Taxonomy"] = 401000, ["Taxonomy/Acalyptratae"] = 6700, ["Taxonomy/Acanthomorpha"] = 17000, ["Taxonomy/Acanthopterygii"] = 17000, ["Taxonomy/Acrididea"] = 2100, ["Taxonomy/Actinomycetes"] = 2600, ["Taxonomy/Actinomycetota"] = 2800, ["Taxonomy/Actinopteri"] = 32000, ["Taxonomy/Actinopterygii"] = 33000, ["Taxonomy/Aculeata"] = 10000, ["Taxonomy/Adephaga"] = 14000, ["Taxonomy/Afrophidia"] = 4500, ["Taxonomy/Agaricales"] = 3600, ["Taxonomy/Agaricomycetes"] = 7300, ["Taxonomy/Agaricomycetidae"] = 4600, ["Taxonomy/Agaricomycotina"] = 7500, ["Taxonomy/Alethinophidia"] = 4700, ["Taxonomy/Allotriocarida"] = 266000, ["Taxonomy/Alphaproteobacteria"] = 2100, ["Taxonomy/Amastigomycota"] = 24000, ["Taxonomy/Ambulacraria"] = 3100, ["Taxonomy/Ammonoidea"] = 2400, ["Taxonomy/Amniota"] = 64000, ["Taxonomy/Amorphea"] = 518000, ["Taxonomy/Amphibia"] = 9100, ["Taxonomy/Amphiesmenoptera"] = 117000, ["Taxonomy/Angiosperms"] = 104000, ["Taxonomy/Animalia"] = 493000, ["Taxonomy/Antennoclypeata"] = 3200, ["Taxonomy/Anthophila"] = 4600, ["Taxonomy/Anthozoa"] = 2200, ["Taxonomy/Antliophora"] = 24000, ["Taxonomy/Anura"] = 7800, ["Taxonomy/Aparaglossata"] = 224000, ["Taxonomy/Apiales"] = 2200, ["Taxonomy/Apo-Chiroptera"] = 2000, ["Taxonomy/Apocrita"] = 14000, ["Taxonomy/Apoditrysia"] = 107000, ["Taxonomy/Apoidea"] = 5300, ["Taxonomy/Arachnida"] = 26000, ["Taxonomy/Arachnopulmonata"] = 19000, ["Taxonomy/Araneae"] = 18000, ["Taxonomy/Araneoidea"] = 3000, ["Taxonomy/Araneomorphae"] = 16000, ["Taxonomy/Archaeplastida"] = 113000, ["Taxonomy/Archaeplastida/showdomain"] = 2700, ["Taxonomy/Archelosauria"] = 7200, ["Taxonomy/Archosauria"] = 25000, ["Taxonomy/Archosauria/skip"] = 19000, ["Taxonomy/Archosauriformes"] = 5300, ["Taxonomy/Archosauromorpha"] = 5500, ["Taxonomy/Arctiinae"] = 11000, ["Taxonomy/Arctiini"] = 5200, ["Taxonomy/Arthropoda"] = 307000, ["Taxonomy/Artiodactyla"] = 2700, ["Taxonomy/Artiofabula"] = 2400, ["Taxonomy/Artiopoda"] = 2300, ["Taxonomy/Aschiza"] = 2500, ["Taxonomy/Ascomycota"] = 16000, ["Taxonomy/Asilomorpha"] = 3400, ["Taxonomy/Asparagales"] = 12000, ["Taxonomy/Asteraceae"] = 8600, ["Taxonomy/Asterales"] = 9900, ["Taxonomy/Asterids"] = 31000, ["Taxonomy/Asteroideae"] = 6600, ["Taxonomy/Auchenorrhyncha"] = 4000, ["Taxonomy/Australaves"] = 11000, ["Taxonomy/Avemetatarsalia"] = 5100, ["Taxonomy/Avemetatarsalia/skip"] = 19000, ["Taxonomy/Aves"] = 19000, ["Taxonomy/Avicularioidea"] = 2300, ["Taxonomy/BOP_clade"] = 2300, ["Taxonomy/Bacillati"] = 5800, ["Taxonomy/Bacillota"] = 2300, ["Taxonomy/Bacteria"] = 14000, ["Taxonomy/Basidiomycota"] = 8300, ["Taxonomy/Batrachia"] = 8800, ["Taxonomy/Batrachomorpha"] = 9100, ["Taxonomy/Bilateria"] = 487000, ["Taxonomy/Bivalvia"] = 2800, ["Taxonomy/Bombycoidea"] = 3800, ["Taxonomy/Boreoeutheria"] = 16000, ["Taxonomy/Brachycera"] = 20000, ["Taxonomy/Brachyura"] = 2000, ["Taxonomy/Bromeliaceae"] = 2300, ["Taxonomy/Buccinoidea"] = 2500, ["Taxonomy/CAM"] = 113000, ["Taxonomy/CAM/showdomain"] = 2800, ["Taxonomy/Caelifera"] = 2200, ["Taxonomy/Caenogastropoda"] = 25000, ["Taxonomy/Caenophidia"] = 4300, ["Taxonomy/Caesalpinioideae"] = 2200, ["Taxonomy/Calyptratae"] = 5600, ["Taxonomy/Campanulids"] = 13000, ["Taxonomy/Carabidae"] = 11000, ["Taxonomy/Caraboidea"] = 12000, ["Taxonomy/Carnivoramorpha"] = 2000, ["Taxonomy/Caryophyllales"] = 5600, ["Taxonomy/Cassidinae"] = 3900, ["Taxonomy/Cephalopoda"] = 5000, ["Taxonomy/Cerambycidae"] = 29000, ["Taxonomy/Cerambycinae"] = 6200, ["Taxonomy/Cetruminantia"] = 2200, ["Taxonomy/Chelicerata"] = 27000, ["Taxonomy/Chiroptera"] = 2000, ["Taxonomy/Choanozoa"] = 493000, ["Taxonomy/Chondrichthyes"] = 2700, ["Taxonomy/Chordata"] = 113000, ["Taxonomy/Chrysomelidae"] = 7600, ["Taxonomy/Chrysomeloidea"] = 37000, ["Taxonomy/Cicadomorpha"] = 2800, ["Taxonomy/Cimicomorpha"] = 2200, ["Taxonomy/Clupeocephala"] = 30000, ["Taxonomy/Cnidaria"] = 3800, ["Taxonomy/Coccinellidae"] = 2800, ["Taxonomy/Coccinellinae"] = 2200, ["Taxonomy/Coccinelloidea"] = 3200, ["Taxonomy/Coelolepida"] = 116000, ["Taxonomy/Coleoptera"] = 82000, ["Taxonomy/Coleopterida"] = 83000, ["Taxonomy/Colubridae"] = 2700, ["Taxonomy/Colubroidea"] = 2700, ["Taxonomy/Colubroides"] = 4300, ["Taxonomy/Commelinids"] = 12000, ["Taxonomy/Conchifera"] = 5200, ["Taxonomy/Condylognatha"] = 12000, ["Taxonomy/Conoidea"] = 7300, ["Taxonomy/Core_eudicots"] = 70000, ["Taxonomy/Cosmopterigidae"] = 2100, ["Taxonomy/Cossoidea"] = 2800, ["Taxonomy/Crambidae"] = 12000, ["Taxonomy/Crambinae"] = 2300, ["Taxonomy/Crocopoda"] = 5400, ["Taxonomy/Ctenosquamata"] = 18000, ["Taxonomy/Cucujiformia"] = 49000, ["Taxonomy/Curculionidae"] = 3200, ["Taxonomy/Curculionoidea"] = 3900, ["Taxonomy/Cyclorrhapha"] = 12000, ["Taxonomy/Cyperaceae"] = 2600, ["Taxonomy/Cypriniformes"] = 5100, ["Taxonomy/Cypriniphysi"] = 5100, ["Taxonomy/Cyprinoidei"] = 3900, ["Taxonomy/Decapoda"] = 4300, ["Taxonomy/Dendrobiinae"] = 2100, ["Taxonomy/Depressariidae"] = 3100, ["Taxonomy/Deuteropoda"] = 307000, ["Taxonomy/Deuterostomia"] = 116000, ["Taxonomy/Diaphoretickes"] = 117000, ["Taxonomy/Diaphoretickes/showdomain"] = 6900, ["Taxonomy/Diapsida"] = 25000, ["Taxonomy/Dicondylia"] = 264000, ["Taxonomy/Dictyoptera"] = 2500, ["Taxonomy/Dikarya"] = 24000, ["Taxonomy/Dinosauria"] = 4300, ["Taxonomy/Dinosauria/skip"] = 19000, ["Taxonomy/Dinosauromorpha"] = 4300, ["Taxonomy/Diptera"] = 24000, ["Taxonomy/Ditrysia"] = 113000, ["Taxonomy/Doryloformicia"] = 2900, ["Taxonomy/Dothideomyceta"] = 9700, ["Taxonomy/Dothideomycetes"] = 2700, ["Taxonomy/Ecdysozoa"] = 310000, ["Taxonomy/Echinodermata"] = 2800, ["Taxonomy/Elasmobranchii"] = 2200, ["Taxonomy/Elateriformia"] = 3800, ["Taxonomy/Elementaves"] = 2100, ["Taxonomy/Elpistostegalia"] = 74000, ["Taxonomy/Embryophytes"] = 110000, ["Taxonomy/Embryophytes/Plantae"] = 108000, ["Taxonomy/Ennominae"] = 2700, ["Taxonomy/Ensifera"] = 2200, ["Taxonomy/Entelegynae"] = 8100, ["Taxonomy/Eotetrapodiformes"] = 74000, ["Taxonomy/Epidendroideae"] = 5500, ["Taxonomy/Erebidae"] = 17000, ["Taxonomy/Eremoneura"] = 12000, ["Taxonomy/Ericales"] = 4200, ["Taxonomy/Euarchontoglires"] = 6400, ["Taxonomy/Eucarida"] = 4400, ["Taxonomy/Eucrocopoda"] = 5300, ["Taxonomy/Eudicots"] = 74000, ["Taxonomy/Eufalconimorphae"] = 11000, ["Taxonomy/Euformicia"] = 3200, ["Taxonomy/Eugnathostomata"] = 111000, ["Taxonomy/Eukaryota"] = 636000, ["Taxonomy/Eukaryota/displayed"] = 8200, ["Taxonomy/Eulepidoptera"] = 114000, ["Taxonomy/Eumalacostraca"] = 6900, ["Taxonomy/Eumetabola"] = 251000, ["Taxonomy/Eumetazoa"] = 491000, ["Taxonomy/Eupasseres"] = 9800, ["Taxonomy/Eupercaria"] = 5700, ["Taxonomy/Euphyllophytes"] = 2000, ["Taxonomy/Eupitheciini"] = 2000, ["Taxonomy/Eupulmonata"] = 6300, ["Taxonomy/Eureptilia"] = 25000, ["Taxonomy/Eurypterygii"] = 18000, ["Taxonomy/Euselachii"] = 2300, ["Taxonomy/Euteleostei"] = 19000, ["Taxonomy/Eutheria"] = 17000, ["Taxonomy/Euthyneura"] = 13000, ["Taxonomy/Euungulata"] = 4000, ["Taxonomy/Fabaceae"] = 6800, ["Taxonomy/Fabales"] = 7100, ["Taxonomy/Fabids"] = 18000, ["Taxonomy/Faboideae"] = 4000, ["Taxonomy/Ferae"] = 2400, ["Taxonomy/Ferungulata"] = 6400, ["Taxonomy/Filozoa"] = 493000, ["Taxonomy/Formicidae"] = 3300, ["Taxonomy/Formicoidea"] = 3300, ["Taxonomy/Fungi"] = 25000, ["Taxonomy/Gamasina"] = 2300, ["Taxonomy/Gammaproteobacteria"] = 2000, ["Taxonomy/Gastropoda"] = 44000, ["Taxonomy/Gekkonoidea"] = 2200, ["Taxonomy/Gekkonomorpha"] = 2600, ["Taxonomy/Gekkota"] = 2600, ["Taxonomy/Gelechiidae"] = 6100, ["Taxonomy/Gelechiinae"] = 3000, ["Taxonomy/Gelechioidea"] = 19000, ["Taxonomy/Gentianales"] = 5000, ["Taxonomy/Geometridae"] = 11000, ["Taxonomy/Geometroidea"] = 11000, ["Taxonomy/Glires"] = 4600, ["Taxonomy/Gliriformes"] = 4700, ["Taxonomy/Glossata"] = 116000, ["Taxonomy/Gnathostomata"] = 111000, ["Taxonomy/Gracillariidae"] = 2200, ["Taxonomy/Gracillarioidea"] = 2500, ["Taxonomy/Graminid_clade"] = 4100, ["Taxonomy/Halvaria"] = 3000, ["Taxonomy/Helicina_(suborder)"] = 5500, ["Taxonomy/Hemiptera"] = 10000, ["Taxonomy/Hesperiidae"] = 2700, ["Taxonomy/Heterobranchia"] = 13000, ["Taxonomy/Heteroneura"] = 115000, ["Taxonomy/Heteroptera"] = 5100, ["Taxonomy/Hexapoda"] = 266000, ["Taxonomy/Holometabola"] = 239000, ["Taxonomy/Holomycota"] = 25000, ["Taxonomy/Holozoa"] = 493000, ["Taxonomy/Hyloidea"] = 3600, ["Taxonomy/Hymenoptera"] = 14000, ["Taxonomy/Hymenopterida"] = 14000, ["Taxonomy/Iguania"] = 2500, ["Taxonomy/Iguanomorpha"] = 2500, ["Taxonomy/Insecta"] = 264000, ["Taxonomy/Lamiales"] = 6900, ["Taxonomy/Lamiids"] = 14000, ["Taxonomy/Lamiinae"] = 21000, ["Taxonomy/Larentiinae"] = 3700, ["Taxonomy/Laurasiatheria"] = 9200, ["Taxonomy/Lecanoromycetes"] = 4700, ["Taxonomy/Lecanoromycetidae"] = 3200, ["Taxonomy/Leotiomyceta"] = 14000, ["Taxonomy/Lepidoptera"] = 116000, ["Taxonomy/Lepidosauria"] = 15000, ["Taxonomy/Lepidosauromorpha"] = 15000, ["Taxonomy/Life"] = 654000, ["Taxonomy/Linyphiidae"] = 2100, ["Taxonomy/Lissamphibia"] = 9100, ["Taxonomy/Lithosiini"] = 3600, ["Taxonomy/Littorinimorpha"] = 5900, ["Taxonomy/Lophotrochozoa"] = 57000, ["Taxonomy/Lycaenidae"] = 4100, ["Taxonomy/Macroheterocera"] = 43000, ["Taxonomy/Magnoliids"] = 2900, ["Taxonomy/Malacostraca"] = 7100, ["Taxonomy/Malaxideae"] = 2200, ["Taxonomy/Malpighiales"] = 4900, ["Taxonomy/Malvales"] = 2700, ["Taxonomy/Malvids"] = 13000, ["Taxonomy/Mammalia"] = 19000, ["Taxonomy/Mammalia/skip"] = 19000, ["Taxonomy/Mandibulata"] = 278000, ["Taxonomy/Melolonthinae"] = 3000, ["Taxonomy/Meso-Papilionoideae"] = 3800, ["Taxonomy/Mesostigmata"] = 2800, ["Taxonomy/Mollusca"] = 53000, ["Taxonomy/Monocots"] = 27000, ["Taxonomy/Monogynaspida"] = 2500, ["Taxonomy/Multicrustacea"] = 8700, ["Taxonomy/Muricidae"] = 2200, ["Taxonomy/Muricoidea"] = 2200, ["Taxonomy/Muroidea"] = 2600, ["Taxonomy/Muscomorpha"] = 15000, ["Taxonomy/Mygalomorphae"] = 2400, ["Taxonomy/Myoglossata"] = 116000, ["Taxonomy/Myomorpha"] = 2700, ["Taxonomy/Myriapoda"] = 2400, ["Taxonomy/Myrtaceae"] = 3100, ["Taxonomy/Myrtales"] = 4600, ["Taxonomy/Myrtoideae"] = 3100, ["Taxonomy/Nematocera"] = 3300, ["Taxonomy/Neoaves"] = 17000, ["Taxonomy/Neobatrachia"] = 6800, ["Taxonomy/Neocephalopoda"] = 3900, ["Taxonomy/Neodiapsida"] = 24000, ["Taxonomy/Neogastropoda"] = 16000, ["Taxonomy/Neognathae"] = 18000, ["Taxonomy/Neolepidoptera"] = 116000, ["Taxonomy/Neoptera"] = 260000, ["Taxonomy/Neopterygii"] = 32000, ["Taxonomy/Neoreptilia"] = 25000, ["Taxonomy/Neoteleostei"] = 18000, ["Taxonomy/Nephrozoa"] = 486000, ["Taxonomy/Neuropteroidea"] = 83000, ["Taxonomy/Noctuidae"] = 8400, ["Taxonomy/Noctuinae"] = 2800, ["Taxonomy/Noctuoidea"] = 27000, ["Taxonomy/Non-protein_amino_acid-accumulating_clade"] = 2700, ["Taxonomy/Nudibranchia"] = 2700, ["Taxonomy/Nudipleura"] = 2700, ["Taxonomy/Nymphalidae"] = 4300, ["Taxonomy/Obazoa"] = 518000, ["Taxonomy/Obtectomera"] = 73000, ["Taxonomy/Odonata"] = 3100, ["Taxonomy/Odonatoptera"] = 3100, ["Taxonomy/Oestroidea"] = 5000, ["Taxonomy/Olfactores"] = 113000, ["Taxonomy/Ophidia"] = 5200, ["Taxonomy/Opisthokonta"] = 518000, ["Taxonomy/Opisthothelae"] = 18000, ["Taxonomy/Orchidaceae"] = 8100, ["Taxonomy/Orchidoideae"] = 2300, ["Taxonomy/Ornithodira"] = 5100, ["Taxonomy/Ornithurae"] = 19000, ["Taxonomy/Ornithurae/skip"] = 19000, ["Taxonomy/Orthoptera"] = 4400, ["Taxonomy/Ostariophysi"] = 10000, ["Taxonomy/Osteichthyes"] = 108000, ["Taxonomy/Otocephala"] = 11000, ["Taxonomy/Otophysi"] = 10000, ["Taxonomy/Ovalentaria"] = 5000, ["Taxonomy/Palaeoptera"] = 3800, ["Taxonomy/Pan-Carnivora"] = 2200, ["Taxonomy/Pan-Euteleostei"] = 19000, ["Taxonomy/Pan-Euungulata"] = 4100, ["Taxonomy/Panarthropoda"] = 308000, ["Taxonomy/Pancrustacea"] = 275000, ["Taxonomy/Panorpida"] = 141000, ["Taxonomy/Panpulmonata"] = 8600, ["Taxonomy/Pantetrapulmonata"] = 19000, ["Taxonomy/Papilionoidea"] = 13000, ["Taxonomy/ParaHoxozoa"] = 490000, ["Taxonomy/Parapleurota"] = 25000, ["Taxonomy/Parasitiformes"] = 3100, ["Taxonomy/Paraxonia"] = 2800, ["Taxonomy/Passerea"] = 13000, ["Taxonomy/Passeri"] = 7800, ["Taxonomy/Passerida"] = 2500, ["Taxonomy/Passerides"] = 5900, ["Taxonomy/Passeriformes"] = 9800, ["Taxonomy/Pentatomomorpha"] = 2300, ["Taxonomy/Peracarida"] = 2500, ["Taxonomy/Perciformes"] = 2800, ["Taxonomy/Percomorpha"] = 16000, ["Taxonomy/Pezizomycotina"] = 15000, ["Taxonomy/Phycitinae"] = 2600, ["Taxonomy/Phytophaga"] = 41000, ["Taxonomy/Placentalia"] = 17000, ["Taxonomy/Plantae"] = 110000, ["Taxonomy/Planulozoa"] = 3800, ["Taxonomy/Platyhelminthes"] = 2700, ["Taxonomy/Pleocyemata"] = 4100, ["Taxonomy/Poaceae"] = 4100, ["Taxonomy/Poales"] = 9500, ["Taxonomy/Podiata"] = 518000, ["Taxonomy/Polyneoptera"] = 8600, ["Taxonomy/Polyphaga"] = 68000, ["Taxonomy/Polypodiophyta"] = 2000, ["Taxonomy/Polypodiopsida"] = 2000, ["Taxonomy/Polysporangiophytes"] = 108000, ["Taxonomy/Polysporangiophytes/Plantae"] = 108000, ["Taxonomy/Proteales"] = 2000, ["Taxonomy/Protostomia"] = 371000, ["Taxonomy/Pseudomonadati"] = 8100, ["Taxonomy/Pseudomonadota"] = 5000, ["Taxonomy/Psittacopasseres"] = 11000, ["Taxonomy/Pteropliini"] = 2300, ["Taxonomy/Pterygota"] = 263000, ["Taxonomy/Pyralidae"] = 4500, ["Taxonomy/Pyraloidea"] = 16000, ["Taxonomy/Pyramidellidae"] = 2200, ["Taxonomy/Pyramidelloidea"] = 2200, ["Taxonomy/RTA_clade"] = 4500, ["Taxonomy/Ranoidea"] = 2900, ["Taxonomy/Reptantia"] = 3400, ["Taxonomy/Reptilia"] = 25000, ["Taxonomy/Reptiliomorpha"] = 64000, ["Taxonomy/Rhabditophora"] = 2700, ["Taxonomy/Rhipidistia"] = 75000, ["Taxonomy/Ringipleura"] = 2800, ["Taxonomy/Rodentia"] = 4400, ["Taxonomy/Romeriida"] = 25000, ["Taxonomy/Rosales"] = 3400, ["Taxonomy/Rosids"] = 31000, ["Taxonomy/Rouphozoa"] = 2900, ["Taxonomy/Rubiaceae"] = 2600, ["Taxonomy/Saccharomyceta"] = 15000, ["Taxonomy/Salientia"] = 7800, ["Taxonomy/Salticidae"] = 2900, ["Taxonomy/Salticinae"] = 2600, ["Taxonomy/Sapindales"] = 3300, ["Taxonomy/Sar"] = 4000, ["Taxonomy/Sarcopterygii"] = 75000, ["Taxonomy/Sauria"] = 24000, ["Taxonomy/Saurischia"] = 2900, ["Taxonomy/Sauropsida"] = 43000, ["Taxonomy/Scarabaeidae"] = 10000, ["Taxonomy/Scarabaeiformia"] = 11000, ["Taxonomy/Scarabaeoidea"] = 11000, ["Taxonomy/Schizophora"] = 12000, ["Taxonomy/Scincidae"] = 2100, ["Taxonomy/Scincomorpha"] = 2400, ["Taxonomy/Scrotifera"] = 8500, ["Taxonomy/Sericinae"] = 3900, ["Taxonomy/Sericini"] = 3600, ["Taxonomy/Serpentes"] = 5200, ["Taxonomy/Setaphyta"] = 2100, ["Taxonomy/Siluriformes"] = 3600, ["Taxonomy/Simplicidentata"] = 4400, ["Taxonomy/Sordariomyceta"] = 4600, ["Taxonomy/Sordariomycetes"] = 2900, ["Taxonomy/Spermatophyta"] = 106000, ["Taxonomy/Spermatophytes/Plantae"] = 106000, ["Taxonomy/Spilomelinae"] = 4300, ["Taxonomy/Spiralia"] = 61000, ["Taxonomy/Squamata"] = 15000, ["Taxonomy/Staphyliniformia"] = 3100, ["Taxonomy/Staphylinoidea"] = 2300, ["Taxonomy/Stegocephali"] = 74000, ["Taxonomy/Stylommatophora"] = 6000, ["Taxonomy/Superasterids"] = 38000, ["Taxonomy/Superrosids"] = 32000, ["Taxonomy/Syrphidae"] = 2100, ["Taxonomy/Syrphoidea"] = 2300, ["Taxonomy/TSAR"] = 4000, ["Taxonomy/Tachinidae"] = 4400, ["Taxonomy/Tectipleura"] = 9800, ["Taxonomy/Teleocephala"] = 30000, ["Taxonomy/Teleostei"] = 32000, ["Taxonomy/Teleosteomorpha"] = 32000, ["Taxonomy/Telluraves"] = 13000, ["Taxonomy/Tenebrionoidea"] = 3400, ["Taxonomy/Tephritidae"] = 3300, ["Taxonomy/Tephritinae"] = 2400, ["Taxonomy/Tephritoidea"] = 4300, ["Taxonomy/Tetrapoda"] = 74000, ["Taxonomy/Tetrapodomorpha"] = 74000, ["Taxonomy/Tetrapulmonata"] = 19000, ["Taxonomy/Theria"] = 18000, ["Taxonomy/Theria/skip"] = 18000, ["Taxonomy/Theropoda/skip"] = 19000, ["Taxonomy/Tortricidae"] = 8500, ["Taxonomy/Tortricinae"] = 5900, ["Taxonomy/Tortricoidea"] = 8500, ["Taxonomy/Toxicofera"] = 8400, ["Taxonomy/Tracheophyta"] = 108000, ["Taxonomy/Tracheophytes/Plantae"] = 108000, ["Taxonomy/Trilobita"] = 2200, ["Taxonomy/Trilobitomorpha"] = 2300, ["Taxonomy/Trochida"] = 2800, ["Taxonomy/Trochoidea"] = 2800, ["Taxonomy/Tyranni"] = 2000, ["Taxonomy/Unicalcarida"] = 14000, ["Taxonomy/Vertebrata"] = 112000, ["Taxonomy/Vetigastropoda"] = 4900, ["Taxonomy/Virus"] = 2900, ["Taxonomy/crown_Formicidae"] = 3200, ["Taxonomy_key"] = 150000, ["Taxonomy_preload"] = 150000, ["Tb"] = 13000, ["Team_roster_navbox"] = 34000, ["Technical"] = 4100, ["Technically_indistinguishable"] = 2500, ["Television_debuts_endings_antonym"] = 7200, ["Television_episode_redirect_handler"] = 24000, ["Television_episode_short_description"] = 13000, ["Template"] = 4700, ["Template-Class"] = 14000, ["Template-protected"] = 4400, ["TemplateData_header"] = 18000, ["Template_category"] = 36000, ["Template_display"] = 57000, ["Template_for_discussion/dated"] = 13000, ["Template_for_discussion/styles.css"] = 84000, ["Template_for_merging/dated"] = 71000, ["Template_link"] = 7580000, ["Template_link_code"] = 1160000, ["Template_link_code_with_subst"] = 20000, ["Template_link_expanded"] = 2640000, ["Template_link_expanded_with_subst"] = 5100, ["Template_link_general"] = 24000, ["Template_link_interwiki"] = 9000, ["Template_link_null"] = 9200, ["Template_link_universal"] = 12000, ["Template_link_with_alternate_text"] = 2200, ["Template_link_with_link_off"] = 9800, ["Template_link_with_linked_braces"] = 8200, ["Template_link_with_parameters"] = 70000, ["Template_link_with_subst"] = 55000, ["Template_links"] = 2500, ["Template_other"] = 4970000, ["Template_parameter_usage"] = 20000, ["Template_parameter_value"] = 52000, ["Template_rating"] = 2600, ["Template_reference_list"] = 7400, ["Template_sandbox_notice"] = 6500, ["Template_shortcut"] = 6600, ["TennisEventInfo"] = 6800, ["TennisEvents"] = 2200, ["Tennis_events"] = 13000, ["Tennis_icon"] = 2800, ["Tennis_icon2"] = 2800, ["Tennis_record"] = 3000, ["Terminate_sentence"] = 53000, ["Testcases_notice"] = 5100, ["Text_diff"] = 3600, ["Tfd_links"] = 6900, ["Th/abp"] = 115000, ["Thank"] = 2400, ["Thank_you"] = 5400, ["The_edit-summary_field"] = 8900, ["The_edit-summary_field/OOUI"] = 2400, ["Their"] = 15000, ["They"] = 11000, ["They_have"] = 40000, ["Thin_space"] = 30000, ["Thinsp"] = 27000, ["Third-party"] = 6700, ["Thirteen_Colonies_article_name"] = 2100, ["This_is_a_new_user"] = 7000, ["Thursday"] = 2800, ["Tick"] = 81000, ["Ticket_confirmation"] = 3200, ["Time"] = 2800, ["Time_ago"] = 186000, ["Time_signature"] = 3300, ["Time_with_time_zone_link"] = 4400, ["Tire"] = 3300, ["Title_case"] = 5900, ["Title_century"] = 31000, ["Title_country"] = 42000, ["Title_decade"] = 31000, ["Title_demonym"] = 39000, ["Title_disambig_text"] = 251000, ["Title_language"] = 2600, ["Title_monthname"] = 41000, ["Title_number"] = 4400, ["Title_year"] = 296000, ["Title_year+1"] = 13000, ["Title_year-1"] = 3000, ["Title_year2range"] = 7900, ["Title_year2range-1"] = 6400, ["Title_year_range"] = 13000, ["Tl"] = 7280000, ["Tl2"] = 8900, ["Tlc"] = 911000, ["Tld"] = 255000, ["Tlf"] = 9700, ["Tlg"] = 22000, ["Tlit"] = 3300, ["Tlp"] = 70000, ["Tls"] = 53000, ["Tlsc"] = 20000, ["Tlsp"] = 2400, ["Tlu"] = 12000, ["Tlx"] = 2640000, ["Tlxs"] = 3400, ["Tmbox"] = 2400000, ["Tmpv"] = 50000, ["Tn"] = 8200, ["Tnull"] = 9000, ["To"] = 3000, ["To_USD"] = 2500, ["To_USD/CurrencyCheck"] = 2500, ["To_USD/General"] = 2200, ["To_be_announced"] = 7200, ["To_do"] = 7700, ["Toc_right"] = 2100, ["Tocright"] = 7300, ["Todo"] = 2700, ["Tomorrow"] = 7200, ["Tone"] = 7700, ["Tone-cmn"] = 2800, ["Toolbar"] = 349000, ["Toolforge"] = 12000, ["Tooltip"] = 565000, ["Tooltip/styles.css"] = 565000, ["Top-Class"] = 15000, ["Top-importance"] = 15000, ["Top_25_Report"] = 4200, ["Top_25_report"] = 6300, ["Top_icon"] = 84000, ["Totd"] = 4300, ["Totd_nav"] = 5400, ["Tp"] = 2600, ["Tpq"] = 3900, ["Tpr"] = 2900, ["Tps"] = 12000, ["Tpw"] = 3600, ["Tq"] = 173000, ["Tq2"] = 5700, ["Tqb"] = 5400, ["Tqq"] = 7400, ["Tquote"] = 2300, ["Track_gauge"] = 26000, ["Track_listing"] = 124000, ["Tracking_category"] = 5200, ["Tracklist"] = 15000, ["Trademark"] = 7800, ["Trademarked"] = 4300, ["Transclude"] = 18000, ["Transclude_lead_excerpt"] = 3600, ["Transcluded_section"] = 4700, ["Transclusionless"] = 5000, ["Translated"] = 25000, ["Translated_page"] = 114000, ["Translation"] = 20000, ["Translation/Base"] = 2400, ["Translation/Information"] = 2100, ["Translation/Summary"] = 2100, ["Transliteration"] = 69000, ["Tree_chart"] = 8400, ["Tree_chart/end"] = 8400, ["Tree_chart/start"] = 8400, ["Tree_list"] = 25000, ["Tree_list/end"] = 25000, ["Tree_list/styles.css"] = 25000, ["Trim"] = 2990000, ["Trim_%"] = 6700, ["Trim_brackets"] = 3600, ["Trim_leading"] = 2100, ["Trim_quotes"] = 26000, ["Trout"] = 2200, ["Tsh"] = 3300, ["Tsp"] = 2200, ["Tuesday"] = 2800, ["TuttoCalciatori"] = 2200, ["Twitter"] = 16000, ["Two-digit_year"] = 6000, ["TwoLegResult"] = 5800, ["TwoLegStart"] = 4600, ["TwoLeg_start"] = 5800, ["Module:TNT"] = 10000, ["Module:TableTools"] = 9610000, ["Module:Table_empty_cell"] = 33000, ["Module:Taxobox_ranks"] = 658000, ["Module:TaxonItalics"] = 657000, ["Module:TaxonList"] = 28000, ["Module:Taxonbar"] = 504000, ["Module:Taxonbar/candidate"] = 502000, ["Module:Taxonbar/conf"] = 504000, ["Module:Taxonbar/exists"] = 502000, ["Module:Taxonbar/whitelist"] = 504000, ["Module:Team_appearances_list"] = 17000, ["Module:Team_appearances_list/data"] = 17000, ["Module:Team_bracket"] = 55000, ["Module:Team_bracket_tracking"] = 3700, ["Module:Team_roster_navbox"] = 35000, ["Module:Television_episode_redirect_handler"] = 24000, ["Module:Television_episode_short_description"] = 35000, ["Module:Television_infoboxes_disambiguation_check"] = 72000, ["Module:TemplatePar"] = 33000, ["Module:TemplateStyles"] = 599000, ["Module:Template_invocation"] = 3200, ["Module:Template_link_general"] = 3800000, ["Module:Template_parameter_value"] = 12100000, ["Module:Template_redirect_regex"] = 1460000, ["Module:Template_test_case"] = 3300, ["Module:Template_test_case/config"] = 3300, ["Module:Template_test_case/data"] = 3300, ["Module:Template_wrapper"] = 1090000, ["Module:Tennis_events_nav"] = 22000, ["Module:Text"] = 2110000, ["Module:Text/data"] = 53000, ["Module:Tfd_links"] = 6900, ["Module:Time"] = 4500, ["Module:Time/data"] = 4500, ["Module:Time_ago"] = 193000, ["Module:Title_monthname"] = 41000, ["Module:Toolbar"] = 1510000, ["Module:Top_25_report"] = 6200, ["Module:Track_gauge"] = 26000, ["Module:Track_gauge/data"] = 26000, ["Module:Track_listing"] = 124000, ["Module:Track_listing/configuration"] = 124000, ["Module:Track_listing/styles.css"] = 124000, ["Module:Transclusion_count"] = 64000, ["Module:Transclusion_count/data/A"] = 3700, ["Module:Transclusion_count/data/B"] = 2800, ["Module:Transclusion_count/data/C"] = 12000, ["Module:Transclusion_count/data/E"] = 2400, ["Module:Transclusion_count/data/G"] = 2000, ["Module:Transclusion_count/data/I"] = 3300, ["Module:Transclusion_count/data/L"] = 2000, ["Module:Transclusion_count/data/M"] = 3200, ["Module:Transclusion_count/data/N"] = 2800, ["Module:Transclusion_count/data/P"] = 2900, ["Module:Transclusion_count/data/S"] = 5000, ["Module:Transclusion_count/data/T"] = 2600, ["Module:Transclusion_count/data/U"] = 2600, ["Module:Transclusion_count/data/W"] = 3700, ["Module:Transclusion_count/data/other"] = 2200, ["Module:Tree_chart"] = 8400, ["Module:Tree_chart/data"] = 8400, ["Module:Trim_quotes"] = 68000, ["Module:TwitterSnowflake"] = 48000, ["Module:Type_in_location"] = 137000, } 1r81piakw1fa6w63hojc2jmra86wpq2 904872 904871 2026-09-08T04:32:28Z KartikMistry 10383 [[:en:Module:Transclusion_count/data/T]] માંથી આયાત કરેલ ૧ પુનરાવર્તન 904871 Scribunto text/plain return { ["T"] = 324000, ["T1"] = 9100, ["T:TDYK"] = 2700, ["TAFI/Picture_box"] = 2800, ["TBA"] = 6500, ["TCH"] = 2300, ["TCMDb_name"] = 2600, ["TCMDb_title"] = 15000, ["TDMCA"] = 23000, ["TERYT"] = 53000, ["TFAFULL"] = 14000, ["TFAIMAGE"] = 3000, ["TFAR_link"] = 118000, ["TFA_footer"] = 9800, ["TFAfooter"] = 9800, ["TFArecentlist"] = 5400, ["THA"] = 4500, ["TOC_bottom"] = 86000, ["TOC_left"] = 3100, ["TOC_left/styles.css"] = 3100, ["TOC_limit"] = 24000, ["TOC_limit/styles.css"] = 26000, ["TOC_right"] = 51000, ["TOC_right/styles.css"] = 51000, ["TOC_top"] = 86000, ["TOC_top/styles.css"] = 86000, ["TOClimit"] = 3100, ["TOCright"] = 7500, ["TPE"] = 2500, ["TUN"] = 2300, ["TUR"] = 8200, ["TWA/Logo/3"] = 74000, ["TWA/Navigation2"] = 5200, ["TWA_nav_inner_black"] = 38000, ["Tab"] = 6700, ["Tab/Number_of_defined_parameters"] = 6700, ["Tab/styles.css"] = 6700, ["TableTBA"] = 3100, ["Table_alignment"] = 19000, ["Table_alignment/styles.css"] = 19000, ["Tag"] = 7300, ["Talk"] = 4300, ["Talk_Header"] = 5500, ["Talk_archive"] = 45000, ["Talk_archive_navigation"] = 21000, ["Talk_header"] = 848000, ["Talk_header/archivebotparse"] = 115000, ["Talk_header/styles.css"] = 849000, ["Talk_other"] = 4590000, ["Talk_page"] = 8200, ["Talk_page_header"] = 4600, ["Talk_page_of_a_redirect"] = 4300, ["Talk_page_of_redirect"] = 36000, ["Talk_page_stalker"] = 13000, ["Talk_page_watcher"] = 3800, ["Talk_quote"] = 2500, ["Talk_quote_block"] = 22000, ["Talk_quote_block/styles.css"] = 22000, ["Talk_quote_inline"] = 177000, ["Talk_quote_inline/styles.css"] = 177000, ["Talk_quote_inline_with_italics"] = 2800, ["Talk_quote_inline_with_quotes"] = 7400, ["Talkarchive"] = 118000, ["Talkarchivenav"] = 31000, ["Talkback"] = 65000, ["Talkheader"] = 118000, ["Talkpage"] = 5800, ["Talkquote"] = 9200, ["Talkref"] = 3500, ["Talkspace_detect"] = 558000, ["Tallyho"] = 2300, ["Tan"] = 5200, ["Task_force_assessment_category"] = 3100, ["Task_force_assessment_category/core"] = 3100, ["Tasks"] = 953000, ["Taxobox"] = 3400, ["Taxobox/Error_colour"] = 507000, ["Taxobox/core"] = 507000, ["Taxobox/core/styles.css"] = 507000, ["Taxobox/species"] = 200000, ["Taxobox_colour"] = 658000, ["Taxon_author"] = 6300, ["Taxon_info"] = 547000, ["Taxon_italics"] = 395000, ["Taxonbar"] = 504000, ["Taxonbar/candidate"] = 502000, ["Taxonomy"] = 401000, ["Taxonomy/Acalyptratae"] = 6700, ["Taxonomy/Acanthomorpha"] = 17000, ["Taxonomy/Acanthopterygii"] = 17000, ["Taxonomy/Acrididea"] = 2100, ["Taxonomy/Actinomycetes"] = 2600, ["Taxonomy/Actinomycetota"] = 2800, ["Taxonomy/Actinopteri"] = 32000, ["Taxonomy/Actinopterygii"] = 33000, ["Taxonomy/Aculeata"] = 10000, ["Taxonomy/Adephaga"] = 14000, ["Taxonomy/Afrophidia"] = 4500, ["Taxonomy/Agaricales"] = 3600, ["Taxonomy/Agaricomycetes"] = 7300, ["Taxonomy/Agaricomycetidae"] = 4600, ["Taxonomy/Agaricomycotina"] = 7500, ["Taxonomy/Alethinophidia"] = 4700, ["Taxonomy/Allotriocarida"] = 266000, ["Taxonomy/Alphaproteobacteria"] = 2100, ["Taxonomy/Amastigomycota"] = 24000, ["Taxonomy/Ambulacraria"] = 3100, ["Taxonomy/Ammonoidea"] = 2400, ["Taxonomy/Amniota"] = 64000, ["Taxonomy/Amorphea"] = 518000, ["Taxonomy/Amphibia"] = 9100, ["Taxonomy/Amphiesmenoptera"] = 117000, ["Taxonomy/Angiosperms"] = 104000, ["Taxonomy/Animalia"] = 493000, ["Taxonomy/Antennoclypeata"] = 3200, ["Taxonomy/Anthophila"] = 4600, ["Taxonomy/Anthozoa"] = 2200, ["Taxonomy/Antliophora"] = 24000, ["Taxonomy/Anura"] = 7800, ["Taxonomy/Aparaglossata"] = 224000, ["Taxonomy/Apiales"] = 2200, ["Taxonomy/Apo-Chiroptera"] = 2000, ["Taxonomy/Apocrita"] = 14000, ["Taxonomy/Apoditrysia"] = 107000, ["Taxonomy/Apoidea"] = 5300, ["Taxonomy/Arachnida"] = 26000, ["Taxonomy/Arachnopulmonata"] = 19000, ["Taxonomy/Araneae"] = 18000, ["Taxonomy/Araneoidea"] = 3000, ["Taxonomy/Araneomorphae"] = 16000, ["Taxonomy/Archaeplastida"] = 113000, ["Taxonomy/Archaeplastida/showdomain"] = 2700, ["Taxonomy/Archelosauria"] = 7200, ["Taxonomy/Archosauria"] = 25000, ["Taxonomy/Archosauria/skip"] = 19000, ["Taxonomy/Archosauriformes"] = 5300, ["Taxonomy/Archosauromorpha"] = 5500, ["Taxonomy/Arctiinae"] = 11000, ["Taxonomy/Arctiini"] = 5200, ["Taxonomy/Arthropoda"] = 307000, ["Taxonomy/Artiodactyla"] = 2700, ["Taxonomy/Artiofabula"] = 2400, ["Taxonomy/Artiopoda"] = 2300, ["Taxonomy/Aschiza"] = 2500, ["Taxonomy/Ascomycota"] = 16000, ["Taxonomy/Asilomorpha"] = 3400, ["Taxonomy/Asparagales"] = 12000, ["Taxonomy/Asteraceae"] = 8600, ["Taxonomy/Asterales"] = 9900, ["Taxonomy/Asterids"] = 31000, ["Taxonomy/Asteroideae"] = 6600, ["Taxonomy/Auchenorrhyncha"] = 4000, ["Taxonomy/Australaves"] = 11000, ["Taxonomy/Avemetatarsalia"] = 5100, ["Taxonomy/Avemetatarsalia/skip"] = 19000, ["Taxonomy/Aves"] = 19000, ["Taxonomy/Avicularioidea"] = 2300, ["Taxonomy/BOP_clade"] = 2300, ["Taxonomy/Bacillati"] = 5800, ["Taxonomy/Bacillota"] = 2300, ["Taxonomy/Bacteria"] = 14000, ["Taxonomy/Basidiomycota"] = 8300, ["Taxonomy/Batrachia"] = 8800, ["Taxonomy/Batrachomorpha"] = 9100, ["Taxonomy/Bilateria"] = 487000, ["Taxonomy/Bivalvia"] = 2800, ["Taxonomy/Bombycoidea"] = 3800, ["Taxonomy/Boreoeutheria"] = 16000, ["Taxonomy/Brachycera"] = 20000, ["Taxonomy/Brachyura"] = 2000, ["Taxonomy/Bromeliaceae"] = 2300, ["Taxonomy/Buccinoidea"] = 2500, ["Taxonomy/CAM"] = 113000, ["Taxonomy/CAM/showdomain"] = 2800, ["Taxonomy/Caelifera"] = 2200, ["Taxonomy/Caenogastropoda"] = 25000, ["Taxonomy/Caenophidia"] = 4300, ["Taxonomy/Caesalpinioideae"] = 2200, ["Taxonomy/Calyptratae"] = 5600, ["Taxonomy/Campanulids"] = 13000, ["Taxonomy/Carabidae"] = 11000, ["Taxonomy/Caraboidea"] = 12000, ["Taxonomy/Carnivoramorpha"] = 2000, ["Taxonomy/Caryophyllales"] = 5600, ["Taxonomy/Cassidinae"] = 3900, ["Taxonomy/Cephalopoda"] = 5000, ["Taxonomy/Cerambycidae"] = 29000, ["Taxonomy/Cerambycinae"] = 6200, ["Taxonomy/Cetruminantia"] = 2200, ["Taxonomy/Chelicerata"] = 27000, ["Taxonomy/Chiroptera"] = 2000, ["Taxonomy/Choanozoa"] = 493000, ["Taxonomy/Chondrichthyes"] = 2700, ["Taxonomy/Chordata"] = 113000, ["Taxonomy/Chrysomelidae"] = 7600, ["Taxonomy/Chrysomeloidea"] = 37000, ["Taxonomy/Cicadomorpha"] = 2800, ["Taxonomy/Cimicomorpha"] = 2200, ["Taxonomy/Clupeocephala"] = 30000, ["Taxonomy/Cnidaria"] = 3800, ["Taxonomy/Coccinellidae"] = 2800, ["Taxonomy/Coccinellinae"] = 2200, ["Taxonomy/Coccinelloidea"] = 3200, ["Taxonomy/Coelolepida"] = 116000, ["Taxonomy/Coleoptera"] = 82000, ["Taxonomy/Coleopterida"] = 83000, ["Taxonomy/Colubridae"] = 2700, ["Taxonomy/Colubroidea"] = 2700, ["Taxonomy/Colubroides"] = 4300, ["Taxonomy/Commelinids"] = 12000, ["Taxonomy/Conchifera"] = 5200, ["Taxonomy/Condylognatha"] = 12000, ["Taxonomy/Conoidea"] = 7300, ["Taxonomy/Core_eudicots"] = 70000, ["Taxonomy/Cosmopterigidae"] = 2100, ["Taxonomy/Cossoidea"] = 2800, ["Taxonomy/Crambidae"] = 12000, ["Taxonomy/Crambinae"] = 2300, ["Taxonomy/Crocopoda"] = 5400, ["Taxonomy/Ctenosquamata"] = 18000, ["Taxonomy/Cucujiformia"] = 49000, ["Taxonomy/Curculionidae"] = 3200, ["Taxonomy/Curculionoidea"] = 3900, ["Taxonomy/Cyclorrhapha"] = 12000, ["Taxonomy/Cyperaceae"] = 2600, ["Taxonomy/Cypriniformes"] = 5100, ["Taxonomy/Cypriniphysi"] = 5100, ["Taxonomy/Cyprinoidei"] = 3900, ["Taxonomy/Decapoda"] = 4300, ["Taxonomy/Dendrobiinae"] = 2100, ["Taxonomy/Depressariidae"] = 3100, ["Taxonomy/Deuteropoda"] = 307000, ["Taxonomy/Deuterostomia"] = 116000, ["Taxonomy/Diaphoretickes"] = 117000, ["Taxonomy/Diaphoretickes/showdomain"] = 6900, ["Taxonomy/Diapsida"] = 25000, ["Taxonomy/Dicondylia"] = 264000, ["Taxonomy/Dictyoptera"] = 2500, ["Taxonomy/Dikarya"] = 24000, ["Taxonomy/Dinosauria"] = 4300, ["Taxonomy/Dinosauria/skip"] = 19000, ["Taxonomy/Dinosauromorpha"] = 4300, ["Taxonomy/Diptera"] = 24000, ["Taxonomy/Ditrysia"] = 113000, ["Taxonomy/Doryloformicia"] = 2900, ["Taxonomy/Dothideomyceta"] = 9700, ["Taxonomy/Dothideomycetes"] = 2700, ["Taxonomy/Ecdysozoa"] = 310000, ["Taxonomy/Echinodermata"] = 2800, ["Taxonomy/Elasmobranchii"] = 2200, ["Taxonomy/Elateriformia"] = 3800, ["Taxonomy/Elementaves"] = 2100, ["Taxonomy/Elpistostegalia"] = 74000, ["Taxonomy/Embryophytes"] = 110000, ["Taxonomy/Embryophytes/Plantae"] = 108000, ["Taxonomy/Ennominae"] = 2700, ["Taxonomy/Ensifera"] = 2200, ["Taxonomy/Entelegynae"] = 8100, ["Taxonomy/Eotetrapodiformes"] = 74000, ["Taxonomy/Epidendroideae"] = 5500, ["Taxonomy/Erebidae"] = 17000, ["Taxonomy/Eremoneura"] = 12000, ["Taxonomy/Ericales"] = 4200, ["Taxonomy/Euarchontoglires"] = 6400, ["Taxonomy/Eucarida"] = 4400, ["Taxonomy/Eucrocopoda"] = 5300, ["Taxonomy/Eudicots"] = 74000, ["Taxonomy/Eufalconimorphae"] = 11000, ["Taxonomy/Euformicia"] = 3200, ["Taxonomy/Eugnathostomata"] = 111000, ["Taxonomy/Eukaryota"] = 636000, ["Taxonomy/Eukaryota/displayed"] = 8200, ["Taxonomy/Eulepidoptera"] = 114000, ["Taxonomy/Eumalacostraca"] = 6900, ["Taxonomy/Eumetabola"] = 251000, ["Taxonomy/Eumetazoa"] = 491000, ["Taxonomy/Eupasseres"] = 9800, ["Taxonomy/Eupercaria"] = 5700, ["Taxonomy/Euphyllophytes"] = 2000, ["Taxonomy/Eupitheciini"] = 2000, ["Taxonomy/Eupulmonata"] = 6300, ["Taxonomy/Eureptilia"] = 25000, ["Taxonomy/Eurypterygii"] = 18000, ["Taxonomy/Euselachii"] = 2300, ["Taxonomy/Euteleostei"] = 19000, ["Taxonomy/Eutheria"] = 17000, ["Taxonomy/Euthyneura"] = 13000, ["Taxonomy/Euungulata"] = 4000, ["Taxonomy/Fabaceae"] = 6800, ["Taxonomy/Fabales"] = 7100, ["Taxonomy/Fabids"] = 18000, ["Taxonomy/Faboideae"] = 4000, ["Taxonomy/Ferae"] = 2400, ["Taxonomy/Ferungulata"] = 6400, ["Taxonomy/Filozoa"] = 493000, ["Taxonomy/Formicidae"] = 3300, ["Taxonomy/Formicoidea"] = 3300, ["Taxonomy/Fungi"] = 25000, ["Taxonomy/Gamasina"] = 2300, ["Taxonomy/Gammaproteobacteria"] = 2000, ["Taxonomy/Gastropoda"] = 44000, ["Taxonomy/Gekkonoidea"] = 2200, ["Taxonomy/Gekkonomorpha"] = 2600, ["Taxonomy/Gekkota"] = 2600, ["Taxonomy/Gelechiidae"] = 6100, ["Taxonomy/Gelechiinae"] = 3000, ["Taxonomy/Gelechioidea"] = 19000, ["Taxonomy/Gentianales"] = 5000, ["Taxonomy/Geometridae"] = 11000, ["Taxonomy/Geometroidea"] = 11000, ["Taxonomy/Glires"] = 4600, ["Taxonomy/Gliriformes"] = 4700, ["Taxonomy/Glossata"] = 116000, ["Taxonomy/Gnathostomata"] = 111000, ["Taxonomy/Gracillariidae"] = 2200, ["Taxonomy/Gracillarioidea"] = 2500, ["Taxonomy/Graminid_clade"] = 4100, ["Taxonomy/Halvaria"] = 3000, ["Taxonomy/Helicina_(suborder)"] = 5500, ["Taxonomy/Hemiptera"] = 10000, ["Taxonomy/Hesperiidae"] = 2700, ["Taxonomy/Heterobranchia"] = 13000, ["Taxonomy/Heteroneura"] = 115000, ["Taxonomy/Heteroptera"] = 5100, ["Taxonomy/Hexapoda"] = 266000, ["Taxonomy/Holometabola"] = 239000, ["Taxonomy/Holomycota"] = 25000, ["Taxonomy/Holozoa"] = 493000, ["Taxonomy/Hyloidea"] = 3600, ["Taxonomy/Hymenoptera"] = 14000, ["Taxonomy/Hymenopterida"] = 14000, ["Taxonomy/Iguania"] = 2500, ["Taxonomy/Iguanomorpha"] = 2500, ["Taxonomy/Insecta"] = 264000, ["Taxonomy/Lamiales"] = 6900, ["Taxonomy/Lamiids"] = 14000, ["Taxonomy/Lamiinae"] = 21000, ["Taxonomy/Larentiinae"] = 3700, ["Taxonomy/Laurasiatheria"] = 9200, ["Taxonomy/Lecanoromycetes"] = 4700, ["Taxonomy/Lecanoromycetidae"] = 3200, ["Taxonomy/Leotiomyceta"] = 14000, ["Taxonomy/Lepidoptera"] = 116000, ["Taxonomy/Lepidosauria"] = 15000, ["Taxonomy/Lepidosauromorpha"] = 15000, ["Taxonomy/Life"] = 654000, ["Taxonomy/Linyphiidae"] = 2100, ["Taxonomy/Lissamphibia"] = 9100, ["Taxonomy/Lithosiini"] = 3600, ["Taxonomy/Littorinimorpha"] = 5900, ["Taxonomy/Lophotrochozoa"] = 57000, ["Taxonomy/Lycaenidae"] = 4100, ["Taxonomy/Macroheterocera"] = 43000, ["Taxonomy/Magnoliids"] = 2900, ["Taxonomy/Malacostraca"] = 7100, ["Taxonomy/Malaxideae"] = 2200, ["Taxonomy/Malpighiales"] = 4900, ["Taxonomy/Malvales"] = 2700, ["Taxonomy/Malvids"] = 13000, ["Taxonomy/Mammalia"] = 19000, ["Taxonomy/Mammalia/skip"] = 19000, ["Taxonomy/Mandibulata"] = 278000, ["Taxonomy/Melolonthinae"] = 3000, ["Taxonomy/Meso-Papilionoideae"] = 3800, ["Taxonomy/Mesostigmata"] = 2800, ["Taxonomy/Mollusca"] = 53000, ["Taxonomy/Monocots"] = 27000, ["Taxonomy/Monogynaspida"] = 2500, ["Taxonomy/Multicrustacea"] = 8700, ["Taxonomy/Muricidae"] = 2200, ["Taxonomy/Muricoidea"] = 2200, ["Taxonomy/Muroidea"] = 2600, ["Taxonomy/Muscomorpha"] = 15000, ["Taxonomy/Mygalomorphae"] = 2400, ["Taxonomy/Myoglossata"] = 116000, ["Taxonomy/Myomorpha"] = 2700, ["Taxonomy/Myriapoda"] = 2400, ["Taxonomy/Myrtaceae"] = 3100, ["Taxonomy/Myrtales"] = 4600, ["Taxonomy/Myrtoideae"] = 3100, ["Taxonomy/Nematocera"] = 3300, ["Taxonomy/Neoaves"] = 17000, ["Taxonomy/Neobatrachia"] = 6800, ["Taxonomy/Neocephalopoda"] = 3900, ["Taxonomy/Neodiapsida"] = 24000, ["Taxonomy/Neogastropoda"] = 16000, ["Taxonomy/Neognathae"] = 18000, ["Taxonomy/Neolepidoptera"] = 116000, ["Taxonomy/Neoptera"] = 260000, ["Taxonomy/Neopterygii"] = 32000, ["Taxonomy/Neoreptilia"] = 25000, ["Taxonomy/Neoteleostei"] = 18000, ["Taxonomy/Nephrozoa"] = 486000, ["Taxonomy/Neuropteroidea"] = 83000, ["Taxonomy/Noctuidae"] = 8400, ["Taxonomy/Noctuinae"] = 2800, ["Taxonomy/Noctuoidea"] = 27000, ["Taxonomy/Non-protein_amino_acid-accumulating_clade"] = 2700, ["Taxonomy/Nudibranchia"] = 2700, ["Taxonomy/Nudipleura"] = 2700, ["Taxonomy/Nymphalidae"] = 4300, ["Taxonomy/Obazoa"] = 518000, ["Taxonomy/Obtectomera"] = 73000, ["Taxonomy/Odonata"] = 3100, ["Taxonomy/Odonatoptera"] = 3100, ["Taxonomy/Oestroidea"] = 5000, ["Taxonomy/Olfactores"] = 113000, ["Taxonomy/Ophidia"] = 5200, ["Taxonomy/Opisthokonta"] = 518000, ["Taxonomy/Opisthothelae"] = 18000, ["Taxonomy/Orchidaceae"] = 8100, ["Taxonomy/Orchidoideae"] = 2300, ["Taxonomy/Ornithodira"] = 5100, ["Taxonomy/Ornithurae"] = 19000, ["Taxonomy/Ornithurae/skip"] = 19000, ["Taxonomy/Orthoptera"] = 4400, ["Taxonomy/Ostariophysi"] = 10000, ["Taxonomy/Osteichthyes"] = 108000, ["Taxonomy/Otocephala"] = 11000, ["Taxonomy/Otophysi"] = 10000, ["Taxonomy/Ovalentaria"] = 5000, ["Taxonomy/Palaeoptera"] = 3800, ["Taxonomy/Pan-Carnivora"] = 2200, ["Taxonomy/Pan-Euteleostei"] = 19000, ["Taxonomy/Pan-Euungulata"] = 4100, ["Taxonomy/Panarthropoda"] = 308000, ["Taxonomy/Pancrustacea"] = 275000, ["Taxonomy/Panorpida"] = 141000, ["Taxonomy/Panpulmonata"] = 8600, ["Taxonomy/Pantetrapulmonata"] = 19000, ["Taxonomy/Papilionoidea"] = 13000, ["Taxonomy/ParaHoxozoa"] = 490000, ["Taxonomy/Parapleurota"] = 25000, ["Taxonomy/Parasitiformes"] = 3100, ["Taxonomy/Paraxonia"] = 2800, ["Taxonomy/Passerea"] = 13000, ["Taxonomy/Passeri"] = 7800, ["Taxonomy/Passerida"] = 2500, ["Taxonomy/Passerides"] = 5900, ["Taxonomy/Passeriformes"] = 9800, ["Taxonomy/Pentatomomorpha"] = 2300, ["Taxonomy/Peracarida"] = 2500, ["Taxonomy/Perciformes"] = 2800, ["Taxonomy/Percomorpha"] = 16000, ["Taxonomy/Pezizomycotina"] = 15000, ["Taxonomy/Phycitinae"] = 2600, ["Taxonomy/Phytophaga"] = 41000, ["Taxonomy/Placentalia"] = 17000, ["Taxonomy/Plantae"] = 110000, ["Taxonomy/Planulozoa"] = 3800, ["Taxonomy/Platyhelminthes"] = 2700, ["Taxonomy/Pleocyemata"] = 4100, ["Taxonomy/Poaceae"] = 4100, ["Taxonomy/Poales"] = 9500, ["Taxonomy/Podiata"] = 518000, ["Taxonomy/Polyneoptera"] = 8600, ["Taxonomy/Polyphaga"] = 68000, ["Taxonomy/Polypodiophyta"] = 2000, ["Taxonomy/Polypodiopsida"] = 2000, ["Taxonomy/Polysporangiophytes"] = 108000, ["Taxonomy/Polysporangiophytes/Plantae"] = 108000, ["Taxonomy/Proteales"] = 2000, ["Taxonomy/Protostomia"] = 371000, ["Taxonomy/Pseudomonadati"] = 8100, ["Taxonomy/Pseudomonadota"] = 5000, ["Taxonomy/Psittacopasseres"] = 11000, ["Taxonomy/Pteropliini"] = 2300, ["Taxonomy/Pterygota"] = 263000, ["Taxonomy/Pyralidae"] = 4500, ["Taxonomy/Pyraloidea"] = 16000, ["Taxonomy/Pyramidellidae"] = 2200, ["Taxonomy/Pyramidelloidea"] = 2200, ["Taxonomy/RTA_clade"] = 4500, ["Taxonomy/Ranoidea"] = 2900, ["Taxonomy/Reptantia"] = 3400, ["Taxonomy/Reptilia"] = 25000, ["Taxonomy/Reptiliomorpha"] = 64000, ["Taxonomy/Rhabditophora"] = 2700, ["Taxonomy/Rhipidistia"] = 75000, ["Taxonomy/Ringipleura"] = 2800, ["Taxonomy/Rodentia"] = 4400, ["Taxonomy/Romeriida"] = 25000, ["Taxonomy/Rosales"] = 3400, ["Taxonomy/Rosids"] = 31000, ["Taxonomy/Rouphozoa"] = 2900, ["Taxonomy/Rubiaceae"] = 2600, ["Taxonomy/Saccharomyceta"] = 15000, ["Taxonomy/Salientia"] = 7800, ["Taxonomy/Salticidae"] = 2900, ["Taxonomy/Salticinae"] = 2600, ["Taxonomy/Sapindales"] = 3300, ["Taxonomy/Sar"] = 4000, ["Taxonomy/Sarcopterygii"] = 75000, ["Taxonomy/Sauria"] = 24000, ["Taxonomy/Saurischia"] = 2900, ["Taxonomy/Sauropsida"] = 43000, ["Taxonomy/Scarabaeidae"] = 10000, ["Taxonomy/Scarabaeiformia"] = 11000, ["Taxonomy/Scarabaeoidea"] = 11000, ["Taxonomy/Schizophora"] = 12000, ["Taxonomy/Scincidae"] = 2100, ["Taxonomy/Scincomorpha"] = 2400, ["Taxonomy/Scrotifera"] = 8500, ["Taxonomy/Sericinae"] = 3900, ["Taxonomy/Sericini"] = 3600, ["Taxonomy/Serpentes"] = 5200, ["Taxonomy/Setaphyta"] = 2100, ["Taxonomy/Siluriformes"] = 3600, ["Taxonomy/Simplicidentata"] = 4400, ["Taxonomy/Sordariomyceta"] = 4600, ["Taxonomy/Sordariomycetes"] = 2900, ["Taxonomy/Spermatophyta"] = 106000, ["Taxonomy/Spermatophytes/Plantae"] = 106000, ["Taxonomy/Spilomelinae"] = 4300, ["Taxonomy/Spiralia"] = 61000, ["Taxonomy/Squamata"] = 15000, ["Taxonomy/Staphyliniformia"] = 3100, ["Taxonomy/Staphylinoidea"] = 2300, ["Taxonomy/Stegocephali"] = 74000, ["Taxonomy/Stylommatophora"] = 6000, ["Taxonomy/Superasterids"] = 38000, ["Taxonomy/Superrosids"] = 32000, ["Taxonomy/Syrphidae"] = 2100, ["Taxonomy/Syrphoidea"] = 2300, ["Taxonomy/TSAR"] = 4000, ["Taxonomy/Tachinidae"] = 4400, ["Taxonomy/Tectipleura"] = 9800, ["Taxonomy/Teleocephala"] = 30000, ["Taxonomy/Teleostei"] = 32000, ["Taxonomy/Teleosteomorpha"] = 32000, ["Taxonomy/Telluraves"] = 13000, ["Taxonomy/Tenebrionoidea"] = 3400, ["Taxonomy/Tephritidae"] = 3300, ["Taxonomy/Tephritinae"] = 2400, ["Taxonomy/Tephritoidea"] = 4300, ["Taxonomy/Tetrapoda"] = 74000, ["Taxonomy/Tetrapodomorpha"] = 74000, ["Taxonomy/Tetrapulmonata"] = 19000, ["Taxonomy/Theria"] = 18000, ["Taxonomy/Theria/skip"] = 18000, ["Taxonomy/Theropoda/skip"] = 19000, ["Taxonomy/Tortricidae"] = 8500, ["Taxonomy/Tortricinae"] = 5900, ["Taxonomy/Tortricoidea"] = 8500, ["Taxonomy/Toxicofera"] = 8400, ["Taxonomy/Tracheophyta"] = 108000, ["Taxonomy/Tracheophytes/Plantae"] = 108000, ["Taxonomy/Trilobita"] = 2200, ["Taxonomy/Trilobitomorpha"] = 2300, ["Taxonomy/Trochida"] = 2800, ["Taxonomy/Trochoidea"] = 2800, ["Taxonomy/Tyranni"] = 2000, ["Taxonomy/Unicalcarida"] = 14000, ["Taxonomy/Vertebrata"] = 112000, ["Taxonomy/Vetigastropoda"] = 4900, ["Taxonomy/Virus"] = 2900, ["Taxonomy/crown_Formicidae"] = 3200, ["Taxonomy_key"] = 150000, ["Taxonomy_preload"] = 150000, ["Tb"] = 13000, ["Team_roster_navbox"] = 34000, ["Technical"] = 4100, ["Technically_indistinguishable"] = 2500, ["Television_debuts_endings_antonym"] = 7200, ["Television_episode_redirect_handler"] = 24000, ["Television_episode_short_description"] = 13000, ["Template"] = 4700, ["Template-Class"] = 14000, ["Template-protected"] = 4400, ["TemplateData_header"] = 18000, ["Template_category"] = 36000, ["Template_display"] = 57000, ["Template_for_discussion/dated"] = 13000, ["Template_for_discussion/styles.css"] = 84000, ["Template_for_merging/dated"] = 71000, ["Template_link"] = 7580000, ["Template_link_code"] = 1160000, ["Template_link_code_with_subst"] = 20000, ["Template_link_expanded"] = 2640000, ["Template_link_expanded_with_subst"] = 5100, ["Template_link_general"] = 24000, ["Template_link_interwiki"] = 9000, ["Template_link_null"] = 9200, ["Template_link_universal"] = 12000, ["Template_link_with_alternate_text"] = 2200, ["Template_link_with_link_off"] = 9800, ["Template_link_with_linked_braces"] = 8200, ["Template_link_with_parameters"] = 70000, ["Template_link_with_subst"] = 55000, ["Template_links"] = 2500, ["Template_other"] = 4970000, ["Template_parameter_usage"] = 20000, ["Template_parameter_value"] = 52000, ["Template_rating"] = 2600, ["Template_reference_list"] = 7400, ["Template_sandbox_notice"] = 6500, ["Template_shortcut"] = 6600, ["TennisEventInfo"] = 6800, ["TennisEvents"] = 2200, ["Tennis_events"] = 13000, ["Tennis_icon"] = 2800, ["Tennis_icon2"] = 2800, ["Tennis_record"] = 3000, ["Terminate_sentence"] = 53000, ["Testcases_notice"] = 5100, ["Text_diff"] = 3600, ["Tfd_links"] = 6900, ["Th/abp"] = 115000, ["Thank"] = 2400, ["Thank_you"] = 5400, ["The_edit-summary_field"] = 8900, ["The_edit-summary_field/OOUI"] = 2400, ["Their"] = 15000, ["They"] = 11000, ["They_have"] = 40000, ["Thin_space"] = 30000, ["Thinsp"] = 27000, ["Third-party"] = 6700, ["Thirteen_Colonies_article_name"] = 2100, ["This_is_a_new_user"] = 7000, ["Thursday"] = 2800, ["Tick"] = 81000, ["Ticket_confirmation"] = 3200, ["Time"] = 2800, ["Time_ago"] = 186000, ["Time_signature"] = 3300, ["Time_with_time_zone_link"] = 4400, ["Tire"] = 3300, ["Title_case"] = 5900, ["Title_century"] = 31000, ["Title_country"] = 42000, ["Title_decade"] = 31000, ["Title_demonym"] = 39000, ["Title_disambig_text"] = 251000, ["Title_language"] = 2600, ["Title_monthname"] = 41000, ["Title_number"] = 4400, ["Title_year"] = 296000, ["Title_year+1"] = 13000, ["Title_year-1"] = 3000, ["Title_year2range"] = 7900, ["Title_year2range-1"] = 6400, ["Title_year_range"] = 13000, ["Tl"] = 7280000, ["Tl2"] = 8900, ["Tlc"] = 911000, ["Tld"] = 255000, ["Tlf"] = 9700, ["Tlg"] = 22000, ["Tlit"] = 3300, ["Tlp"] = 70000, ["Tls"] = 53000, ["Tlsc"] = 20000, ["Tlsp"] = 2400, ["Tlu"] = 12000, ["Tlx"] = 2640000, ["Tlxs"] = 3400, ["Tmbox"] = 2400000, ["Tmpv"] = 50000, ["Tn"] = 8200, ["Tnull"] = 9000, ["To"] = 3000, ["To_USD"] = 2500, ["To_USD/CurrencyCheck"] = 2500, ["To_USD/General"] = 2200, ["To_be_announced"] = 7200, ["To_do"] = 7700, ["Toc_right"] = 2100, ["Tocright"] = 7300, ["Todo"] = 2700, ["Tomorrow"] = 7200, ["Tone"] = 7700, ["Tone-cmn"] = 2800, ["Toolbar"] = 349000, ["Toolforge"] = 12000, ["Tooltip"] = 565000, ["Tooltip/styles.css"] = 565000, ["Top-Class"] = 15000, ["Top-importance"] = 15000, ["Top_25_Report"] = 4200, ["Top_25_report"] = 6300, ["Top_icon"] = 84000, ["Totd"] = 4300, ["Totd_nav"] = 5400, ["Tp"] = 2600, ["Tpq"] = 3900, ["Tpr"] = 2900, ["Tps"] = 12000, ["Tpw"] = 3600, ["Tq"] = 173000, ["Tq2"] = 5700, ["Tqb"] = 5400, ["Tqq"] = 7400, ["Tquote"] = 2300, ["Track_gauge"] = 26000, ["Track_listing"] = 124000, ["Tracking_category"] = 5200, ["Tracklist"] = 15000, ["Trademark"] = 7800, ["Trademarked"] = 4300, ["Transclude"] = 18000, ["Transclude_lead_excerpt"] = 3600, ["Transcluded_section"] = 4700, ["Transclusionless"] = 5000, ["Translated"] = 25000, ["Translated_page"] = 114000, ["Translation"] = 20000, ["Translation/Base"] = 2400, ["Translation/Information"] = 2100, ["Translation/Summary"] = 2100, ["Transliteration"] = 69000, ["Tree_chart"] = 8400, ["Tree_chart/end"] = 8400, ["Tree_chart/start"] = 8400, ["Tree_list"] = 25000, ["Tree_list/end"] = 25000, ["Tree_list/styles.css"] = 25000, ["Trim"] = 2990000, ["Trim_%"] = 6700, ["Trim_brackets"] = 3600, ["Trim_leading"] = 2100, ["Trim_quotes"] = 26000, ["Trout"] = 2200, ["Tsh"] = 3300, ["Tsp"] = 2200, ["Tuesday"] = 2800, ["TuttoCalciatori"] = 2200, ["Twitter"] = 16000, ["Two-digit_year"] = 6000, ["TwoLegResult"] = 5800, ["TwoLegStart"] = 4600, ["TwoLeg_start"] = 5800, ["Module:TNT"] = 10000, ["Module:TableTools"] = 9610000, ["Module:Table_empty_cell"] = 33000, ["Module:Taxobox_ranks"] = 658000, ["Module:TaxonItalics"] = 657000, ["Module:TaxonList"] = 28000, ["Module:Taxonbar"] = 504000, ["Module:Taxonbar/candidate"] = 502000, ["Module:Taxonbar/conf"] = 504000, ["Module:Taxonbar/exists"] = 502000, ["Module:Taxonbar/whitelist"] = 504000, ["Module:Team_appearances_list"] = 17000, ["Module:Team_appearances_list/data"] = 17000, ["Module:Team_bracket"] = 55000, ["Module:Team_bracket_tracking"] = 3700, ["Module:Team_roster_navbox"] = 35000, ["Module:Television_episode_redirect_handler"] = 24000, ["Module:Television_episode_short_description"] = 35000, ["Module:Television_infoboxes_disambiguation_check"] = 72000, ["Module:TemplatePar"] = 33000, ["Module:TemplateStyles"] = 599000, ["Module:Template_invocation"] = 3200, ["Module:Template_link_general"] = 3800000, ["Module:Template_parameter_value"] = 12100000, ["Module:Template_redirect_regex"] = 1460000, ["Module:Template_test_case"] = 3300, ["Module:Template_test_case/config"] = 3300, ["Module:Template_test_case/data"] = 3300, ["Module:Template_wrapper"] = 1090000, ["Module:Tennis_events_nav"] = 22000, ["Module:Text"] = 2110000, ["Module:Text/data"] = 53000, ["Module:Tfd_links"] = 6900, ["Module:Time"] = 4500, ["Module:Time/data"] = 4500, ["Module:Time_ago"] = 193000, ["Module:Title_monthname"] = 41000, ["Module:Toolbar"] = 1510000, ["Module:Top_25_report"] = 6200, ["Module:Track_gauge"] = 26000, ["Module:Track_gauge/data"] = 26000, ["Module:Track_listing"] = 124000, ["Module:Track_listing/configuration"] = 124000, ["Module:Track_listing/styles.css"] = 124000, ["Module:Transclusion_count"] = 64000, ["Module:Transclusion_count/data/A"] = 3700, ["Module:Transclusion_count/data/B"] = 2800, ["Module:Transclusion_count/data/C"] = 12000, ["Module:Transclusion_count/data/E"] = 2400, ["Module:Transclusion_count/data/G"] = 2000, ["Module:Transclusion_count/data/I"] = 3300, ["Module:Transclusion_count/data/L"] = 2000, ["Module:Transclusion_count/data/M"] = 3200, ["Module:Transclusion_count/data/N"] = 2800, ["Module:Transclusion_count/data/P"] = 2900, ["Module:Transclusion_count/data/S"] = 5000, ["Module:Transclusion_count/data/T"] = 2600, ["Module:Transclusion_count/data/U"] = 2600, ["Module:Transclusion_count/data/W"] = 3700, ["Module:Transclusion_count/data/other"] = 2200, ["Module:Tree_chart"] = 8400, ["Module:Tree_chart/data"] = 8400, ["Module:Trim_quotes"] = 68000, ["Module:TwitterSnowflake"] = 48000, ["Module:Type_in_location"] = 137000, } 1r81piakw1fa6w63hojc2jmra86wpq2 ધાનેરા રેલ્વે સ્ટેશન 0 152683 904886 895750 2026-09-08T11:33:44Z Dinesh P Purohit 9677 /* */ 904886 wikitext text/x-wiki {{Infobox station | name = ધાનેરા રેલ્વે સ્ટેશન | type = [[ભારતીય રેલ્વે]] સ્ટેશન | image = | caption = ધાનેરા રેલ્વે સ્ટેશન | address = [[ધાનેરા]], [[બનાસકાંઠા]], [[ગુજરાત]] | country = [[ભારત]] | coordinates = {{coord|24.503300|72.032729|format=dms|display=inline}} | elevation = {{convert|135|m|ft}} | owned = [[રેલ્વે મંત્રાલય]], [[ભારતીય રેલ્વે]] | lines = ભીલડી–સમદડી લાઇન | platforms = 2 | tracks = 2 | connections = | structure = પ્રમાણિત (જમીન પર બાંધકામ) | levels = | parking = ઉપલબ્ધ | bicycle = | accessible = | status = સક્રિય | code = {{Indian railway code | code = DQN | zone = [[ઉત્તર પશ્ચિમ રેલ્વે ]] | division = {{rwd|જોધપુર}} }} | opened = | closed = | rebuilt = | electrified = 2024 | former = | mpassengers = | passengers = | pass_system = | pass_year = | pass_percent = | services = | map_type = India3#India Gujarat | map_dot_label = ધાનેરા રેલ્વે સ્ટેશન | map_size = 300 }} '''ધાનેરા રેલ્વે સ્ટેશન''' એ ભારતના [[ગુજરાત]] રાજ્યના [[બનાસકાંઠા જિલ્લો|બનાસકાંઠા જિલ્લા]]ના [[ધાનેરા]] શહેરમાં આવેલું રેલ્વે મથક છે, જે ઉત્તર પશ્ચિમ રેલ્વે નેટવર્કની પશ્ચિમ લાઇન પર સ્થિત છે. ધાનેરા રેલ્વે સ્ટેશન [[પાલનપુર જંકશન રેલ્વે સ્ટેશન|પાલનપુર જંક્શન]]થી ૫૫ કિમી અને ભિલડી જંક્શનથી ૩૬ કિમી દૂર છે. ડેમુ એક્સપ્રેસ અને સુપરફાસ્ટ ટ્રેનો અહીં ઊભી રહે છે.<ref>{{Cite web|title=ભીલડી-જોધપુર રેલમાર્ગના નિરીક્ષણે આવતાં આવેદન પત્ર અપાયું|url=https://www.divyabhaskar.co.in/news/UGUJ-north-west-railway-general-manager-on-dhanera-visit-2815526.html|website=Divyabhaskar}}</ref> == ટ્રેનો == ધાનેરા રેલ્વે સ્ટેશન પર બંને દિશામાં જતી નીચેની ટ્રેનો ઉભી રહે છે. {| class="wikitable sortable" !ટ્રેન નંબર !ટ્રેનનું નામ |- |૧૨૪૮૯/૯૦ |શ્રી ગંગાનગર-દાદર સુપરફાસ્ટ એક્સપ્રેસ |- |૧૨૯૯૭/૯૮ |બાંદ્રા ટર્મિનસ-બાડમેર હમસફર એક્સપ્રેસ |- |૧૪૮૦૩/૦૪ |ભગત કી કોઠી-અમદાવાદ સાપ્તાહિક એક્સપ્રેસ |- |૧૪૮૦૫/૦૬ |યશવંતપુર-બાડમેર એસી એક્સપ્રેસ |- |૧૪૮૦૭/૦૮ |જોધપુર-દાદર વેસ્ટર્ન એક્સપ્રેસ |- |૧૪૮૧૭/૧૮ |ભગત કી કોઠી-બાંદ્રા ટર્મિનસ એક્સપ્રેસ (વાયા ભીલડી) |- |૧૪૮૯૩/૯૪ |પાલનપુર-ભગત કી કોઠી એક્સપ્રેસ |- |૧૯૨૭૧/૭૨ |ભાવનગર ટર્મિનસ-હરિદ્વાર એક્સપ્રેસ |- |૨૦૪૮૫/૮૬ |જોધપુર-સાબરમતી ઇન્ટરસિટી એક્સપ્રેસ |- |૨૦૪૯૧/૯૨ |જેસલમેર-સાબરમતી સુપરફાસ્ટ એક્સપ્રેસ |- |૨૦૬૨૫/૨૬ |MGR ચેન્નાઈ સેન્ટ્રલ-ભગત કી કોઠી એક્સપ્રેસ |- |૨૧૯૦૧/૦૨ |બાંદ્રા ટર્મિનસ-બાડમેર હમસફર એક્સપ્રેસ |- |૨૨૪૮૩/૮૪ |ગાંધીધામ-જોધપુર એક્સપ્રેસ |- |૭૪૮૪૧/૪૨ |ભગત કી કોઠી - ભીલડી ડેમુ |} == સંદ્રભ == {{Reflist}} [[શ્રેણી:બનાસકાંઠા જિલ્લાનાં રેલ્વે સ્ટેશનો]] g6jly8b45qhnnv2daissmzmnf2nnn1x ઢાંચો:Taxonomy/Cordia 10 155168 904857 2026-09-07T13:46:27Z ~2026-48431-64 88964 {{Don't edit this line {{{machine code|}}} |rank=genus |link=Cordia |parent=Cordiaceae |refs={{Cite WFO |title=''Cordia'' L. |id=4000009266 |access-date=2025-12-20 |mode=cs2}} }}થી શરૂ થતું નવું પાનું બનાવ્યું 904857 wikitext text/x-wiki {{Don't edit this line {{{machine code|}}} |rank=genus |link=Cordia |parent=Cordiaceae |refs={{Cite WFO |title=''Cordia'' L. |id=4000009266 |access-date=2025-12-20 |mode=cs2}} }} 9e7oh0amwm854a0sedpmbrvniwgxplg ઢાંચો:Taxonomy/Cordiaceae 10 155169 904858 2026-09-07T13:47:32Z ~2026-48431-64 88964 {{Don't edit this line {{{machine code|}}} |rank= familia |link= Cordiaceae |parent= Boraginales |refs= {{Cite WFO |title=Cordiaceae R.Br. ex Dumort. |id=7000001124 |access-date=2025-12-20 |mode=cs2}} }}થી શરૂ થતું નવું પાનું બનાવ્યું 904858 wikitext text/x-wiki {{Don't edit this line {{{machine code|}}} |rank= familia |link= Cordiaceae |parent= Boraginales |refs= {{Cite WFO |title=Cordiaceae R.Br. ex Dumort. |id=7000001124 |access-date=2025-12-20 |mode=cs2}} }} 4l7bvsezynefmcjw63a9hbkoiwm35m8 ઢાંચો:Taxonomy/Boraginales 10 155170 904859 2026-09-07T13:48:08Z ~2026-48431-64 88964 {{Don't edit this line {{{machine code|}}} |parent=Lamiids |rank=ordo |link=Boraginales }}થી શરૂ થતું નવું પાનું બનાવ્યું 904859 wikitext text/x-wiki {{Don't edit this line {{{machine code|}}} |parent=Lamiids |rank=ordo |link=Boraginales }} s88jz91glynwmin2zby8vcbspqroad1 સભ્યની ચર્ચા:અશોક પટેલ 3 155171 904860 2026-09-07T17:09:45Z New user message 14116 નવા સભ્યનાં ચર્ચાનાં પાના પર [[ઢાંચો:સ્વાગત|સ્વાગત સંદેશ]]નો ઉમેરો 904860 wikitext text/x-wiki {{ઢાંચો:સ્વાગત|realName=|name=અશોક પટેલ}} -- [[:User:Dsvyas|ધવલ સુધન્વા વ્યાસ]]<sup>[[:User_talk:Dsvyas|ચર્ચા]]/[[:Special:Contributions/Dsvyas|યોગદાન]]</sup> ૨૨:૩૯, ૭ સપ્ટેમ્બર ૨૦૨૬ (IST) a3xep4iq6cb378u2mmjwiu06y9xlr6c સભ્યની ચર્ચા:ડામોર અજયભાઈ રમણભાઈ 3 155172 904861 2026-09-07T20:07:54Z New user message 14116 નવા સભ્યનાં ચર્ચાનાં પાના પર [[ઢાંચો:સ્વાગત|સ્વાગત સંદેશ]]નો ઉમેરો 904861 wikitext text/x-wiki {{ઢાંચો:સ્વાગત|realName=|name=ડામોર અજયભાઈ રમણભાઈ}} -- [[:User:Dsvyas|ધવલ સુધન્વા વ્યાસ]]<sup>[[:User_talk:Dsvyas|ચર્ચા]]/[[:Special:Contributions/Dsvyas|યોગદાન]]</sup> ૦૧:૩૭, ૮ સપ્ટેમ્બર ૨૦૨૬ (IST) ayq7wo0z02mgzvvmkwg0nxnh7yhbcn2 સભ્યની ચર્ચા:Sarang desa 3 155173 904862 2026-09-07T21:39:04Z New user message 14116 નવા સભ્યનાં ચર્ચાનાં પાના પર [[ઢાંચો:સ્વાગત|સ્વાગત સંદેશ]]નો ઉમેરો 904862 wikitext text/x-wiki {{ઢાંચો:સ્વાગત|realName=|name=Sarang desa}} -- [[સભ્ય:Aniket|Aniket]] ([[સભ્યની ચર્ચા:Aniket|ચર્ચા]]) ૦૩:૦૯, ૮ સપ્ટેમ્બર ૨૦૨૬ (IST) sok5z13a323tkzfj044avjwft17mda8 ઢાંચો:Taxonomy/doc 10 155174 904873 2025-12-12T12:57:58Z en>Cedar101 0 /* Examples */ syntaxhighlight 904873 wikitext text/x-wiki {{Documentation subpage}} {{high-use}} == Usage == Produces a table row for a [[taxon]] in a {{tl|taxobox}}. It is intended to be used only in other taxonomy templates, particularly [[Template:Taxobox/core]]. It takes three parameters: *<code>rank</code> – the Latin rank of the taxon (e.g. "ordo"), which will be anglicized before display (required) *<code>link</code> – the formatted taxon name with any wikilink to be used (required) *<code>auth</code> – the authority for the name in the appropriate style for the relevant nomenclature code (optional) == Examples == Inside a table: *<syntaxhighlight lang="wikitext" inline>{{Taxonomy |rank=genus |link=''[[Acacia]]'' |auth=Martius}}</syntaxhighlight> produces {| class="wikitable" {{Taxonomy|rank=genus|link=''[[Acacia]]''|auth=Martius}} |} *<syntaxhighlight lang="wikitext" inline>{{Taxonomy |rank=classis |link=[[Mammal|Mammalia]] |auth=[[Carl Linnaeus|Linnaeus]], 1758}}</syntaxhighlight> produces {| class="wikitable" {{Taxonomy|rank=classis|link=[[Mammal|Mammalia]]|auth=[[Carl Linnaeus|Linnaeus]], 1758}} |} *<syntaxhighlight lang="wikitext" inline>{{Taxonomy |rank=species |link=''[[Wolf|C. lupus]]''}}</syntaxhighlight> produces {| class="wikitable" {{Taxonomy|rank=species|link=''[[Wolf|C. lupus]]''}} |} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Taxobox templates]] }}</includeonly> 22wwmnwe6fdxzy2zpp1ko5jwss7rcxn 904874 904873 2026-09-08T04:32:28Z KartikMistry 10383 [[:en:Template:Taxonomy/doc]] માંથી આયાત કરેલ ૧ પુનરાવર્તન 904873 wikitext text/x-wiki {{Documentation subpage}} {{high-use}} == Usage == Produces a table row for a [[taxon]] in a {{tl|taxobox}}. It is intended to be used only in other taxonomy templates, particularly [[Template:Taxobox/core]]. It takes three parameters: *<code>rank</code> – the Latin rank of the taxon (e.g. "ordo"), which will be anglicized before display (required) *<code>link</code> – the formatted taxon name with any wikilink to be used (required) *<code>auth</code> – the authority for the name in the appropriate style for the relevant nomenclature code (optional) == Examples == Inside a table: *<syntaxhighlight lang="wikitext" inline>{{Taxonomy |rank=genus |link=''[[Acacia]]'' |auth=Martius}}</syntaxhighlight> produces {| class="wikitable" {{Taxonomy|rank=genus|link=''[[Acacia]]''|auth=Martius}} |} *<syntaxhighlight lang="wikitext" inline>{{Taxonomy |rank=classis |link=[[Mammal|Mammalia]] |auth=[[Carl Linnaeus|Linnaeus]], 1758}}</syntaxhighlight> produces {| class="wikitable" {{Taxonomy|rank=classis|link=[[Mammal|Mammalia]]|auth=[[Carl Linnaeus|Linnaeus]], 1758}} |} *<syntaxhighlight lang="wikitext" inline>{{Taxonomy |rank=species |link=''[[Wolf|C. lupus]]''}}</syntaxhighlight> produces {| class="wikitable" {{Taxonomy|rank=species|link=''[[Wolf|C. lupus]]''}} |} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Taxobox templates]] }}</includeonly> 22wwmnwe6fdxzy2zpp1ko5jwss7rcxn વિભાગ:Taxobox ranks 828 155175 904875 2026-04-22T06:49:27Z en>Peter coxhead 0 restored supergroup, which was not in sandbox 904875 Scribunto text/plain --[[************************************************************************* This module provides support to the automated taxobox system – the templates Automatic taxobox, Speciesbox, Subspeciesbox, Infraspeciesbox, etc. In particular it is part of the configuration of the system, defining the rank names that are recognized and the way they are displayed in English in taxoboxes and viewed taxonomy templates. *****************************************************************************]] require('strict') local TableRow = '|-\n' local TableEnd = '|}\n' local p = {} -- functions made public local l = {} -- internal functions, kept separate --*************************** CONFIGURATION ********************************* --[[============================ ranks ====================================== Set up a constant to hold the rank names and their English equivalents. If adding to this list, note that rank names containing spaces or - must be enclosed in [' ']. =============================================================================]] local ranks = { --Special cases, alphabetic order alliance = '<i>Alliance</i>', ['basic shell type'] = '<i>Basic shell type</i>', branch = '<i>Branch</i>', clade = '<i>Clade</i>', cladus= '<i>Clade</i>', ['form taxon'] = '<i>Form taxon</i>', grade = '<i>Grade</i>', gradus = '<i>Grade</i>', informal = '<i>Informal group</i>', ['informal group'] = '<i>Informal group</i>', morphotype = '<i>Morphotype</i>', node = '<i>Node</i>', plesion = '<i>Plesion</i>', ['plesion-group'] = '<i>Plesion-group</i>', ['possible clade'] = '<i>Clade?</i>', ['species complex'] = '<i>Species complex</i>', ['species group'] = '<i>Species group</i>', ['species subgroup'] = '<i>Species subgroup</i>', ['stem group'] = '<i>Stem group</i>', supergroup = '<i>Supergroup</i>', ['total group'] = '<i>Total group</i>', --Special virus ranks realm = 'Realm', serotype = 'Serotype', strain = 'Strain', virus = 'Virus', ['virus group'] = 'Group', --Linnaean taxonomy, alphabetic order classis = 'Class', cohort = 'Cohort', divisio = 'Division', domain = 'Domain', epifamilia = 'Epifamily', familia = 'Family', forma = 'Form', genus = 'Genus', grandordo = 'Grandorder', ['grandordo-mb'] = 'Grandorder', --McKenna & Bell version hyperfamilia = 'Hyperfamily', infraclassis = 'Infraclass', infrafamilia = 'Infrafamily', infralegio = 'Infralegion', infralegion = 'Infralegion', infraordo = 'Infraorder', infraphylum = 'Infraphylum', infraregnum = 'Infrakingdom', infratribus = 'Infratribe', legio = 'Legion', legion = 'Legion', magnordo = 'Magnorder', micrordo = 'Microrder', microphylum = 'Microphylum', mirordo = 'Mirorder', ['mirordo-mb'] = 'Mirorder', --McKenna & Bell version nanordo = 'Nanorder', nanophylum = 'Nanophylum', ordo = 'Order', parafamilia = 'Parafamily', parvclassis = 'Parvclass', parvordo = 'Parvorder', phylum = 'Phylum', regnum = 'Kingdom', sectio = 'Section', series = 'Series', species = 'Species', subclassis = 'Subclass', subcohort = 'Subcohort', subdivisio = 'Subdivision', subfamilia = 'Subfamily', subgenus = 'Subgenus', sublegio = 'Sublegion', sublegion = 'Sublegion', subordo = 'Suborder', subphylum = 'Subphylum', subregnum = 'Subkingdom', subsectio = 'Subsection', subseries = 'Subseries', subspecies = 'Subspecies', subterclassis = 'Subterclass', --used in WoRMS subtribus = 'Subtribe', superclassis = 'Superclass', supercohort = 'Supercohort', superdivisio = 'Superdivision', superdomain = 'Superdomain', superfamilia = 'Superfamily', superlegio = 'Superlegion', superlegion = 'Superlegion', superordo = 'Superorder', superphylum = 'Superphylum', superregnum = 'Superkingdom', supersectio = 'Supersection', supertribus = 'Supertribe', tribus = 'Tribe', varietas = 'Variety', zoodivisio = 'Division', zoosectio = 'Section', zooseries = 'Series', zoosubdivisio = 'Subdivision', zoosubsectio = 'Subsection', --trace fossil taxonomy, alphabetic order-->', ichnoclassis = 'Ichnoclass', ichnocohort = 'Ichnocohort', ichnodivisio = 'Ichnodivision', ichnofamilia = 'Ichnofamily', ichnogenus = 'Ichnogenus', ichnograndordo = 'Ichnograndorder', ['ichnograndordo-mb'] = 'Ichnograndorder', --McKenna & Bell version ichnoinfraclassis = 'Ichnoinfraclass', ichnoinfradivisio = 'Ichnoinfradivision', ichnoinfraordo = 'Ichnoinfraorder', ichnolegio = 'Ichnolegion', ichnolegion = 'Ichnolegion', ichnomagnordo = 'Ichnomagnorder', ichnomicrordo = 'Ichnomicrorder', ichnoordo = 'Ichnoorder', ichnoparvordo = 'Ichnoparvorder', ichnospecies = 'Ichnospecies', ['ichnostem-group'] = 'Ichnostem-Group', ichnosubclassis = 'Ichnosubclass', ichnosubdivisio = 'Ichnosubdivision', ichnosubfamilia = 'Ichnosubfamily', ichnosublegio = 'Ichnosublegion', ichnosublegion = 'Ichnosublegion', ichnosubordo = 'Ichnosuborder', ichnosuperclassis = 'Ichnosuperclass', ichnosupercohort = 'Ichnosupercohort', ichnosuperfamilia = 'Ichnosuperfamily', ichnosuperordo = 'Ichnosuperorder', --fossilized egg taxonomy, alphabetic order ooclassis = 'Ooclass', oocohort = 'Oocohort', oofamilia = 'Oofamily', oogenus = 'Oogenus', oomagnordo = 'Oomagnorder', oordo = 'Oorder', oospecies = 'Oospecies', oosubclassis = 'Oosubclass', oosubgenus = 'Oosubgenus', oosubspecies = 'Oosubspecies', oosupercohort = 'Oosupercohort', oosuperordo = 'Oosuperorder', } --[[========================== rank values=================================== Constant to set up a table of numerical values corresponding to 'Linnaean' ranks, with upper ranks having higher values. In a valid taxonomic hierarchy, a lower rank should never have a higher value than a higher rank. The actual numerical values are arbitrary so long as they are ordered. The ranks should be a subset of those in Template:Anglicise ranks. =============================================================================]] local rankValTable = { classis = 1400, cohort = 1100, divisio = 1500, domain = 1700, epifamilia = 802, familia = 800, forma = 100, genus = 600, grandordo = 1005, ['grandordo-mb'] = 1002, hyperfamilia = 805; infraclassis = 1397, infrafamilia = 797, infralegio = 1197, infralegion = 1197, infraordo = 997, infraphylum = 1497, infraregnum = 1597, infratribus = 697, legio = 1200, legion = 1200, magnordo = 1006, microphylum = 1495, micrordo = 995, mirordo = 1004, ['mirordo-mb'] = 1001, nanophylum = 1494, nanordo = 994, ordo = 1000, parafamilia = 800, parvclassis = 1396; -- same as subterclassis parvordo = 996, phylum = 1500, regnum = 1600, sectio = 500, --series = 400, used too inconsistently to check species = 300, subclassis = 1398, subcohort = 1098, subdivisio = 1498, subfamilia = 798, subgenus = 598, sublegio = 1198, sublegion = 1198, subordo = 998, subphylum = 1498, subregnum = 1598, subsectio = 498, subspecies = 298, subterclassis = 1396; -- same as parvclassis subtribus = 698, superclassis = 1403, supercohort = 1103, superdivisio = 1503, superdomain = 1703, superfamilia = 803, superlegio = 1203, superlegion = 1203, superordo = 1003, superphylum = 1503, superregnum = 1603, supersectio = 503, supertribus = 703, tribus = 700, varietas = 200, zoodivisio = 1300, zoosectio = 900, zoosubdivisio = 1298, zoosubsectio = 898, } --***************** Process ranks + English equivalents ********************* --[[======================== angliciseRank ================================== Returns the English language equivalent of a rank name used in a taxonomy template. If the rank name is not in the table of ranks, then the first letter of the rank name is capitalized and used as the English name. If checked=yes, then the generated English name is highlighted in red. If called from a taxonomy template, the page is put in Category:Taxonomy templates using capitalized rank parameters =============================================================================]] function p.doAngliciseRank(rankName, check) rankName = string.gsub(rankName, '_', ' ') -- replace all underscores by spaces -- is rankName capitalized? local testName = string.lower(string.sub(rankName,1,1)) .. string.sub(rankName,2) local wasCapitalized = testName ~= rankName if wasCapitalized then rankName = testName end -- try uncapitalized version if string.sub(rankName, 1,8) == 'unranked' then return '(unranked)' end -- now look for an English version of the rank name local res = ranks[rankName] local notFound = not res if notFound then --rankName is not in the table of recognized ranks; just capitalize rankName res = string.upper(string.sub(rankName,1,1)) .. string.sub(rankName,2) end if check == 'no' then return res elseif notFound then res = '<span style="background-color:#F99">' .. res .. '</span>' -- highlight returned English name end -- tracking caegories required only if called from a taxonomy template local pageTitle = mw.title.getCurrentTitle() if pageTitle.nsText == 'Template' and pageTitle.rootText == 'Taxonomy' then if notFound then res = res .. '[[Category:Taxonomy templates using unrecognized rank parameters]]' elseif wasCapitalized then res = res .. '[[Category:Taxonomy templates using capitalized rank parameters]]' end end return res end function p.angliciseRank(frame) local rankName = frame.args[1] local check = frame.args['check'] or 'no' return p.doAngliciseRank(rankName, check) end --[[========================== showRanks ==================================== Returns a wikitable showing all the recognized ranks, how they are shown in taxoboxes, whether they are automatically italicized, and whether they are checked for consistency of rank order. Usage: {{#invoke:Taxobox ranks|showRanks}} =============================================================================]] function p.showRanks(frame) local res = '{| class="wikitable sortable"\n' res = res ..'|+ Ranks recognized in taxonomy templates\n' res = res .. '!style="text-align: left;"|Rank name in<br/>taxonomy<br/>template' res = res .. '!!style="text-align: left;"|Shown in<br/>taxobox as' res = res .. '!! style="text-align: left;" |Taxon name<br/>automatically<br/>italicized?' res = res .. '!! style="text-align: left;" |Rank checked<br/>for consistent<br/>order?' res = res .. '\n' for k, t in pairs(ranks) do res = res .. TableRow .. '|' .. k .. '||' .. t .. '||' .. frame:expandTemplate{ title = 'Is italic taxon', args = { k } } .. '||' .. l.hasRankVal(k) .. '\n' end return res .. TableEnd end --************************* Process rank values ***************************** --[[========================= lookupRankVal ================================= Function to look up the arbitrary numerical value of a rank in a rank value table. "Ichno" and "oo" ranks are not stored separately, so if present the prefix is removed. =============================================================================]] function p.lookupRankVal(rank) local rankVal = rankValTable[rank] if not rankVal then -- may be an "ichno" or "oo" rank; try removing "ichno-" or "oo-" local baseRank = mw.ustring.gsub(mw.ustring.gsub(rank, '^ichno', ''), '^oo', '') if baseRank == 'rdo' then baseRank = 'ordo' end -- if an "ichno" or "oo" rank, lower rank value slightly so it is ok below the base rank rankVal = rankValTable[baseRank] if rankVal then rankVal = rankVal - 0.1 end end return rankVal end --[[=========================== hasRankVal ================================= Utility function to determine whether the rank has a value in rank value table. Returns 'yes' or 'no'. =============================================================================]] function l.hasRankVal(rank) if rank == '' then return 'no' end local rankVal = p.lookupRankVal(rank) if not rankVal then rankVal = 'no' else rankVal = 'yes' end return rankVal end --[[========================== showRankTable ================================ Returns a wikitable showing the ranks and their values as set up in the constant rankValTable. Usage: {{#invoke:Taxobox ranks|showRankTable}} =============================================================================]] function p.showRankTable(frame) local res = '{| class="wikitable sortable"\n|+ Ranks checked in taxonomy templates\n! Rank !! Shown as !! Value\n' for k, v in pairs(rankValTable) do local rankShown = p.doAngliciseRank(k, 'no') res = res .. TableRow .. '|' .. k .. '||' .. rankShown .. '||' .. v .. '\n' end return res .. TableEnd end return p 7j9k1r2lz4zyoczf1fliruybzhsroqx 904876 904875 2026-09-08T04:32:28Z KartikMistry 10383 [[:en:Module:Taxobox_ranks]] માંથી આયાત કરેલ ૧ પુનરાવર્તન 904875 Scribunto text/plain --[[************************************************************************* This module provides support to the automated taxobox system – the templates Automatic taxobox, Speciesbox, Subspeciesbox, Infraspeciesbox, etc. In particular it is part of the configuration of the system, defining the rank names that are recognized and the way they are displayed in English in taxoboxes and viewed taxonomy templates. *****************************************************************************]] require('strict') local TableRow = '|-\n' local TableEnd = '|}\n' local p = {} -- functions made public local l = {} -- internal functions, kept separate --*************************** CONFIGURATION ********************************* --[[============================ ranks ====================================== Set up a constant to hold the rank names and their English equivalents. If adding to this list, note that rank names containing spaces or - must be enclosed in [' ']. =============================================================================]] local ranks = { --Special cases, alphabetic order alliance = '<i>Alliance</i>', ['basic shell type'] = '<i>Basic shell type</i>', branch = '<i>Branch</i>', clade = '<i>Clade</i>', cladus= '<i>Clade</i>', ['form taxon'] = '<i>Form taxon</i>', grade = '<i>Grade</i>', gradus = '<i>Grade</i>', informal = '<i>Informal group</i>', ['informal group'] = '<i>Informal group</i>', morphotype = '<i>Morphotype</i>', node = '<i>Node</i>', plesion = '<i>Plesion</i>', ['plesion-group'] = '<i>Plesion-group</i>', ['possible clade'] = '<i>Clade?</i>', ['species complex'] = '<i>Species complex</i>', ['species group'] = '<i>Species group</i>', ['species subgroup'] = '<i>Species subgroup</i>', ['stem group'] = '<i>Stem group</i>', supergroup = '<i>Supergroup</i>', ['total group'] = '<i>Total group</i>', --Special virus ranks realm = 'Realm', serotype = 'Serotype', strain = 'Strain', virus = 'Virus', ['virus group'] = 'Group', --Linnaean taxonomy, alphabetic order classis = 'Class', cohort = 'Cohort', divisio = 'Division', domain = 'Domain', epifamilia = 'Epifamily', familia = 'Family', forma = 'Form', genus = 'Genus', grandordo = 'Grandorder', ['grandordo-mb'] = 'Grandorder', --McKenna & Bell version hyperfamilia = 'Hyperfamily', infraclassis = 'Infraclass', infrafamilia = 'Infrafamily', infralegio = 'Infralegion', infralegion = 'Infralegion', infraordo = 'Infraorder', infraphylum = 'Infraphylum', infraregnum = 'Infrakingdom', infratribus = 'Infratribe', legio = 'Legion', legion = 'Legion', magnordo = 'Magnorder', micrordo = 'Microrder', microphylum = 'Microphylum', mirordo = 'Mirorder', ['mirordo-mb'] = 'Mirorder', --McKenna & Bell version nanordo = 'Nanorder', nanophylum = 'Nanophylum', ordo = 'Order', parafamilia = 'Parafamily', parvclassis = 'Parvclass', parvordo = 'Parvorder', phylum = 'Phylum', regnum = 'Kingdom', sectio = 'Section', series = 'Series', species = 'Species', subclassis = 'Subclass', subcohort = 'Subcohort', subdivisio = 'Subdivision', subfamilia = 'Subfamily', subgenus = 'Subgenus', sublegio = 'Sublegion', sublegion = 'Sublegion', subordo = 'Suborder', subphylum = 'Subphylum', subregnum = 'Subkingdom', subsectio = 'Subsection', subseries = 'Subseries', subspecies = 'Subspecies', subterclassis = 'Subterclass', --used in WoRMS subtribus = 'Subtribe', superclassis = 'Superclass', supercohort = 'Supercohort', superdivisio = 'Superdivision', superdomain = 'Superdomain', superfamilia = 'Superfamily', superlegio = 'Superlegion', superlegion = 'Superlegion', superordo = 'Superorder', superphylum = 'Superphylum', superregnum = 'Superkingdom', supersectio = 'Supersection', supertribus = 'Supertribe', tribus = 'Tribe', varietas = 'Variety', zoodivisio = 'Division', zoosectio = 'Section', zooseries = 'Series', zoosubdivisio = 'Subdivision', zoosubsectio = 'Subsection', --trace fossil taxonomy, alphabetic order-->', ichnoclassis = 'Ichnoclass', ichnocohort = 'Ichnocohort', ichnodivisio = 'Ichnodivision', ichnofamilia = 'Ichnofamily', ichnogenus = 'Ichnogenus', ichnograndordo = 'Ichnograndorder', ['ichnograndordo-mb'] = 'Ichnograndorder', --McKenna & Bell version ichnoinfraclassis = 'Ichnoinfraclass', ichnoinfradivisio = 'Ichnoinfradivision', ichnoinfraordo = 'Ichnoinfraorder', ichnolegio = 'Ichnolegion', ichnolegion = 'Ichnolegion', ichnomagnordo = 'Ichnomagnorder', ichnomicrordo = 'Ichnomicrorder', ichnoordo = 'Ichnoorder', ichnoparvordo = 'Ichnoparvorder', ichnospecies = 'Ichnospecies', ['ichnostem-group'] = 'Ichnostem-Group', ichnosubclassis = 'Ichnosubclass', ichnosubdivisio = 'Ichnosubdivision', ichnosubfamilia = 'Ichnosubfamily', ichnosublegio = 'Ichnosublegion', ichnosublegion = 'Ichnosublegion', ichnosubordo = 'Ichnosuborder', ichnosuperclassis = 'Ichnosuperclass', ichnosupercohort = 'Ichnosupercohort', ichnosuperfamilia = 'Ichnosuperfamily', ichnosuperordo = 'Ichnosuperorder', --fossilized egg taxonomy, alphabetic order ooclassis = 'Ooclass', oocohort = 'Oocohort', oofamilia = 'Oofamily', oogenus = 'Oogenus', oomagnordo = 'Oomagnorder', oordo = 'Oorder', oospecies = 'Oospecies', oosubclassis = 'Oosubclass', oosubgenus = 'Oosubgenus', oosubspecies = 'Oosubspecies', oosupercohort = 'Oosupercohort', oosuperordo = 'Oosuperorder', } --[[========================== rank values=================================== Constant to set up a table of numerical values corresponding to 'Linnaean' ranks, with upper ranks having higher values. In a valid taxonomic hierarchy, a lower rank should never have a higher value than a higher rank. The actual numerical values are arbitrary so long as they are ordered. The ranks should be a subset of those in Template:Anglicise ranks. =============================================================================]] local rankValTable = { classis = 1400, cohort = 1100, divisio = 1500, domain = 1700, epifamilia = 802, familia = 800, forma = 100, genus = 600, grandordo = 1005, ['grandordo-mb'] = 1002, hyperfamilia = 805; infraclassis = 1397, infrafamilia = 797, infralegio = 1197, infralegion = 1197, infraordo = 997, infraphylum = 1497, infraregnum = 1597, infratribus = 697, legio = 1200, legion = 1200, magnordo = 1006, microphylum = 1495, micrordo = 995, mirordo = 1004, ['mirordo-mb'] = 1001, nanophylum = 1494, nanordo = 994, ordo = 1000, parafamilia = 800, parvclassis = 1396; -- same as subterclassis parvordo = 996, phylum = 1500, regnum = 1600, sectio = 500, --series = 400, used too inconsistently to check species = 300, subclassis = 1398, subcohort = 1098, subdivisio = 1498, subfamilia = 798, subgenus = 598, sublegio = 1198, sublegion = 1198, subordo = 998, subphylum = 1498, subregnum = 1598, subsectio = 498, subspecies = 298, subterclassis = 1396; -- same as parvclassis subtribus = 698, superclassis = 1403, supercohort = 1103, superdivisio = 1503, superdomain = 1703, superfamilia = 803, superlegio = 1203, superlegion = 1203, superordo = 1003, superphylum = 1503, superregnum = 1603, supersectio = 503, supertribus = 703, tribus = 700, varietas = 200, zoodivisio = 1300, zoosectio = 900, zoosubdivisio = 1298, zoosubsectio = 898, } --***************** Process ranks + English equivalents ********************* --[[======================== angliciseRank ================================== Returns the English language equivalent of a rank name used in a taxonomy template. If the rank name is not in the table of ranks, then the first letter of the rank name is capitalized and used as the English name. If checked=yes, then the generated English name is highlighted in red. If called from a taxonomy template, the page is put in Category:Taxonomy templates using capitalized rank parameters =============================================================================]] function p.doAngliciseRank(rankName, check) rankName = string.gsub(rankName, '_', ' ') -- replace all underscores by spaces -- is rankName capitalized? local testName = string.lower(string.sub(rankName,1,1)) .. string.sub(rankName,2) local wasCapitalized = testName ~= rankName if wasCapitalized then rankName = testName end -- try uncapitalized version if string.sub(rankName, 1,8) == 'unranked' then return '(unranked)' end -- now look for an English version of the rank name local res = ranks[rankName] local notFound = not res if notFound then --rankName is not in the table of recognized ranks; just capitalize rankName res = string.upper(string.sub(rankName,1,1)) .. string.sub(rankName,2) end if check == 'no' then return res elseif notFound then res = '<span style="background-color:#F99">' .. res .. '</span>' -- highlight returned English name end -- tracking caegories required only if called from a taxonomy template local pageTitle = mw.title.getCurrentTitle() if pageTitle.nsText == 'Template' and pageTitle.rootText == 'Taxonomy' then if notFound then res = res .. '[[Category:Taxonomy templates using unrecognized rank parameters]]' elseif wasCapitalized then res = res .. '[[Category:Taxonomy templates using capitalized rank parameters]]' end end return res end function p.angliciseRank(frame) local rankName = frame.args[1] local check = frame.args['check'] or 'no' return p.doAngliciseRank(rankName, check) end --[[========================== showRanks ==================================== Returns a wikitable showing all the recognized ranks, how they are shown in taxoboxes, whether they are automatically italicized, and whether they are checked for consistency of rank order. Usage: {{#invoke:Taxobox ranks|showRanks}} =============================================================================]] function p.showRanks(frame) local res = '{| class="wikitable sortable"\n' res = res ..'|+ Ranks recognized in taxonomy templates\n' res = res .. '!style="text-align: left;"|Rank name in<br/>taxonomy<br/>template' res = res .. '!!style="text-align: left;"|Shown in<br/>taxobox as' res = res .. '!! style="text-align: left;" |Taxon name<br/>automatically<br/>italicized?' res = res .. '!! style="text-align: left;" |Rank checked<br/>for consistent<br/>order?' res = res .. '\n' for k, t in pairs(ranks) do res = res .. TableRow .. '|' .. k .. '||' .. t .. '||' .. frame:expandTemplate{ title = 'Is italic taxon', args = { k } } .. '||' .. l.hasRankVal(k) .. '\n' end return res .. TableEnd end --************************* Process rank values ***************************** --[[========================= lookupRankVal ================================= Function to look up the arbitrary numerical value of a rank in a rank value table. "Ichno" and "oo" ranks are not stored separately, so if present the prefix is removed. =============================================================================]] function p.lookupRankVal(rank) local rankVal = rankValTable[rank] if not rankVal then -- may be an "ichno" or "oo" rank; try removing "ichno-" or "oo-" local baseRank = mw.ustring.gsub(mw.ustring.gsub(rank, '^ichno', ''), '^oo', '') if baseRank == 'rdo' then baseRank = 'ordo' end -- if an "ichno" or "oo" rank, lower rank value slightly so it is ok below the base rank rankVal = rankValTable[baseRank] if rankVal then rankVal = rankVal - 0.1 end end return rankVal end --[[=========================== hasRankVal ================================= Utility function to determine whether the rank has a value in rank value table. Returns 'yes' or 'no'. =============================================================================]] function l.hasRankVal(rank) if rank == '' then return 'no' end local rankVal = p.lookupRankVal(rank) if not rankVal then rankVal = 'no' else rankVal = 'yes' end return rankVal end --[[========================== showRankTable ================================ Returns a wikitable showing the ranks and their values as set up in the constant rankValTable. Usage: {{#invoke:Taxobox ranks|showRankTable}} =============================================================================]] function p.showRankTable(frame) local res = '{| class="wikitable sortable"\n|+ Ranks checked in taxonomy templates\n! Rank !! Shown as !! Value\n' for k, v in pairs(rankValTable) do local rankShown = p.doAngliciseRank(k, 'no') res = res .. TableRow .. '|' .. k .. '||' .. rankShown .. '||' .. v .. '\n' end return res .. TableEnd end return p 7j9k1r2lz4zyoczf1fliruybzhsroqx વિભાગ:Protected page 828 155176 904877 2026-08-30T17:24:01Z en>Primefac 0 update /config call 904877 Scribunto text/plain -- This module implements {{pp-meta}} and its daughter templates such as -- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}. -- Initialise necessary modules. require('strict') local makeFileLink = require('Module:File link')._main local effectiveProtectionLevel = require('Module:Effective protection level')._main local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main local yesno = require('Module:Yesno') -- Lazily initialise modules and objects we don't always need. local getArgs, makeMessageBox, lang -- Set constants. local CONFIG_MODULE = 'Module:Protected page/config' -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function makeCategoryLink(cat, sort) if cat then return string.format( '[[%s:%s|%s]]', mw.site.namespaces[14].name, cat, sort ) end end -- Validation function for the expiry and the protection date local function validateDate(dateString, dateType) if not lang then lang = mw.language.getContentLanguage() end local success, result = pcall(lang.formatDate, lang, 'U', dateString) if success then result = tonumber(result) if result then return result end end error(string.format( 'invalid %s: %s', dateType, tostring(dateString) ), 4) end local function makeFullUrl(page, query, display) return string.format( '[%s %s]', tostring(mw.uri.fullUrl(page, query)), display ) end -- Given a directed graph formatted as node -> table of direct successors, -- get a table of all nodes reachable from a given node (though always -- including the given node). local function getReachableNodes(graph, start) local toWalk, retval = {[start] = true}, {} while true do -- Can't use pairs() since we're adding and removing things as we're iterating local k = next(toWalk) -- This always gets the "first" key if k == nil then return retval end toWalk[k] = nil retval[k] = true for _,v in ipairs(graph[k]) do if not retval[v] then toWalk[v] = true end end end end -------------------------------------------------------------------------------- -- Protection class -------------------------------------------------------------------------------- local Protection = {} Protection.__index = Protection Protection.supportedActions = { edit = true, move = true, autoreview = true, upload = true } Protection.bannerConfigFields = { 'text', 'explanation', 'tooltip', 'alt', 'link', 'image' } function Protection.new(args, cfg, title) local obj = {} obj._cfg = cfg obj.title = title or mw.title.getCurrentTitle() -- Set action if not args.action then obj.action = 'edit' elseif Protection.supportedActions[args.action] then obj.action = args.action else error(string.format( 'invalid action: %s', tostring(args.action) ), 3) end -- Set level obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title) if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then -- Users need to be autoconfirmed to move pages anyway, so treat -- semi-move-protected pages as unprotected. obj.level = '*' end -- Set expiry local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title) if effectiveExpiry == 'infinity' then obj.expiry = 'indef' elseif effectiveExpiry ~= 'unknown' then obj.expiry = validateDate(effectiveExpiry, 'expiry date') end -- Set reason if args[1] then obj.reason = mw.ustring.lower(args[1]) if obj.reason:find('|') then error('reasons cannot contain the pipe character ("|")', 3) end end -- Set protection date if args.date then obj.protectionDate = validateDate(args.date, 'protection date') end -- Set banner config do obj.bannerConfig = {} local configTables = {} if cfg.banners[obj.action] then configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason] end if cfg.defaultBanners[obj.action] then configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level] configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default end configTables[#configTables + 1] = cfg.masterBanner for i, field in ipairs(Protection.bannerConfigFields) do for j, t in ipairs(configTables) do if t[field] then obj.bannerConfig[field] = t[field] break end end end end return setmetatable(obj, Protection) end function Protection:isUserScript() -- Whether the page is a user JavaScript or CSS page. local title = self.title return title.namespace == 2 and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) end function Protection:isProtected() return self.level ~= '*' end function Protection:shouldShowLock() -- Whether we should output a banner/padlock return self:isProtected() and not self:isUserScript() end -- Whether this page needs a protection category. Protection.shouldHaveProtectionCategory = Protection.shouldShowLock function Protection:isTemporary() return type(self.expiry) == 'number' end function Protection:makeProtectionCategory() if not self:shouldHaveProtectionCategory() then return '' end local cfg = self._cfg local title = self.title -- Get the expiry key fragment. local expiryFragment if self.expiry == 'indef' then expiryFragment = self.expiry elseif type(self.expiry) == 'number' then expiryFragment = 'temp' end -- Get the namespace key fragment. local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace] if not namespaceFragment and title.namespace % 2 == 1 then namespaceFragment = 'talk' end -- Define the order that key fragments are tested in. This is done with an -- array of tables containing the value to be tested, along with its -- position in the cfg.protectionCategories table. local order = { {val = expiryFragment, keypos = 1}, {val = namespaceFragment, keypos = 2}, {val = self.reason, keypos = 3}, {val = self.level, keypos = 4}, {val = self.action, keypos = 5} } --[[ -- The old protection templates used an ad-hoc protection category system, -- with some templates prioritising namespaces in their categories, and -- others prioritising the protection reason. To emulate this in this module -- we use the config table cfg.reasonsWithNamespacePriority to set the -- reasons for which namespaces have priority over protection reason. -- If we are dealing with one of those reasons, move the namespace table to -- the end of the order table, i.e. give it highest priority. If not, the -- reason should have highest priority, so move that to the end of the table -- instead. --]] table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3)) --[[ -- Define the attempt order. Inactive subtables (subtables with nil "value" -- fields) are moved to the end, where they will later be given the key -- "all". This is to cut down on the number of table lookups in -- cfg.protectionCategories, which grows exponentially with the number of -- non-nil keys. We keep track of the number of active subtables with the -- noActive parameter. --]] local noActive, attemptOrder do local active, inactive = {}, {} for i, t in ipairs(order) do if t.val then active[#active + 1] = t else inactive[#inactive + 1] = t end end noActive = #active attemptOrder = active for i, t in ipairs(inactive) do attemptOrder[#attemptOrder + 1] = t end end --[[ -- Check increasingly generic key combinations until we find a match. If a -- specific category exists for the combination of key fragments we are -- given, that match will be found first. If not, we keep trying different -- key fragment combinations until we match using the key -- "all-all-all-all-all". -- -- To generate the keys, we index the key subtables using a binary matrix -- with indexes i and j. j is only calculated up to the number of active -- subtables. For example, if there were three active subtables, the matrix -- would look like this, with 0 corresponding to the key fragment "all", and -- 1 corresponding to other key fragments. -- -- j 1 2 3 -- i -- 1 1 1 1 -- 2 0 1 1 -- 3 1 0 1 -- 4 0 0 1 -- 5 1 1 0 -- 6 0 1 0 -- 7 1 0 0 -- 8 0 0 0 -- -- Values of j higher than the number of active subtables are set -- to the string "all". -- -- A key for cfg.protectionCategories is constructed for each value of i. -- The position of the value in the key is determined by the keypos field in -- each subtable. --]] local cats = cfg.protectionCategories for i = 1, 2^noActive do local key = {} for j, t in ipairs(attemptOrder) do if j > noActive then key[t.keypos] = 'all' else local quotient = i / 2 ^ (j - 1) quotient = math.ceil(quotient) if quotient % 2 == 1 then key[t.keypos] = t.val else key[t.keypos] = 'all' end end end key = table.concat(key, '|') local attempt = cats[key] if attempt then return makeCategoryLink(attempt, title.text) end end return '' end function Protection:isIncorrect() if not self:shouldHaveProtectionCategory() then return true end if type(self.expiry) ~= 'number' then return false end local expiry = os.date('*t', self.expiry) -- Avoid checking today.day or os.time(), unless close. https://phabricator.wikimedia.org/T416616 local today = os.date('*t') return (expiry.year < today.year) or (expiry.year == today.year and expiry.month < today.month) or (expiry.year == today.year and expiry.month == today.month and expiry.day < today.day) or (expiry.year == today.year and expiry.month == today.month and expiry.day == today.day and self.expiry < os.time()) end function Protection:isTemplateProtectedNonTemplate() local action, namespace = self.action, self.title.namespace return self.level == 'templateeditor' and ( (action ~= 'edit' and action ~= 'move') or (namespace ~= 10 and namespace ~= 828) ) end function Protection:makeCategoryLinks() local msg = self._cfg.msg local ret = {self:makeProtectionCategory()} if self:isIncorrect() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-incorrect'], self.title.text ) end if self:isTemplateProtectedNonTemplate() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-template'], self.title.text ) end return table.concat(ret) end -------------------------------------------------------------------------------- -- Blurb class -------------------------------------------------------------------------------- local Blurb = {} Blurb.__index = Blurb Blurb.bannerTextFields = { text = true, explanation = true, tooltip = true, alt = true, link = true } function Blurb.new(protectionObj, args, cfg) return setmetatable({ _cfg = cfg, _protectionObj = protectionObj, _args = args }, Blurb) end -- Private methods -- function Blurb:_formatDate(num) -- Formats a Unix timestamp into dd Month, YYYY format. lang = lang or mw.language.getContentLanguage() local success, date = pcall( lang.formatDate, lang, self._cfg.msg['expiry-date-format'] or 'j F Y', '@' .. tostring(num) ) if success then return date end end function Blurb:_getExpandedMessage(msgKey) return self:_substituteParameters(self._cfg.msg[msgKey]) end function Blurb:_substituteParameters(msg) if not self._params then local parameterFuncs = {} parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter parameterFuncs.EDITREQUEST = self._makeEditRequestParameter parameterFuncs.EXPIRY = self._makeExpiryParameter parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter parameterFuncs.IMAGELINK = self._makeImageLinkParameter parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter parameterFuncs.PAGETYPE = self._makePagetypeParameter parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter parameterFuncs.TALKPAGE = self._makeTalkPageParameter parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter parameterFuncs.VANDAL = self._makeVandalTemplateParameter self._params = setmetatable({}, { __index = function (t, k) local param if parameterFuncs[k] then param = parameterFuncs[k](self) end param = param or '' t[k] = param return param end }) end msg = msg:gsub('${(%u+)}', self._params) return msg end function Blurb:_makeCurrentVersionParameter() -- A link to the page history or the move log, depending on the kind of -- protection. local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'move' then -- We need the move log link. return makeFullUrl( 'Special:Log', {type = 'move', page = pagename}, self:_getExpandedMessage('current-version-move-display') ) else -- We need the history link. return makeFullUrl( pagename, {action = 'history'}, self:_getExpandedMessage('current-version-edit-display') ) end end function Blurb:_makeEditRequestParameter() local mEditRequest = require('Module:Submit an edit request') local action = self._protectionObj.action local level = self._protectionObj.level -- Get the edit request type. local requestType if action == 'edit' then if level == 'autoconfirmed' then requestType = 'semi' elseif level == 'extendedconfirmed' then requestType = 'extended' elseif level == 'templateeditor' then requestType = 'template' end end requestType = requestType or 'full' -- Get the display value. local display = self:_getExpandedMessage('edit-request-display') return mEditRequest._link{type = requestType, display = display} end function Blurb:_makeExpiryParameter() local expiry = self._protectionObj.expiry if type(expiry) == 'number' then return self:_formatDate(expiry) else return expiry end end function Blurb:_makeExplanationBlurbParameter() -- Cover special cases first. if self._protectionObj.title.namespace == 8 then -- MediaWiki namespace return self:_getExpandedMessage('explanation-blurb-nounprotect') end -- Get explanation blurb table keys local action = self._protectionObj.action local level = self._protectionObj.level local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject' -- Find the message in the explanation blurb table and substitute any -- parameters. local explanations = self._cfg.explanationBlurbs local msg if explanations[action][level] and explanations[action][level][talkKey] then msg = explanations[action][level][talkKey] elseif explanations[action][level] and explanations[action][level].default then msg = explanations[action][level].default elseif explanations[action].default and explanations[action].default[talkKey] then msg = explanations[action].default[talkKey] elseif explanations[action].default and explanations[action].default.default then msg = explanations[action].default.default else error(string.format( 'could not find explanation blurb for action "%s", level "%s" and talk key "%s"', action, level, talkKey ), 8) end return self:_substituteParameters(msg) end function Blurb:_makeImageLinkParameter() local imageLinks = self._cfg.imageLinks local action = self._protectionObj.action local level = self._protectionObj.level local msg if imageLinks[action][level] then msg = imageLinks[action][level] elseif imageLinks[action].default then msg = imageLinks[action].default else msg = imageLinks.edit.default end return self:_substituteParameters(msg) end function Blurb:_makeIntroBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-blurb-expiry') else return self:_getExpandedMessage('intro-blurb-noexpiry') end end function Blurb:_makeIntroFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-fragment-expiry') else return self:_getExpandedMessage('intro-fragment-noexpiry') end end function Blurb:_makePagetypeParameter() local pagetypes = self._cfg.pagetypes return pagetypes[self._protectionObj.title.namespace] or pagetypes.default or error('no default pagetype defined', 8) end function Blurb:_makeProtectionBlurbParameter() local protectionBlurbs = self._cfg.protectionBlurbs local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionBlurbs[action][level] then msg = protectionBlurbs[action][level] elseif protectionBlurbs[action].default then msg = protectionBlurbs[action].default elseif protectionBlurbs.edit.default then msg = protectionBlurbs.edit.default else error('no protection blurb defined for protectionBlurbs.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionDateParameter() local protectionDate = self._protectionObj.protectionDate if type(protectionDate) == 'number' then return self:_formatDate(protectionDate) else return protectionDate end end function Blurb:_makeProtectionLevelParameter() local protectionLevels = self._cfg.protectionLevels local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionLevels[action][level] then msg = protectionLevels[action][level] elseif protectionLevels[action].default then msg = protectionLevels[action].default elseif protectionLevels.edit.default then msg = protectionLevels.edit.default else error('no protection level defined for protectionLevels.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionLogParameter() local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'autoreview' then -- We need the pending changes log. return makeFullUrl( 'Special:Log', {type = 'stable', page = pagename}, self:_getExpandedMessage('pc-log-display') ) else -- We need the protection log. return makeFullUrl( 'Special:Log', {type = 'protect', page = pagename}, self:_getExpandedMessage('protection-log-display') ) end end function Blurb:_makeTalkPageParameter() return string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[self._protectionObj.title.namespace].talk.name, self._protectionObj.title.text, self._args.section or 'top', self:_getExpandedMessage('talk-page-link-display') ) end function Blurb:_makeTooltipBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-blurb-expiry') else return self:_getExpandedMessage('tooltip-blurb-noexpiry') end end function Blurb:_makeTooltipFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-fragment-expiry') else return self:_getExpandedMessage('tooltip-fragment-noexpiry') end end function Blurb:_makeVandalTemplateParameter() return mw.getCurrentFrame():expandTemplate{ title="vandal-m", args={self._args.user or self._protectionObj.title.baseText} } end -- Public methods -- function Blurb:makeBannerText(key) -- Validate input. if not key or not Blurb.bannerTextFields[key] then error(string.format( '"%s" is not a valid banner config field', tostring(key) ), 2) end -- Generate the text. local msg = self._protectionObj.bannerConfig[key] if type(msg) == 'string' then return self:_substituteParameters(msg) elseif type(msg) == 'function' then msg = msg(self._protectionObj, self._args) if type(msg) ~= 'string' then error(string.format( 'bad output from banner config function with key "%s"' .. ' (expected string, got %s)', tostring(key), type(msg) ), 4) end return self:_substituteParameters(msg) end end -------------------------------------------------------------------------------- -- BannerTemplate class -------------------------------------------------------------------------------- local BannerTemplate = {} BannerTemplate.__index = BannerTemplate function BannerTemplate.new(protectionObj, cfg) local obj = {} obj._cfg = cfg -- Set the image filename. local imageFilename = protectionObj.bannerConfig.image if imageFilename then obj._imageFilename = imageFilename else -- If an image filename isn't specified explicitly in the banner config, -- generate it from the protection status and the namespace. local action = protectionObj.action local level = protectionObj.level local namespace = protectionObj.title.namespace local reason = protectionObj.reason -- Deal with special cases first. if ( namespace == 10 or namespace == 828 or reason and obj._cfg.indefImageReasons[reason] ) and action == 'edit' and level == 'sysop' and not protectionObj:isTemporary() then -- Fully protected modules and templates get the special red "indef" -- padlock. obj._imageFilename = obj._cfg.msg['image-filename-indef'] else -- Deal with regular protection types. local images = obj._cfg.images if images[action] then if images[action][level] then obj._imageFilename = images[action][level] elseif images[action].default then obj._imageFilename = images[action].default end end end end return setmetatable(obj, BannerTemplate) end function BannerTemplate:renderImage() local filename = self._imageFilename or self._cfg.msg['image-filename-default'] or 'Transparent.gif' return makeFileLink{ file = filename, size = (self.imageWidth or 20) .. 'px', alt = self._imageAlt, link = self._imageLink, caption = self.imageCaption } end -------------------------------------------------------------------------------- -- Banner class -------------------------------------------------------------------------------- local Banner = setmetatable({}, BannerTemplate) Banner.__index = Banner function Banner.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 40 obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip. obj._reasonText = blurbObj:makeBannerText('text') obj._explanationText = blurbObj:makeBannerText('explanation') obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing. return setmetatable(obj, Banner) end function Banner:__tostring() -- Renders the banner. makeMessageBox = makeMessageBox or require('Module:Message box').main local reasonText = self._reasonText or error('no reason text set', 2) local explanationText = self._explanationText local mbargs = { page = self._page, type = 'protection', image = self:renderImage(), text = string.format( "'''%s'''%s", reasonText, explanationText and '<br />' .. explanationText or '' ) } return makeMessageBox('mbox', mbargs) end -------------------------------------------------------------------------------- -- Padlock class -------------------------------------------------------------------------------- local Padlock = setmetatable({}, BannerTemplate) Padlock.__index = Padlock function Padlock.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 20 obj.imageCaption = blurbObj:makeBannerText('tooltip') obj._imageAlt = blurbObj:makeBannerText('alt') obj._imageLink = blurbObj:makeBannerText('link') obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action] or cfg.padlockIndicatorNames.default or 'pp-default' return setmetatable(obj, Padlock) end function Padlock:__tostring() local frame = mw.getCurrentFrame() -- The nowiki tag helps prevent whitespace at the top of articles. return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{ name = 'indicator', args = {name = self._indicatorName}, content = self:renderImage() } end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- This is used for testing purposes. return { Protection = Protection, Blurb = Blurb, BannerTemplate = BannerTemplate, Banner = Banner, Padlock = Padlock, } end function p._main(args, cfg, title) args = args or {} cfg = cfg or require(CONFIG_MODULE) local protectionObj = Protection.new(args, cfg, title) local ret = {} -- If a page's edit protection is equally or more restrictive than its -- protection from some other action, then don't bother displaying anything -- for the other action (except categories). if not yesno(args.catonly) and (protectionObj.action == 'edit' or args.demolevel or not getReachableNodes( cfg.hierarchy, protectionObj.level )[effectiveProtectionLevel('edit', protectionObj.title)]) then -- Initialise the blurb object local blurbObj = Blurb.new(protectionObj, args, cfg) -- Render the banner if protectionObj:shouldShowLock() then ret[#ret + 1] = tostring( (yesno(args.small) and Padlock or Banner) .new(protectionObj, blurbObj, cfg) ) end end -- Render the categories if yesno(args.category) ~= false then ret[#ret + 1] = protectionObj:makeCategoryLinks() end -- For arbitration enforcement, flagging [[WP:PIA]] pages to enable [[Special:AbuseFilter/1339]] to flag edits to them if protectionObj.level == "extendedconfirmed" then if require("Module:TableTools").inArray(protectionObj.title.talkPageTitle.categories, "Wikipedia pages subject to the extended confirmed restriction related to the Arab-Israeli conflict") then ret[#ret + 1] = "<p class='PIA-flag' style='display:none; visibility:hidden;' title='This page is subject to the extended confirmed restriction related to the Arab-Israeli conflict.'></p>" end end return table.concat(ret) end function p.main(frame, cfg) cfg = cfg or require(CONFIG_MODULE) -- Find default args, if any. local parent = frame.getParent and frame:getParent() local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')] -- Find user args, and use the parent frame if we are being called from a -- wrapper template. getArgs = getArgs or require('Module:Arguments').getArgs local userArgs = getArgs(frame, { parentOnly = defaultArgs, frameOnly = not defaultArgs }) -- Build the args table. User-specified args overwrite default args. local args = {} for k, v in pairs(defaultArgs or {}) do args[k] = v end for k, v in pairs(userArgs) do args[k] = v end return p._main(args, cfg) end return p p8ryzquso3eyufqyguwh2oyqz5eu1l6 904878 904877 2026-09-08T04:32:28Z KartikMistry 10383 [[:en:Module:Protected_page]] માંથી આયાત કરેલ ૧ પુનરાવર્તન 904877 Scribunto text/plain -- This module implements {{pp-meta}} and its daughter templates such as -- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}. -- Initialise necessary modules. require('strict') local makeFileLink = require('Module:File link')._main local effectiveProtectionLevel = require('Module:Effective protection level')._main local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main local yesno = require('Module:Yesno') -- Lazily initialise modules and objects we don't always need. local getArgs, makeMessageBox, lang -- Set constants. local CONFIG_MODULE = 'Module:Protected page/config' -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function makeCategoryLink(cat, sort) if cat then return string.format( '[[%s:%s|%s]]', mw.site.namespaces[14].name, cat, sort ) end end -- Validation function for the expiry and the protection date local function validateDate(dateString, dateType) if not lang then lang = mw.language.getContentLanguage() end local success, result = pcall(lang.formatDate, lang, 'U', dateString) if success then result = tonumber(result) if result then return result end end error(string.format( 'invalid %s: %s', dateType, tostring(dateString) ), 4) end local function makeFullUrl(page, query, display) return string.format( '[%s %s]', tostring(mw.uri.fullUrl(page, query)), display ) end -- Given a directed graph formatted as node -> table of direct successors, -- get a table of all nodes reachable from a given node (though always -- including the given node). local function getReachableNodes(graph, start) local toWalk, retval = {[start] = true}, {} while true do -- Can't use pairs() since we're adding and removing things as we're iterating local k = next(toWalk) -- This always gets the "first" key if k == nil then return retval end toWalk[k] = nil retval[k] = true for _,v in ipairs(graph[k]) do if not retval[v] then toWalk[v] = true end end end end -------------------------------------------------------------------------------- -- Protection class -------------------------------------------------------------------------------- local Protection = {} Protection.__index = Protection Protection.supportedActions = { edit = true, move = true, autoreview = true, upload = true } Protection.bannerConfigFields = { 'text', 'explanation', 'tooltip', 'alt', 'link', 'image' } function Protection.new(args, cfg, title) local obj = {} obj._cfg = cfg obj.title = title or mw.title.getCurrentTitle() -- Set action if not args.action then obj.action = 'edit' elseif Protection.supportedActions[args.action] then obj.action = args.action else error(string.format( 'invalid action: %s', tostring(args.action) ), 3) end -- Set level obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title) if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then -- Users need to be autoconfirmed to move pages anyway, so treat -- semi-move-protected pages as unprotected. obj.level = '*' end -- Set expiry local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title) if effectiveExpiry == 'infinity' then obj.expiry = 'indef' elseif effectiveExpiry ~= 'unknown' then obj.expiry = validateDate(effectiveExpiry, 'expiry date') end -- Set reason if args[1] then obj.reason = mw.ustring.lower(args[1]) if obj.reason:find('|') then error('reasons cannot contain the pipe character ("|")', 3) end end -- Set protection date if args.date then obj.protectionDate = validateDate(args.date, 'protection date') end -- Set banner config do obj.bannerConfig = {} local configTables = {} if cfg.banners[obj.action] then configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason] end if cfg.defaultBanners[obj.action] then configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level] configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default end configTables[#configTables + 1] = cfg.masterBanner for i, field in ipairs(Protection.bannerConfigFields) do for j, t in ipairs(configTables) do if t[field] then obj.bannerConfig[field] = t[field] break end end end end return setmetatable(obj, Protection) end function Protection:isUserScript() -- Whether the page is a user JavaScript or CSS page. local title = self.title return title.namespace == 2 and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) end function Protection:isProtected() return self.level ~= '*' end function Protection:shouldShowLock() -- Whether we should output a banner/padlock return self:isProtected() and not self:isUserScript() end -- Whether this page needs a protection category. Protection.shouldHaveProtectionCategory = Protection.shouldShowLock function Protection:isTemporary() return type(self.expiry) == 'number' end function Protection:makeProtectionCategory() if not self:shouldHaveProtectionCategory() then return '' end local cfg = self._cfg local title = self.title -- Get the expiry key fragment. local expiryFragment if self.expiry == 'indef' then expiryFragment = self.expiry elseif type(self.expiry) == 'number' then expiryFragment = 'temp' end -- Get the namespace key fragment. local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace] if not namespaceFragment and title.namespace % 2 == 1 then namespaceFragment = 'talk' end -- Define the order that key fragments are tested in. This is done with an -- array of tables containing the value to be tested, along with its -- position in the cfg.protectionCategories table. local order = { {val = expiryFragment, keypos = 1}, {val = namespaceFragment, keypos = 2}, {val = self.reason, keypos = 3}, {val = self.level, keypos = 4}, {val = self.action, keypos = 5} } --[[ -- The old protection templates used an ad-hoc protection category system, -- with some templates prioritising namespaces in their categories, and -- others prioritising the protection reason. To emulate this in this module -- we use the config table cfg.reasonsWithNamespacePriority to set the -- reasons for which namespaces have priority over protection reason. -- If we are dealing with one of those reasons, move the namespace table to -- the end of the order table, i.e. give it highest priority. If not, the -- reason should have highest priority, so move that to the end of the table -- instead. --]] table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3)) --[[ -- Define the attempt order. Inactive subtables (subtables with nil "value" -- fields) are moved to the end, where they will later be given the key -- "all". This is to cut down on the number of table lookups in -- cfg.protectionCategories, which grows exponentially with the number of -- non-nil keys. We keep track of the number of active subtables with the -- noActive parameter. --]] local noActive, attemptOrder do local active, inactive = {}, {} for i, t in ipairs(order) do if t.val then active[#active + 1] = t else inactive[#inactive + 1] = t end end noActive = #active attemptOrder = active for i, t in ipairs(inactive) do attemptOrder[#attemptOrder + 1] = t end end --[[ -- Check increasingly generic key combinations until we find a match. If a -- specific category exists for the combination of key fragments we are -- given, that match will be found first. If not, we keep trying different -- key fragment combinations until we match using the key -- "all-all-all-all-all". -- -- To generate the keys, we index the key subtables using a binary matrix -- with indexes i and j. j is only calculated up to the number of active -- subtables. For example, if there were three active subtables, the matrix -- would look like this, with 0 corresponding to the key fragment "all", and -- 1 corresponding to other key fragments. -- -- j 1 2 3 -- i -- 1 1 1 1 -- 2 0 1 1 -- 3 1 0 1 -- 4 0 0 1 -- 5 1 1 0 -- 6 0 1 0 -- 7 1 0 0 -- 8 0 0 0 -- -- Values of j higher than the number of active subtables are set -- to the string "all". -- -- A key for cfg.protectionCategories is constructed for each value of i. -- The position of the value in the key is determined by the keypos field in -- each subtable. --]] local cats = cfg.protectionCategories for i = 1, 2^noActive do local key = {} for j, t in ipairs(attemptOrder) do if j > noActive then key[t.keypos] = 'all' else local quotient = i / 2 ^ (j - 1) quotient = math.ceil(quotient) if quotient % 2 == 1 then key[t.keypos] = t.val else key[t.keypos] = 'all' end end end key = table.concat(key, '|') local attempt = cats[key] if attempt then return makeCategoryLink(attempt, title.text) end end return '' end function Protection:isIncorrect() if not self:shouldHaveProtectionCategory() then return true end if type(self.expiry) ~= 'number' then return false end local expiry = os.date('*t', self.expiry) -- Avoid checking today.day or os.time(), unless close. https://phabricator.wikimedia.org/T416616 local today = os.date('*t') return (expiry.year < today.year) or (expiry.year == today.year and expiry.month < today.month) or (expiry.year == today.year and expiry.month == today.month and expiry.day < today.day) or (expiry.year == today.year and expiry.month == today.month and expiry.day == today.day and self.expiry < os.time()) end function Protection:isTemplateProtectedNonTemplate() local action, namespace = self.action, self.title.namespace return self.level == 'templateeditor' and ( (action ~= 'edit' and action ~= 'move') or (namespace ~= 10 and namespace ~= 828) ) end function Protection:makeCategoryLinks() local msg = self._cfg.msg local ret = {self:makeProtectionCategory()} if self:isIncorrect() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-incorrect'], self.title.text ) end if self:isTemplateProtectedNonTemplate() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-template'], self.title.text ) end return table.concat(ret) end -------------------------------------------------------------------------------- -- Blurb class -------------------------------------------------------------------------------- local Blurb = {} Blurb.__index = Blurb Blurb.bannerTextFields = { text = true, explanation = true, tooltip = true, alt = true, link = true } function Blurb.new(protectionObj, args, cfg) return setmetatable({ _cfg = cfg, _protectionObj = protectionObj, _args = args }, Blurb) end -- Private methods -- function Blurb:_formatDate(num) -- Formats a Unix timestamp into dd Month, YYYY format. lang = lang or mw.language.getContentLanguage() local success, date = pcall( lang.formatDate, lang, self._cfg.msg['expiry-date-format'] or 'j F Y', '@' .. tostring(num) ) if success then return date end end function Blurb:_getExpandedMessage(msgKey) return self:_substituteParameters(self._cfg.msg[msgKey]) end function Blurb:_substituteParameters(msg) if not self._params then local parameterFuncs = {} parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter parameterFuncs.EDITREQUEST = self._makeEditRequestParameter parameterFuncs.EXPIRY = self._makeExpiryParameter parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter parameterFuncs.IMAGELINK = self._makeImageLinkParameter parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter parameterFuncs.PAGETYPE = self._makePagetypeParameter parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter parameterFuncs.TALKPAGE = self._makeTalkPageParameter parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter parameterFuncs.VANDAL = self._makeVandalTemplateParameter self._params = setmetatable({}, { __index = function (t, k) local param if parameterFuncs[k] then param = parameterFuncs[k](self) end param = param or '' t[k] = param return param end }) end msg = msg:gsub('${(%u+)}', self._params) return msg end function Blurb:_makeCurrentVersionParameter() -- A link to the page history or the move log, depending on the kind of -- protection. local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'move' then -- We need the move log link. return makeFullUrl( 'Special:Log', {type = 'move', page = pagename}, self:_getExpandedMessage('current-version-move-display') ) else -- We need the history link. return makeFullUrl( pagename, {action = 'history'}, self:_getExpandedMessage('current-version-edit-display') ) end end function Blurb:_makeEditRequestParameter() local mEditRequest = require('Module:Submit an edit request') local action = self._protectionObj.action local level = self._protectionObj.level -- Get the edit request type. local requestType if action == 'edit' then if level == 'autoconfirmed' then requestType = 'semi' elseif level == 'extendedconfirmed' then requestType = 'extended' elseif level == 'templateeditor' then requestType = 'template' end end requestType = requestType or 'full' -- Get the display value. local display = self:_getExpandedMessage('edit-request-display') return mEditRequest._link{type = requestType, display = display} end function Blurb:_makeExpiryParameter() local expiry = self._protectionObj.expiry if type(expiry) == 'number' then return self:_formatDate(expiry) else return expiry end end function Blurb:_makeExplanationBlurbParameter() -- Cover special cases first. if self._protectionObj.title.namespace == 8 then -- MediaWiki namespace return self:_getExpandedMessage('explanation-blurb-nounprotect') end -- Get explanation blurb table keys local action = self._protectionObj.action local level = self._protectionObj.level local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject' -- Find the message in the explanation blurb table and substitute any -- parameters. local explanations = self._cfg.explanationBlurbs local msg if explanations[action][level] and explanations[action][level][talkKey] then msg = explanations[action][level][talkKey] elseif explanations[action][level] and explanations[action][level].default then msg = explanations[action][level].default elseif explanations[action].default and explanations[action].default[talkKey] then msg = explanations[action].default[talkKey] elseif explanations[action].default and explanations[action].default.default then msg = explanations[action].default.default else error(string.format( 'could not find explanation blurb for action "%s", level "%s" and talk key "%s"', action, level, talkKey ), 8) end return self:_substituteParameters(msg) end function Blurb:_makeImageLinkParameter() local imageLinks = self._cfg.imageLinks local action = self._protectionObj.action local level = self._protectionObj.level local msg if imageLinks[action][level] then msg = imageLinks[action][level] elseif imageLinks[action].default then msg = imageLinks[action].default else msg = imageLinks.edit.default end return self:_substituteParameters(msg) end function Blurb:_makeIntroBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-blurb-expiry') else return self:_getExpandedMessage('intro-blurb-noexpiry') end end function Blurb:_makeIntroFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-fragment-expiry') else return self:_getExpandedMessage('intro-fragment-noexpiry') end end function Blurb:_makePagetypeParameter() local pagetypes = self._cfg.pagetypes return pagetypes[self._protectionObj.title.namespace] or pagetypes.default or error('no default pagetype defined', 8) end function Blurb:_makeProtectionBlurbParameter() local protectionBlurbs = self._cfg.protectionBlurbs local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionBlurbs[action][level] then msg = protectionBlurbs[action][level] elseif protectionBlurbs[action].default then msg = protectionBlurbs[action].default elseif protectionBlurbs.edit.default then msg = protectionBlurbs.edit.default else error('no protection blurb defined for protectionBlurbs.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionDateParameter() local protectionDate = self._protectionObj.protectionDate if type(protectionDate) == 'number' then return self:_formatDate(protectionDate) else return protectionDate end end function Blurb:_makeProtectionLevelParameter() local protectionLevels = self._cfg.protectionLevels local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionLevels[action][level] then msg = protectionLevels[action][level] elseif protectionLevels[action].default then msg = protectionLevels[action].default elseif protectionLevels.edit.default then msg = protectionLevels.edit.default else error('no protection level defined for protectionLevels.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionLogParameter() local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'autoreview' then -- We need the pending changes log. return makeFullUrl( 'Special:Log', {type = 'stable', page = pagename}, self:_getExpandedMessage('pc-log-display') ) else -- We need the protection log. return makeFullUrl( 'Special:Log', {type = 'protect', page = pagename}, self:_getExpandedMessage('protection-log-display') ) end end function Blurb:_makeTalkPageParameter() return string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[self._protectionObj.title.namespace].talk.name, self._protectionObj.title.text, self._args.section or 'top', self:_getExpandedMessage('talk-page-link-display') ) end function Blurb:_makeTooltipBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-blurb-expiry') else return self:_getExpandedMessage('tooltip-blurb-noexpiry') end end function Blurb:_makeTooltipFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-fragment-expiry') else return self:_getExpandedMessage('tooltip-fragment-noexpiry') end end function Blurb:_makeVandalTemplateParameter() return mw.getCurrentFrame():expandTemplate{ title="vandal-m", args={self._args.user or self._protectionObj.title.baseText} } end -- Public methods -- function Blurb:makeBannerText(key) -- Validate input. if not key or not Blurb.bannerTextFields[key] then error(string.format( '"%s" is not a valid banner config field', tostring(key) ), 2) end -- Generate the text. local msg = self._protectionObj.bannerConfig[key] if type(msg) == 'string' then return self:_substituteParameters(msg) elseif type(msg) == 'function' then msg = msg(self._protectionObj, self._args) if type(msg) ~= 'string' then error(string.format( 'bad output from banner config function with key "%s"' .. ' (expected string, got %s)', tostring(key), type(msg) ), 4) end return self:_substituteParameters(msg) end end -------------------------------------------------------------------------------- -- BannerTemplate class -------------------------------------------------------------------------------- local BannerTemplate = {} BannerTemplate.__index = BannerTemplate function BannerTemplate.new(protectionObj, cfg) local obj = {} obj._cfg = cfg -- Set the image filename. local imageFilename = protectionObj.bannerConfig.image if imageFilename then obj._imageFilename = imageFilename else -- If an image filename isn't specified explicitly in the banner config, -- generate it from the protection status and the namespace. local action = protectionObj.action local level = protectionObj.level local namespace = protectionObj.title.namespace local reason = protectionObj.reason -- Deal with special cases first. if ( namespace == 10 or namespace == 828 or reason and obj._cfg.indefImageReasons[reason] ) and action == 'edit' and level == 'sysop' and not protectionObj:isTemporary() then -- Fully protected modules and templates get the special red "indef" -- padlock. obj._imageFilename = obj._cfg.msg['image-filename-indef'] else -- Deal with regular protection types. local images = obj._cfg.images if images[action] then if images[action][level] then obj._imageFilename = images[action][level] elseif images[action].default then obj._imageFilename = images[action].default end end end end return setmetatable(obj, BannerTemplate) end function BannerTemplate:renderImage() local filename = self._imageFilename or self._cfg.msg['image-filename-default'] or 'Transparent.gif' return makeFileLink{ file = filename, size = (self.imageWidth or 20) .. 'px', alt = self._imageAlt, link = self._imageLink, caption = self.imageCaption } end -------------------------------------------------------------------------------- -- Banner class -------------------------------------------------------------------------------- local Banner = setmetatable({}, BannerTemplate) Banner.__index = Banner function Banner.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 40 obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip. obj._reasonText = blurbObj:makeBannerText('text') obj._explanationText = blurbObj:makeBannerText('explanation') obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing. return setmetatable(obj, Banner) end function Banner:__tostring() -- Renders the banner. makeMessageBox = makeMessageBox or require('Module:Message box').main local reasonText = self._reasonText or error('no reason text set', 2) local explanationText = self._explanationText local mbargs = { page = self._page, type = 'protection', image = self:renderImage(), text = string.format( "'''%s'''%s", reasonText, explanationText and '<br />' .. explanationText or '' ) } return makeMessageBox('mbox', mbargs) end -------------------------------------------------------------------------------- -- Padlock class -------------------------------------------------------------------------------- local Padlock = setmetatable({}, BannerTemplate) Padlock.__index = Padlock function Padlock.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 20 obj.imageCaption = blurbObj:makeBannerText('tooltip') obj._imageAlt = blurbObj:makeBannerText('alt') obj._imageLink = blurbObj:makeBannerText('link') obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action] or cfg.padlockIndicatorNames.default or 'pp-default' return setmetatable(obj, Padlock) end function Padlock:__tostring() local frame = mw.getCurrentFrame() -- The nowiki tag helps prevent whitespace at the top of articles. return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{ name = 'indicator', args = {name = self._indicatorName}, content = self:renderImage() } end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- This is used for testing purposes. return { Protection = Protection, Blurb = Blurb, BannerTemplate = BannerTemplate, Banner = Banner, Padlock = Padlock, } end function p._main(args, cfg, title) args = args or {} cfg = cfg or require(CONFIG_MODULE) local protectionObj = Protection.new(args, cfg, title) local ret = {} -- If a page's edit protection is equally or more restrictive than its -- protection from some other action, then don't bother displaying anything -- for the other action (except categories). if not yesno(args.catonly) and (protectionObj.action == 'edit' or args.demolevel or not getReachableNodes( cfg.hierarchy, protectionObj.level )[effectiveProtectionLevel('edit', protectionObj.title)]) then -- Initialise the blurb object local blurbObj = Blurb.new(protectionObj, args, cfg) -- Render the banner if protectionObj:shouldShowLock() then ret[#ret + 1] = tostring( (yesno(args.small) and Padlock or Banner) .new(protectionObj, blurbObj, cfg) ) end end -- Render the categories if yesno(args.category) ~= false then ret[#ret + 1] = protectionObj:makeCategoryLinks() end -- For arbitration enforcement, flagging [[WP:PIA]] pages to enable [[Special:AbuseFilter/1339]] to flag edits to them if protectionObj.level == "extendedconfirmed" then if require("Module:TableTools").inArray(protectionObj.title.talkPageTitle.categories, "Wikipedia pages subject to the extended confirmed restriction related to the Arab-Israeli conflict") then ret[#ret + 1] = "<p class='PIA-flag' style='display:none; visibility:hidden;' title='This page is subject to the extended confirmed restriction related to the Arab-Israeli conflict.'></p>" end end return table.concat(ret) end function p.main(frame, cfg) cfg = cfg or require(CONFIG_MODULE) -- Find default args, if any. local parent = frame.getParent and frame:getParent() local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')] -- Find user args, and use the parent frame if we are being called from a -- wrapper template. getArgs = getArgs or require('Module:Arguments').getArgs local userArgs = getArgs(frame, { parentOnly = defaultArgs, frameOnly = not defaultArgs }) -- Build the args table. User-specified args overwrite default args. local args = {} for k, v in pairs(defaultArgs or {}) do args[k] = v end for k, v in pairs(userArgs) do args[k] = v end return p._main(args, cfg) end return p p8ryzquso3eyufqyguwh2oyqz5eu1l6 વિભાગ:Protected page/config 828 155177 904879 2026-08-30T17:22:32Z en>Primefac 0 per prev, old wrappers moved, removing from this list 904879 Scribunto text/plain -- This module provides configuration data for [[Module:Protection banner]]. return { -------------------------------------------------------------------------------- -- -- BANNER DATA -- -------------------------------------------------------------------------------- --[[ -- Banner data consists of six fields: -- * text - the main protection text that appears at the top of protection -- banners. -- * explanation - the text that appears below the main protection text, used -- to explain the details of the protection. -- * tooltip - the tooltip text you see when you move the mouse over a small -- padlock icon. -- * link - the page that the small padlock icon links to. -- * alt - the alt text for the small padlock icon. This is also used as tooltip -- text for the large protection banners. -- * image - the padlock image used in both protection banners and small padlock -- icons. -- -- The module checks in three separate tables to find a value for each field. -- First it checks the banners table, which has values specific to the reason -- for the page being protected. Then the module checks the defaultBanners -- table, which has values specific to each protection level. Finally, the -- module checks the masterBanner table, which holds data for protection -- templates to use if no data has been found in the previous two tables. -- -- The values in the banner data can take parameters. These are specified -- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name -- enclosed in curly braces). -- -- Available parameters: -- -- ${CURRENTVERSION} - a link to the page history or the move log, with the -- display message "current-version-edit-display" or -- "current-version-move-display". -- -- ${EDITREQUEST} - a link to create an edit request for the current page. -- -- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes -- on the talk page; you may submit a request to ask an administrator to make -- an edit if it is minor or supported by consensus." -- -- ${IMAGELINK} - a link to set the image to, depending on the protection -- action and protection level. -- -- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry -- is set. E.g. "Editing of this page by new or unregistered users is currently -- disabled until dd Month YYYY." -- -- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation -- so that it can be used in run-on sentences. -- -- ${PAGETYPE} - the type of the page, e.g. "article" or "template". -- Defined in the cfg.pagetypes table. -- -- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g. -- "Editing of this page by new or unregistered users is currently disabled" -- -- ${PROTECTIONDATE} - the protection date, if it has been supplied to the -- template. -- -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or -- "semi-protected". -- -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log, -- depending on the protection action. -- -- ${TALKPAGE} - a link to the talk page. If a section is specified, links -- straight to that talk page section. -- -- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to -- create a blurb like "This template is semi-protected", or "This article is -- move-protected until DD Month YYYY". -- -- ${VANDAL} - links for the specified username (or the root page name) -- using Module:Vandal-m. -- -- Functions -- -- For advanced users, it is possible to use Lua functions instead of strings -- in the banner config tables. Using functions gives flexibility that is not -- possible just by using parameters. Functions take two arguments, the -- protection object and the template arguments, and they must output a string. -- -- For example: -- -- text = function (protectionObj, args) -- if protectionObj.level == 'autoconfirmed' then -- return 'foo' -- else -- return 'bar' -- end -- end -- -- Some protection object properties and methods that may be useful: -- protectionObj.action - the protection action -- protectionObj.level - the protection level -- protectionObj.reason - the protection reason -- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set -- to indefinite, and the protection time in unix time if temporary. -- protectionObj.protectionDate - the protection date in unix time, or nil if -- unspecified. -- protectionObj.bannerConfig - the banner config found by the module. Beware -- of editing the config field used by the function, as it could create an -- infinite loop. -- protectionObj:isProtected - returns a boolean showing whether the page is -- protected. -- protectionObj:isTemporary - returns a boolean showing whether the expiry is -- temporary. -- protectionObj:isIncorrect - returns a boolean showing whether the protection -- template is incorrect. --]] -- The master banner data, used if no values have been found in banners or -- defaultBanners. masterBanner = { text = '${INTROBLURB}', explanation = '${EXPLANATIONBLURB}', tooltip = '${TOOLTIPBLURB}', link = '${IMAGELINK}', alt = 'Page ${PROTECTIONLEVEL}' }, -- The default banner data. This holds banner data for different protection -- levels. -- *required* - this table needs edit, move, autoreview and upload subtables. defaultBanners = { edit = {}, move = {}, autoreview = { default = { alt = 'Page protected with pending changes', tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users', image = 'Pending-protection-shackle.svg' } }, upload = {} }, -- The banner data. This holds banner data for different protection reasons. -- In fact, the reasons specified in this table control which reasons are -- valid inputs to the first positional parameter. -- -- There is also a non-standard "description" field that can be used for items -- in this table. This is a description of the protection reason for use in the -- module documentation. -- -- *required* - this table needs edit, move, autoreview and upload subtables. banners = { edit = { blp = { description = 'For pages protected to promote compliance with the' .. ' [[Wikipedia:Biographies of living persons' .. '|biographies of living persons]] policy', text = '${INTROFRAGMENT} to promote compliance with' .. ' [[Wikipedia:Biographies of living persons' .. "|Wikipedia's&nbsp;policy on&nbsp;the&nbsp;biographies" .. ' of&nbsp;living&nbsp;people]].', tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on' .. ' biographies of living persons', }, deceased = { description = 'For user pages of Wikipedia users who are deceased', text = '${INTROFRAGMENT} to prevent vandalism of a deceased' .. ' Wikipedian\'s user page.' .. ' A family member who wishes to edit this user page can use this' .. ' user\'s ${TALKPAGE} or submit a request to [[Wikipedia:VRT|the' .. ' Volunteer Response Team]].', tooltip = '${TOOLTIPFRAGMENT} because this Wikipedian is deceased' }, dmca = { description = 'For pages protected by the Wikimedia Foundation' .. ' due to [[Digital Millennium Copyright Act]] takedown requests', explanation = function (protectionObj, args) local ret = 'Pursuant to a rights owner notice under the Digital' .. ' Millennium Copyright Act (DMCA) regarding some content' .. ' in this article, the Wikimedia Foundation acted under' .. ' applicable law and took down and restricted the content' .. ' in question.' if args.notice then ret = ret .. ' A copy of the received notice can be found here: ' .. args.notice .. '.' end ret = ret .. ' For more information, including websites discussing' .. ' how to file a counter-notice, please see' .. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}." .. "'''Do not remove this template from the article until the" .. " restrictions are withdrawn'''." return ret end, image = 'Office-protection-shackle.svg', link = 'Wikipedia:Protection policy#office', }, dispute = { description = 'For pages protected due to editing disputes', text = function (protectionObj, args) -- Find the value of "disputes". local display = 'disputes' local disputes if args.section then disputes = string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[protectionObj.title.namespace].talk.name, protectionObj.title.text, args.section, display ) else disputes = display end -- Make the blurb, depending on the expiry. local msg if type(protectionObj.expiry) == 'number' then msg = '${INTROFRAGMENT} or until editing %s have been resolved.' else msg = '${INTROFRAGMENT} until editing %s have been resolved.' end return string.format(msg, disputes) end, explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', tooltip = '${TOOLTIPFRAGMENT} due to editing disputes', }, ecp = { description = 'For articles in topic areas authorized by' .. ' [[Wikipedia:Arbitration Committee|ArbCom]] or' .. ' meets the criteria for community use', alt = 'Extended-protected ${PAGETYPE}', }, mainpage = { description = 'For pages protected for being displayed on the [[Main Page]]', text = 'This file is currently' .. ' [[Wikipedia:This page is protected|protected]] from' .. ' editing because it is currently or will soon be displayed' .. ' on the [[Main Page]].', explanation = 'Images on the Main Page are protected due to their high' .. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' .. '<br /><span style="font-size:90%;">' .. "'''Administrators:''' Once this image is definitely off the Main Page," .. ' please unprotect this file, or reduce to semi-protection,' .. ' as appropriate.</span>', }, office = { description = 'For pages protected by the Wikimedia Foundation', text = function (protectionObj, args) local ret = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.' if protectionObj.protectionDate then ret = ret .. ' It has been protected since ${PROTECTIONDATE}.' end return ret end, explanation = "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not remove protection from this" .. " page unless you are authorized by the Wikimedia Foundation to do" .. " so.'''", image = 'Office-protection-shackle.svg', link = 'Wikipedia:Protection policy#office', }, reset = { description = 'For pages protected by the Wikimedia Foundation and' .. ' "reset" to a bare-bones version', text = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.', explanation = function (protectionObj, args) local ret = '' if protectionObj.protectionDate then ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was' else ret = ret .. 'This ${PAGETYPE} has been' end ret = ret .. ' reduced to a' .. ' simplified, "bare bones" version so that it may be completely' .. ' rewritten to ensure it meets the policies of' .. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].' .. ' Standard Wikipedia policies will apply to its rewriting—which' .. ' will eventually be open to all editors—and will be strictly' .. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while' .. ' it is being rebuilt.\n\n' .. 'Any insertion of material directly from' .. ' pre-protection revisions of the ${PAGETYPE} will be removed, as' .. ' will any material added to the ${PAGETYPE} that is not properly' .. ' sourced. The associated talk page(s) were also cleared on the' .. " same date.\n\n" .. "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not override" .. " this action, and do not remove protection from this page," .. " unless you are authorized by the Wikimedia Foundation" .. " to do so. No editor may remove this notice.'''" return ret end, image = 'Office-protection-shackle.svg', link = 'Wikipedia:Protection policy#office', }, sock = { description = 'For pages protected due to' .. ' [[Wikipedia:Sock puppetry|sock puppetry]]', text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of' .. ' [[Wikipedia:Blocking policy|blocked]] or' .. ' [[Wikipedia:Banning policy|banned users]]' .. ' from editing it.', tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' .. ' editing it', }, template = { description = 'For [[Wikipedia:High-risk templates|high-risk]]' .. ' templates and Lua modules', text = 'This is a permanently [[Wikipedia:Protection policy|protected]] ${PAGETYPE},' .. ' as it is [[Wikipedia:High-risk templates|high-risk]].', explanation = 'Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] or' .. ' [[Wikipedia:Template editor|template editor]] to make an edit if' .. ' it is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by' .. ' [[Wikipedia:Consensus|consensus]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' .. ' to prevent vandalism', alt = 'Permanently protected ${PAGETYPE}', }, usertalk = { description = 'For pages protected against disruptive edits by a' .. ' particular user', text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,' .. ' such as abusing the' .. ' &#123;&#123;[[Template:unblock|unblock]]&#125;&#125; template.', explanation = 'If you cannot edit this user talk page and you need to' .. ' make a change or leave a message, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for edits to a protected page' .. '|request an edit]],' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]],' .. ' [[Special:Userlogin|log in]],' .. ' or [[Special:UserLogin/signup|create an account]].', }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism|vandalism]]', text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].', explanation = function (protectionObj, args) local ret = '' if protectionObj.level == 'sysop' then ret = ret .. "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ' end return ret .. '${EXPLANATIONBLURB}' end, tooltip = '${TOOLTIPFRAGMENT} due to vandalism', } }, move = { dispute = { description = 'For pages protected against page moves due to' .. ' disputes over the page title', explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', image = 'Move-protection-shackle.svg' }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism#Page-move vandalism' .. ' |page-move vandalism]]' } }, autoreview = {}, upload = {} }, -------------------------------------------------------------------------------- -- -- GENERAL DATA TABLES -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Protection blurbs -------------------------------------------------------------------------------- -- This table produces the protection blurbs available with the -- ${PROTECTIONBLURB} parameter. It is sorted by protection action and -- protection level, and is checked by the module in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionBlurbs = { edit = { default = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#full|' .. 'protected]] from editing', templateeditor = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#template' .. '|protected]] from editing', autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access' .. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered' .. ' users|unregistered]] users is currently [[Wikipedia:Protection' .. ' policy#semi|disabled]]', extendedconfirmed = 'This ${PAGETYPE} is currently under [[Wikipedia:Protection' .. ' policy#extended|extended confirmed protection]]', }, move = { default = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#Move' .. ' protection|protected]] from [[Help:Moving a page|page moves]]' }, autoreview = { default = 'All edits made to this ${PAGETYPE} by' .. ' [[Wikipedia:User access levels#New users|new]] or' .. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]' .. ' users are currently' .. ' [[Wikipedia:Pending changes|subject to review]]' }, upload = { default = 'Uploading new versions of this ${PAGETYPE} is currently disabled' } }, -------------------------------------------------------------------------------- -- Explanation blurbs -------------------------------------------------------------------------------- -- This table produces the explanation blurbs available with the -- ${EXPLANATIONBLURB} parameter. It is sorted by protection action, -- protection level, and whether the page is a talk page or not. If the page is -- a talk page it will have a talk key of "talk"; otherwise it will have a talk -- key of "subject". The table is checked in the following order: -- 1. page's protection action, page's protection level, page's talk key -- 2. page's protection action, page's protection level, default talk key -- 3. page's protection action, default protection level, page's talk key -- 4. page's protection action, default protection level, default talk key -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. explanationBlurbs = { edit = { autoconfirmed = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', }, extendedconfirmed = { default = 'Extended confirmed protection prevents edits from all unregistered editors' .. ' and registered users with fewer than 30 days tenure and 500 edits.' .. ' The [[Wikipedia:Protection policy#extended|policy on community use]]' .. ' specifies that extended confirmed protection can be applied to combat' .. ' disruption, if semi-protection has proven to be ineffective.' .. ' Extended confirmed protection may also be applied to enforce' .. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].' .. ' Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask for uncontroversial changes supported by' .. ' [[Wikipedia:Consensus|consensus]].' }, default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]]. You may also [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|request]] that this page be unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' You may [[Wikipedia:Requests for page' .. ' protection#Current requests for edits to a protected page|request an' .. ' edit]] to this page, or [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|ask]] for it to be unprotected.' } }, move = { default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves on the' .. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves at' .. ' [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.' } }, autoreview = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Edits to this ${PAGETYPE} by new and unregistered users' .. ' will not be visible to readers until they are accepted by' .. ' a reviewer. To avoid the need for your edits to be' .. ' reviewed, you may' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].' }, }, upload = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but new versions of the file' .. ' cannot be uploaded until it is unprotected. You can' .. ' request that a new version be uploaded by using a' .. ' [[Wikipedia:Edit requests|protected edit request]], or you' .. ' can [[Wikipedia:Requests for page protection|request]]' .. ' that the file be unprotected.' } } }, -------------------------------------------------------------------------------- -- Protection levels -------------------------------------------------------------------------------- -- This table provides the data for the ${PROTECTIONLEVEL} parameter, which -- produces a short label for different protection levels. It is sorted by -- protection action and protection level, and is checked in the following -- order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionLevels = { edit = { default = 'protected', templateeditor = 'template-protected', extendedconfirmed = 'extended-confirmed-protected', autoconfirmed = 'semi-protected', }, move = { default = 'move-protected' }, autoreview = { }, upload = { default = 'upload-protected' } }, -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- This table lists different padlock images for each protection action and -- protection level. It is used if an image is not specified in any of the -- banner data tables, and if the page does not satisfy the conditions for using -- the ['image-filename-indef'] image. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level images = { edit = { default = 'Full-protection-shackle.svg', templateeditor = 'Template-protection-shackle.svg', extendedconfirmed = 'Extended-protection-shackle.svg', autoconfirmed = 'Semi-protection-shackle.svg' }, move = { default = 'Move-protection-shackle.svg', }, autoreview = { default = 'Pending-protection-shackle.svg' }, upload = { default = 'Upload-protection-shackle.svg' } }, -- Pages with a reason specified in this table will show the special "indef" -- padlock, defined in the 'image-filename-indef' message, if no expiry is set. indefImageReasons = { template = true }, -------------------------------------------------------------------------------- -- Image links -------------------------------------------------------------------------------- -- This table provides the data for the ${IMAGELINK} parameter, which gets -- the image link for small padlock icons based on the page's protection action -- and protection level. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. imageLinks = { edit = { default = 'Wikipedia:Protection policy#full', templateeditor = 'Wikipedia:Protection policy#template', extendedconfirmed = 'Wikipedia:Protection policy#extended', autoconfirmed = 'Wikipedia:Protection policy#semi' }, move = { default = 'Wikipedia:Protection policy#move' }, autoreview = { default = 'Wikipedia:Protection policy#pending' }, upload = { default = 'Wikipedia:Protection policy#upload' } }, -------------------------------------------------------------------------------- -- Padlock indicator names -------------------------------------------------------------------------------- -- This table provides the "name" attribute for the <indicator> extension tag -- with which small padlock icons are generated. All indicator tags on a page -- are displayed in alphabetical order based on this attribute, and with -- indicator tags with duplicate names, the last tag on the page wins. -- The attribute is chosen based on the protection action; table keys must be a -- protection action name or the string "default". padlockIndicatorNames = { autoreview = 'pp-autoreview', default = 'pp-default' }, -------------------------------------------------------------------------------- -- Protection categories -------------------------------------------------------------------------------- --[[ -- The protection categories are stored in the protectionCategories table. -- Keys to this table are made up of the following strings: -- -- 1. the expiry date -- 2. the namespace -- 3. the protection reason (e.g. "dispute" or "vandalism") -- 4. the protection level (e.g. "sysop" or "autoconfirmed") -- 5. the action (e.g. "edit" or "move") -- -- When the module looks up a category in the table, first it will will check to -- see a key exists that corresponds to all five parameters. For example, a -- user page semi-protected from vandalism for two weeks would have the key -- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module -- changes the first part of the key to "all" and checks the table again. It -- keeps checking increasingly generic key combinations until it finds the -- field, or until it reaches the key "all-all-all-all-all". -- -- The module uses a binary matrix to determine the order in which to search. -- This is best demonstrated by a table. In this table, the "0" values -- represent "all", and the "1" values represent the original data (e.g. -- "indef" or "file" or "vandalism"). -- -- expiry namespace reason level action -- order -- 1 1 1 1 1 1 -- 2 0 1 1 1 1 -- 3 1 0 1 1 1 -- 4 0 0 1 1 1 -- 5 1 1 0 1 1 -- 6 0 1 0 1 1 -- 7 1 0 0 1 1 -- 8 0 0 0 1 1 -- 9 1 1 1 0 1 -- 10 0 1 1 0 1 -- 11 1 0 1 0 1 -- 12 0 0 1 0 1 -- 13 1 1 0 0 1 -- 14 0 1 0 0 1 -- 15 1 0 0 0 1 -- 16 0 0 0 0 1 -- 17 1 1 1 1 0 -- 18 0 1 1 1 0 -- 19 1 0 1 1 0 -- 20 0 0 1 1 0 -- 21 1 1 0 1 0 -- 22 0 1 0 1 0 -- 23 1 0 0 1 0 -- 24 0 0 0 1 0 -- 25 1 1 1 0 0 -- 26 0 1 1 0 0 -- 27 1 0 1 0 0 -- 28 0 0 1 0 0 -- 29 1 1 0 0 0 -- 30 0 1 0 0 0 -- 31 1 0 0 0 0 -- 32 0 0 0 0 0 -- -- In this scheme the action has the highest priority, as it is the last -- to change, and the expiry has the least priority, as it changes the most. -- The priorities of the expiry, the protection level and the action are -- fixed, but the priorities of the reason and the namespace can be swapped -- through the use of the cfg.bannerDataNamespaceHasPriority table. --]] -- If the reason specified to the template is listed in this table, -- namespace data will take priority over reason data in the protectionCategories -- table. reasonsWithNamespacePriority = { vandalism = true, }, -- The string to use as a namespace key for the protectionCategories table for each -- namespace number. categoryNamespaceKeys = { [ 2] = 'user', [ 3] = 'user', [ 4] = 'project', [ 6] = 'file', [ 8] = 'mediawiki', [ 10] = 'template', [ 12] = 'project', [ 14] = 'category', [100] = 'portal', [828] = 'module', }, protectionCategories = { ['all|all|all|all|all'] = 'Wikipedia fully protected pages', ['all|all|office|all|all'] = 'Wikipedia Office-protected pages', ['all|all|reset|all|all'] = 'Wikipedia Office-protected pages', ['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages', ['all|all|mainpage|all|all'] = 'Wikipedia fully protected main page files', ['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|template|all|all|edit'] = 'Wikipedia fully protected templates', ['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages', ['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages', ['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people', ['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people', ['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute', ['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users', ['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism', ['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories', ['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files', ['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals', ['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages', ['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages', ['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates', ['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages', ['all|all|all|templateeditor|move'] = 'Wikipedia template-protected pages other than templates and modules', ['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules', ['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates', ['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates ['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people', ['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people', ['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute', ['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users', ['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism', ['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories', ['all|file|all|sysop|edit'] = 'Wikipedia fully protected files', ['all|project|all|sysop|edit'] = 'Wikipedia fully protected project pages', ['all|talk|all|sysop|edit'] = 'Wikipedia fully protected talk pages', ['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|extendedconfirmed|move'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates', ['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages', ['all|module|all|all|edit'] = 'Wikipedia fully protected modules', ['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules', ['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules', ['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules', ['all|all|all|sysop|move'] = 'Wikipedia move-protected pages', ['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages', ['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute', ['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism', ['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals', ['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages', ['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages', ['all|template|all|sysop|move'] = 'Wikipedia move-protected templates', ['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages', ['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages', ['all|file|all|all|upload'] = 'Wikipedia upload-protected files', }, -------------------------------------------------------------------------------- -- Expiry category config -------------------------------------------------------------------------------- -- This table configures the expiry category behaviour for each protection -- action. -- * If set to true, setting that action will always categorise the page if -- an expiry parameter is not set. -- * If set to false, setting that action will never categorise the page. -- * If set to nil, the module will categorise the page if: -- 1) an expiry parameter is not set, and -- 2) a reason is provided, and -- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck -- table. expiryCheckActions = { edit = nil, move = false, autoreview = true, upload = false }, reasonsWithoutExpiryCheck = { blp = true, template = true, }, -------------------------------------------------------------------------------- -- Pagetypes -------------------------------------------------------------------------------- -- This table produces the page types available with the ${PAGETYPE} parameter. -- Keys are namespace numbers, or the string "default" for the default value. pagetypes = { [0] = 'article', [6] = 'file', [10] = 'template', [14] = 'category', [828] = 'module', default = 'page' }, -------------------------------------------------------------------------------- -- Strings marking indefinite protection -------------------------------------------------------------------------------- -- This table contains values passed to the expiry parameter that mean the page -- is protected indefinitely. indefStrings = { ['indef'] = true, ['indefinite'] = true, ['indefinitely'] = true, ['infinite'] = true, }, -------------------------------------------------------------------------------- -- Group hierarchy -------------------------------------------------------------------------------- -- This table maps each group to all groups that have a superset of the original -- group's page editing permissions. hierarchy = { sysop = {}, reviewer = {'sysop'}, filemover = {'sysop'}, templateeditor = {'sysop'}, extendedconfirmed = {'sysop'}, autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'}, user = {'autoconfirmed'}, ['*'] = {'user'} }, -------------------------------------------------------------------------------- -- Wrapper templates and their default arguments -------------------------------------------------------------------------------- -- This table contains wrapper templates used with the module, and their -- default arguments. Templates specified in this table should contain the -- following invocation, and no other template content: -- -- {{#invoke:Protection banner|main}} -- -- If other content is desired, it can be added between -- <noinclude>...</noinclude> tags. -- -- When a user calls one of these wrapper templates, they will use the -- default arguments automatically. However, users can override any of the -- arguments. wrappers = { ['Template:Protected page'] = {}, ['Template:Extended confirmed–protected'] = {'ecp'}, ['Template:Protected biography of a living person'] = {'blp'}, ['Template:Protected due to a dispute'] = {'dispute'}, ['Template:Move-protected'] = {action = 'move', catonly = 'yes'}, ['Template:Move-protected due to a dispute'] = {'dispute', action = 'move', catonly = 'yes'}, ['Template:Move-protected due to vandalism'] = {'vandalism', action = 'move', catonly = 'yes'}, ['Template:Office-protected'] = {'office'}, ['Template:Pending changes–protected'] = {action = 'autoreview', small = true}, ['Template:Semi-protected indefinitely'] = {small = true}, ['Template:Protected due to sockpuppetry'] = {'sock'}, ['Template:Template-protected'] = {'template', small = true}, ['Template:Upload-protected'] = {action = 'upload'}, ['Template:Protected talk page of a blocked user'] = {'usertalk'}, ['Template:Protected due to vandalism'] = {'vandalism'}, }, -------------------------------------------------------------------------------- -- -- MESSAGES -- -------------------------------------------------------------------------------- msg = { -------------------------------------------------------------------------------- -- Intro blurb and intro fragment -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${INTROBLURB} and -- ${INTROFRAGMENT} parameters. If the protection is temporary they use the -- intro-blurb-expiry or intro-fragment-expiry, and if not they use -- intro-blurb-noexpiry or intro-fragment-noexpiry. -- It is possible to use banner parameters in these messages. ['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.', ['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.', ['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},', ['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}', -------------------------------------------------------------------------------- -- Tooltip blurb -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${TOOLTIPBLURB} parameter. -- If the protection is temporary the tooltip-blurb-expiry message is used, and -- if not the tooltip-blurb-noexpiry message is used. -- It is possible to use banner parameters in these messages. ['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.', ['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.', ['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},', ['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', -------------------------------------------------------------------------------- -- Special explanation blurb -------------------------------------------------------------------------------- -- An explanation blurb for pages that cannot be unprotected, e.g. for pages -- in the MediaWiki namespace. -- It is possible to use banner parameters in this message. ['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]].', -------------------------------------------------------------------------------- -- Protection log display values -------------------------------------------------------------------------------- -- These messages determine the display values for the protection log link -- or the pending changes log link produced by the ${PROTECTIONLOG} parameter. -- It is possible to use banner parameters in these messages. ['protection-log-display'] = 'protection log', ['pc-log-display'] = 'pending changes log', -------------------------------------------------------------------------------- -- Current version display values -------------------------------------------------------------------------------- -- These messages determine the display values for the page history link -- or the move log link produced by the ${CURRENTVERSION} parameter. -- It is possible to use banner parameters in these messages. ['current-version-move-display'] = 'current title', ['current-version-edit-display'] = 'current version', -------------------------------------------------------------------------------- -- Talk page -------------------------------------------------------------------------------- -- This message determines the display value of the talk page link produced -- with the ${TALKPAGE} parameter. -- It is possible to use banner parameters in this message. ['talk-page-link-display'] = 'talk page', -------------------------------------------------------------------------------- -- Edit requests -------------------------------------------------------------------------------- -- This message determines the display value of the edit request link produced -- with the ${EDITREQUEST} parameter. -- It is possible to use banner parameters in this message. ['edit-request-display'] = 'submit an edit request', -------------------------------------------------------------------------------- -- Expiry date format -------------------------------------------------------------------------------- -- This is the format for the blurb expiry date. It should be valid input for -- the first parameter of the #time parser function. ['expiry-date-format'] = 'F j, Y "at" H:i e', -------------------------------------------------------------------------------- -- Tracking categories -------------------------------------------------------------------------------- -- These messages determine which tracking categories the module outputs. ['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates', ['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules', -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- These are images that are not defined by their protection action and protection level. ['image-filename-indef'] = 'Full-protection-shackle.svg', ['image-filename-default'] = 'Transparent.gif', -------------------------------------------------------------------------------- -- End messages -------------------------------------------------------------------------------- } -------------------------------------------------------------------------------- -- End configuration -------------------------------------------------------------------------------- } pj6zo6l44p4bk4pwax9tlbkyf7cpx34 904880 904879 2026-09-08T04:32:28Z KartikMistry 10383 [[:en:Module:Protected_page/config]] માંથી આયાત કરેલ ૧ પુનરાવર્તન 904879 Scribunto text/plain -- This module provides configuration data for [[Module:Protection banner]]. return { -------------------------------------------------------------------------------- -- -- BANNER DATA -- -------------------------------------------------------------------------------- --[[ -- Banner data consists of six fields: -- * text - the main protection text that appears at the top of protection -- banners. -- * explanation - the text that appears below the main protection text, used -- to explain the details of the protection. -- * tooltip - the tooltip text you see when you move the mouse over a small -- padlock icon. -- * link - the page that the small padlock icon links to. -- * alt - the alt text for the small padlock icon. This is also used as tooltip -- text for the large protection banners. -- * image - the padlock image used in both protection banners and small padlock -- icons. -- -- The module checks in three separate tables to find a value for each field. -- First it checks the banners table, which has values specific to the reason -- for the page being protected. Then the module checks the defaultBanners -- table, which has values specific to each protection level. Finally, the -- module checks the masterBanner table, which holds data for protection -- templates to use if no data has been found in the previous two tables. -- -- The values in the banner data can take parameters. These are specified -- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name -- enclosed in curly braces). -- -- Available parameters: -- -- ${CURRENTVERSION} - a link to the page history or the move log, with the -- display message "current-version-edit-display" or -- "current-version-move-display". -- -- ${EDITREQUEST} - a link to create an edit request for the current page. -- -- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes -- on the talk page; you may submit a request to ask an administrator to make -- an edit if it is minor or supported by consensus." -- -- ${IMAGELINK} - a link to set the image to, depending on the protection -- action and protection level. -- -- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry -- is set. E.g. "Editing of this page by new or unregistered users is currently -- disabled until dd Month YYYY." -- -- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation -- so that it can be used in run-on sentences. -- -- ${PAGETYPE} - the type of the page, e.g. "article" or "template". -- Defined in the cfg.pagetypes table. -- -- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g. -- "Editing of this page by new or unregistered users is currently disabled" -- -- ${PROTECTIONDATE} - the protection date, if it has been supplied to the -- template. -- -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or -- "semi-protected". -- -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log, -- depending on the protection action. -- -- ${TALKPAGE} - a link to the talk page. If a section is specified, links -- straight to that talk page section. -- -- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to -- create a blurb like "This template is semi-protected", or "This article is -- move-protected until DD Month YYYY". -- -- ${VANDAL} - links for the specified username (or the root page name) -- using Module:Vandal-m. -- -- Functions -- -- For advanced users, it is possible to use Lua functions instead of strings -- in the banner config tables. Using functions gives flexibility that is not -- possible just by using parameters. Functions take two arguments, the -- protection object and the template arguments, and they must output a string. -- -- For example: -- -- text = function (protectionObj, args) -- if protectionObj.level == 'autoconfirmed' then -- return 'foo' -- else -- return 'bar' -- end -- end -- -- Some protection object properties and methods that may be useful: -- protectionObj.action - the protection action -- protectionObj.level - the protection level -- protectionObj.reason - the protection reason -- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set -- to indefinite, and the protection time in unix time if temporary. -- protectionObj.protectionDate - the protection date in unix time, or nil if -- unspecified. -- protectionObj.bannerConfig - the banner config found by the module. Beware -- of editing the config field used by the function, as it could create an -- infinite loop. -- protectionObj:isProtected - returns a boolean showing whether the page is -- protected. -- protectionObj:isTemporary - returns a boolean showing whether the expiry is -- temporary. -- protectionObj:isIncorrect - returns a boolean showing whether the protection -- template is incorrect. --]] -- The master banner data, used if no values have been found in banners or -- defaultBanners. masterBanner = { text = '${INTROBLURB}', explanation = '${EXPLANATIONBLURB}', tooltip = '${TOOLTIPBLURB}', link = '${IMAGELINK}', alt = 'Page ${PROTECTIONLEVEL}' }, -- The default banner data. This holds banner data for different protection -- levels. -- *required* - this table needs edit, move, autoreview and upload subtables. defaultBanners = { edit = {}, move = {}, autoreview = { default = { alt = 'Page protected with pending changes', tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users', image = 'Pending-protection-shackle.svg' } }, upload = {} }, -- The banner data. This holds banner data for different protection reasons. -- In fact, the reasons specified in this table control which reasons are -- valid inputs to the first positional parameter. -- -- There is also a non-standard "description" field that can be used for items -- in this table. This is a description of the protection reason for use in the -- module documentation. -- -- *required* - this table needs edit, move, autoreview and upload subtables. banners = { edit = { blp = { description = 'For pages protected to promote compliance with the' .. ' [[Wikipedia:Biographies of living persons' .. '|biographies of living persons]] policy', text = '${INTROFRAGMENT} to promote compliance with' .. ' [[Wikipedia:Biographies of living persons' .. "|Wikipedia's&nbsp;policy on&nbsp;the&nbsp;biographies" .. ' of&nbsp;living&nbsp;people]].', tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on' .. ' biographies of living persons', }, deceased = { description = 'For user pages of Wikipedia users who are deceased', text = '${INTROFRAGMENT} to prevent vandalism of a deceased' .. ' Wikipedian\'s user page.' .. ' A family member who wishes to edit this user page can use this' .. ' user\'s ${TALKPAGE} or submit a request to [[Wikipedia:VRT|the' .. ' Volunteer Response Team]].', tooltip = '${TOOLTIPFRAGMENT} because this Wikipedian is deceased' }, dmca = { description = 'For pages protected by the Wikimedia Foundation' .. ' due to [[Digital Millennium Copyright Act]] takedown requests', explanation = function (protectionObj, args) local ret = 'Pursuant to a rights owner notice under the Digital' .. ' Millennium Copyright Act (DMCA) regarding some content' .. ' in this article, the Wikimedia Foundation acted under' .. ' applicable law and took down and restricted the content' .. ' in question.' if args.notice then ret = ret .. ' A copy of the received notice can be found here: ' .. args.notice .. '.' end ret = ret .. ' For more information, including websites discussing' .. ' how to file a counter-notice, please see' .. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}." .. "'''Do not remove this template from the article until the" .. " restrictions are withdrawn'''." return ret end, image = 'Office-protection-shackle.svg', link = 'Wikipedia:Protection policy#office', }, dispute = { description = 'For pages protected due to editing disputes', text = function (protectionObj, args) -- Find the value of "disputes". local display = 'disputes' local disputes if args.section then disputes = string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[protectionObj.title.namespace].talk.name, protectionObj.title.text, args.section, display ) else disputes = display end -- Make the blurb, depending on the expiry. local msg if type(protectionObj.expiry) == 'number' then msg = '${INTROFRAGMENT} or until editing %s have been resolved.' else msg = '${INTROFRAGMENT} until editing %s have been resolved.' end return string.format(msg, disputes) end, explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', tooltip = '${TOOLTIPFRAGMENT} due to editing disputes', }, ecp = { description = 'For articles in topic areas authorized by' .. ' [[Wikipedia:Arbitration Committee|ArbCom]] or' .. ' meets the criteria for community use', alt = 'Extended-protected ${PAGETYPE}', }, mainpage = { description = 'For pages protected for being displayed on the [[Main Page]]', text = 'This file is currently' .. ' [[Wikipedia:This page is protected|protected]] from' .. ' editing because it is currently or will soon be displayed' .. ' on the [[Main Page]].', explanation = 'Images on the Main Page are protected due to their high' .. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' .. '<br /><span style="font-size:90%;">' .. "'''Administrators:''' Once this image is definitely off the Main Page," .. ' please unprotect this file, or reduce to semi-protection,' .. ' as appropriate.</span>', }, office = { description = 'For pages protected by the Wikimedia Foundation', text = function (protectionObj, args) local ret = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.' if protectionObj.protectionDate then ret = ret .. ' It has been protected since ${PROTECTIONDATE}.' end return ret end, explanation = "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not remove protection from this" .. " page unless you are authorized by the Wikimedia Foundation to do" .. " so.'''", image = 'Office-protection-shackle.svg', link = 'Wikipedia:Protection policy#office', }, reset = { description = 'For pages protected by the Wikimedia Foundation and' .. ' "reset" to a bare-bones version', text = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.', explanation = function (protectionObj, args) local ret = '' if protectionObj.protectionDate then ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was' else ret = ret .. 'This ${PAGETYPE} has been' end ret = ret .. ' reduced to a' .. ' simplified, "bare bones" version so that it may be completely' .. ' rewritten to ensure it meets the policies of' .. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].' .. ' Standard Wikipedia policies will apply to its rewriting—which' .. ' will eventually be open to all editors—and will be strictly' .. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while' .. ' it is being rebuilt.\n\n' .. 'Any insertion of material directly from' .. ' pre-protection revisions of the ${PAGETYPE} will be removed, as' .. ' will any material added to the ${PAGETYPE} that is not properly' .. ' sourced. The associated talk page(s) were also cleared on the' .. " same date.\n\n" .. "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not override" .. " this action, and do not remove protection from this page," .. " unless you are authorized by the Wikimedia Foundation" .. " to do so. No editor may remove this notice.'''" return ret end, image = 'Office-protection-shackle.svg', link = 'Wikipedia:Protection policy#office', }, sock = { description = 'For pages protected due to' .. ' [[Wikipedia:Sock puppetry|sock puppetry]]', text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of' .. ' [[Wikipedia:Blocking policy|blocked]] or' .. ' [[Wikipedia:Banning policy|banned users]]' .. ' from editing it.', tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' .. ' editing it', }, template = { description = 'For [[Wikipedia:High-risk templates|high-risk]]' .. ' templates and Lua modules', text = 'This is a permanently [[Wikipedia:Protection policy|protected]] ${PAGETYPE},' .. ' as it is [[Wikipedia:High-risk templates|high-risk]].', explanation = 'Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] or' .. ' [[Wikipedia:Template editor|template editor]] to make an edit if' .. ' it is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by' .. ' [[Wikipedia:Consensus|consensus]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' .. ' to prevent vandalism', alt = 'Permanently protected ${PAGETYPE}', }, usertalk = { description = 'For pages protected against disruptive edits by a' .. ' particular user', text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,' .. ' such as abusing the' .. ' &#123;&#123;[[Template:unblock|unblock]]&#125;&#125; template.', explanation = 'If you cannot edit this user talk page and you need to' .. ' make a change or leave a message, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for edits to a protected page' .. '|request an edit]],' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]],' .. ' [[Special:Userlogin|log in]],' .. ' or [[Special:UserLogin/signup|create an account]].', }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism|vandalism]]', text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].', explanation = function (protectionObj, args) local ret = '' if protectionObj.level == 'sysop' then ret = ret .. "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ' end return ret .. '${EXPLANATIONBLURB}' end, tooltip = '${TOOLTIPFRAGMENT} due to vandalism', } }, move = { dispute = { description = 'For pages protected against page moves due to' .. ' disputes over the page title', explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', image = 'Move-protection-shackle.svg' }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism#Page-move vandalism' .. ' |page-move vandalism]]' } }, autoreview = {}, upload = {} }, -------------------------------------------------------------------------------- -- -- GENERAL DATA TABLES -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Protection blurbs -------------------------------------------------------------------------------- -- This table produces the protection blurbs available with the -- ${PROTECTIONBLURB} parameter. It is sorted by protection action and -- protection level, and is checked by the module in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionBlurbs = { edit = { default = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#full|' .. 'protected]] from editing', templateeditor = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#template' .. '|protected]] from editing', autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access' .. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered' .. ' users|unregistered]] users is currently [[Wikipedia:Protection' .. ' policy#semi|disabled]]', extendedconfirmed = 'This ${PAGETYPE} is currently under [[Wikipedia:Protection' .. ' policy#extended|extended confirmed protection]]', }, move = { default = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#Move' .. ' protection|protected]] from [[Help:Moving a page|page moves]]' }, autoreview = { default = 'All edits made to this ${PAGETYPE} by' .. ' [[Wikipedia:User access levels#New users|new]] or' .. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]' .. ' users are currently' .. ' [[Wikipedia:Pending changes|subject to review]]' }, upload = { default = 'Uploading new versions of this ${PAGETYPE} is currently disabled' } }, -------------------------------------------------------------------------------- -- Explanation blurbs -------------------------------------------------------------------------------- -- This table produces the explanation blurbs available with the -- ${EXPLANATIONBLURB} parameter. It is sorted by protection action, -- protection level, and whether the page is a talk page or not. If the page is -- a talk page it will have a talk key of "talk"; otherwise it will have a talk -- key of "subject". The table is checked in the following order: -- 1. page's protection action, page's protection level, page's talk key -- 2. page's protection action, page's protection level, default talk key -- 3. page's protection action, default protection level, page's talk key -- 4. page's protection action, default protection level, default talk key -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. explanationBlurbs = { edit = { autoconfirmed = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', }, extendedconfirmed = { default = 'Extended confirmed protection prevents edits from all unregistered editors' .. ' and registered users with fewer than 30 days tenure and 500 edits.' .. ' The [[Wikipedia:Protection policy#extended|policy on community use]]' .. ' specifies that extended confirmed protection can be applied to combat' .. ' disruption, if semi-protection has proven to be ineffective.' .. ' Extended confirmed protection may also be applied to enforce' .. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].' .. ' Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask for uncontroversial changes supported by' .. ' [[Wikipedia:Consensus|consensus]].' }, default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]]. You may also [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|request]] that this page be unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' You may [[Wikipedia:Requests for page' .. ' protection#Current requests for edits to a protected page|request an' .. ' edit]] to this page, or [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|ask]] for it to be unprotected.' } }, move = { default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves on the' .. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves at' .. ' [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.' } }, autoreview = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Edits to this ${PAGETYPE} by new and unregistered users' .. ' will not be visible to readers until they are accepted by' .. ' a reviewer. To avoid the need for your edits to be' .. ' reviewed, you may' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].' }, }, upload = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but new versions of the file' .. ' cannot be uploaded until it is unprotected. You can' .. ' request that a new version be uploaded by using a' .. ' [[Wikipedia:Edit requests|protected edit request]], or you' .. ' can [[Wikipedia:Requests for page protection|request]]' .. ' that the file be unprotected.' } } }, -------------------------------------------------------------------------------- -- Protection levels -------------------------------------------------------------------------------- -- This table provides the data for the ${PROTECTIONLEVEL} parameter, which -- produces a short label for different protection levels. It is sorted by -- protection action and protection level, and is checked in the following -- order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionLevels = { edit = { default = 'protected', templateeditor = 'template-protected', extendedconfirmed = 'extended-confirmed-protected', autoconfirmed = 'semi-protected', }, move = { default = 'move-protected' }, autoreview = { }, upload = { default = 'upload-protected' } }, -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- This table lists different padlock images for each protection action and -- protection level. It is used if an image is not specified in any of the -- banner data tables, and if the page does not satisfy the conditions for using -- the ['image-filename-indef'] image. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level images = { edit = { default = 'Full-protection-shackle.svg', templateeditor = 'Template-protection-shackle.svg', extendedconfirmed = 'Extended-protection-shackle.svg', autoconfirmed = 'Semi-protection-shackle.svg' }, move = { default = 'Move-protection-shackle.svg', }, autoreview = { default = 'Pending-protection-shackle.svg' }, upload = { default = 'Upload-protection-shackle.svg' } }, -- Pages with a reason specified in this table will show the special "indef" -- padlock, defined in the 'image-filename-indef' message, if no expiry is set. indefImageReasons = { template = true }, -------------------------------------------------------------------------------- -- Image links -------------------------------------------------------------------------------- -- This table provides the data for the ${IMAGELINK} parameter, which gets -- the image link for small padlock icons based on the page's protection action -- and protection level. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. imageLinks = { edit = { default = 'Wikipedia:Protection policy#full', templateeditor = 'Wikipedia:Protection policy#template', extendedconfirmed = 'Wikipedia:Protection policy#extended', autoconfirmed = 'Wikipedia:Protection policy#semi' }, move = { default = 'Wikipedia:Protection policy#move' }, autoreview = { default = 'Wikipedia:Protection policy#pending' }, upload = { default = 'Wikipedia:Protection policy#upload' } }, -------------------------------------------------------------------------------- -- Padlock indicator names -------------------------------------------------------------------------------- -- This table provides the "name" attribute for the <indicator> extension tag -- with which small padlock icons are generated. All indicator tags on a page -- are displayed in alphabetical order based on this attribute, and with -- indicator tags with duplicate names, the last tag on the page wins. -- The attribute is chosen based on the protection action; table keys must be a -- protection action name or the string "default". padlockIndicatorNames = { autoreview = 'pp-autoreview', default = 'pp-default' }, -------------------------------------------------------------------------------- -- Protection categories -------------------------------------------------------------------------------- --[[ -- The protection categories are stored in the protectionCategories table. -- Keys to this table are made up of the following strings: -- -- 1. the expiry date -- 2. the namespace -- 3. the protection reason (e.g. "dispute" or "vandalism") -- 4. the protection level (e.g. "sysop" or "autoconfirmed") -- 5. the action (e.g. "edit" or "move") -- -- When the module looks up a category in the table, first it will will check to -- see a key exists that corresponds to all five parameters. For example, a -- user page semi-protected from vandalism for two weeks would have the key -- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module -- changes the first part of the key to "all" and checks the table again. It -- keeps checking increasingly generic key combinations until it finds the -- field, or until it reaches the key "all-all-all-all-all". -- -- The module uses a binary matrix to determine the order in which to search. -- This is best demonstrated by a table. In this table, the "0" values -- represent "all", and the "1" values represent the original data (e.g. -- "indef" or "file" or "vandalism"). -- -- expiry namespace reason level action -- order -- 1 1 1 1 1 1 -- 2 0 1 1 1 1 -- 3 1 0 1 1 1 -- 4 0 0 1 1 1 -- 5 1 1 0 1 1 -- 6 0 1 0 1 1 -- 7 1 0 0 1 1 -- 8 0 0 0 1 1 -- 9 1 1 1 0 1 -- 10 0 1 1 0 1 -- 11 1 0 1 0 1 -- 12 0 0 1 0 1 -- 13 1 1 0 0 1 -- 14 0 1 0 0 1 -- 15 1 0 0 0 1 -- 16 0 0 0 0 1 -- 17 1 1 1 1 0 -- 18 0 1 1 1 0 -- 19 1 0 1 1 0 -- 20 0 0 1 1 0 -- 21 1 1 0 1 0 -- 22 0 1 0 1 0 -- 23 1 0 0 1 0 -- 24 0 0 0 1 0 -- 25 1 1 1 0 0 -- 26 0 1 1 0 0 -- 27 1 0 1 0 0 -- 28 0 0 1 0 0 -- 29 1 1 0 0 0 -- 30 0 1 0 0 0 -- 31 1 0 0 0 0 -- 32 0 0 0 0 0 -- -- In this scheme the action has the highest priority, as it is the last -- to change, and the expiry has the least priority, as it changes the most. -- The priorities of the expiry, the protection level and the action are -- fixed, but the priorities of the reason and the namespace can be swapped -- through the use of the cfg.bannerDataNamespaceHasPriority table. --]] -- If the reason specified to the template is listed in this table, -- namespace data will take priority over reason data in the protectionCategories -- table. reasonsWithNamespacePriority = { vandalism = true, }, -- The string to use as a namespace key for the protectionCategories table for each -- namespace number. categoryNamespaceKeys = { [ 2] = 'user', [ 3] = 'user', [ 4] = 'project', [ 6] = 'file', [ 8] = 'mediawiki', [ 10] = 'template', [ 12] = 'project', [ 14] = 'category', [100] = 'portal', [828] = 'module', }, protectionCategories = { ['all|all|all|all|all'] = 'Wikipedia fully protected pages', ['all|all|office|all|all'] = 'Wikipedia Office-protected pages', ['all|all|reset|all|all'] = 'Wikipedia Office-protected pages', ['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages', ['all|all|mainpage|all|all'] = 'Wikipedia fully protected main page files', ['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|template|all|all|edit'] = 'Wikipedia fully protected templates', ['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages', ['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages', ['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people', ['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people', ['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute', ['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users', ['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism', ['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories', ['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files', ['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals', ['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages', ['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages', ['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates', ['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages', ['all|all|all|templateeditor|move'] = 'Wikipedia template-protected pages other than templates and modules', ['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules', ['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates', ['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates ['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people', ['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people', ['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute', ['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users', ['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism', ['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories', ['all|file|all|sysop|edit'] = 'Wikipedia fully protected files', ['all|project|all|sysop|edit'] = 'Wikipedia fully protected project pages', ['all|talk|all|sysop|edit'] = 'Wikipedia fully protected talk pages', ['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|extendedconfirmed|move'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates', ['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages', ['all|module|all|all|edit'] = 'Wikipedia fully protected modules', ['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules', ['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules', ['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules', ['all|all|all|sysop|move'] = 'Wikipedia move-protected pages', ['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages', ['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute', ['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism', ['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals', ['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages', ['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages', ['all|template|all|sysop|move'] = 'Wikipedia move-protected templates', ['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages', ['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages', ['all|file|all|all|upload'] = 'Wikipedia upload-protected files', }, -------------------------------------------------------------------------------- -- Expiry category config -------------------------------------------------------------------------------- -- This table configures the expiry category behaviour for each protection -- action. -- * If set to true, setting that action will always categorise the page if -- an expiry parameter is not set. -- * If set to false, setting that action will never categorise the page. -- * If set to nil, the module will categorise the page if: -- 1) an expiry parameter is not set, and -- 2) a reason is provided, and -- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck -- table. expiryCheckActions = { edit = nil, move = false, autoreview = true, upload = false }, reasonsWithoutExpiryCheck = { blp = true, template = true, }, -------------------------------------------------------------------------------- -- Pagetypes -------------------------------------------------------------------------------- -- This table produces the page types available with the ${PAGETYPE} parameter. -- Keys are namespace numbers, or the string "default" for the default value. pagetypes = { [0] = 'article', [6] = 'file', [10] = 'template', [14] = 'category', [828] = 'module', default = 'page' }, -------------------------------------------------------------------------------- -- Strings marking indefinite protection -------------------------------------------------------------------------------- -- This table contains values passed to the expiry parameter that mean the page -- is protected indefinitely. indefStrings = { ['indef'] = true, ['indefinite'] = true, ['indefinitely'] = true, ['infinite'] = true, }, -------------------------------------------------------------------------------- -- Group hierarchy -------------------------------------------------------------------------------- -- This table maps each group to all groups that have a superset of the original -- group's page editing permissions. hierarchy = { sysop = {}, reviewer = {'sysop'}, filemover = {'sysop'}, templateeditor = {'sysop'}, extendedconfirmed = {'sysop'}, autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'}, user = {'autoconfirmed'}, ['*'] = {'user'} }, -------------------------------------------------------------------------------- -- Wrapper templates and their default arguments -------------------------------------------------------------------------------- -- This table contains wrapper templates used with the module, and their -- default arguments. Templates specified in this table should contain the -- following invocation, and no other template content: -- -- {{#invoke:Protection banner|main}} -- -- If other content is desired, it can be added between -- <noinclude>...</noinclude> tags. -- -- When a user calls one of these wrapper templates, they will use the -- default arguments automatically. However, users can override any of the -- arguments. wrappers = { ['Template:Protected page'] = {}, ['Template:Extended confirmed–protected'] = {'ecp'}, ['Template:Protected biography of a living person'] = {'blp'}, ['Template:Protected due to a dispute'] = {'dispute'}, ['Template:Move-protected'] = {action = 'move', catonly = 'yes'}, ['Template:Move-protected due to a dispute'] = {'dispute', action = 'move', catonly = 'yes'}, ['Template:Move-protected due to vandalism'] = {'vandalism', action = 'move', catonly = 'yes'}, ['Template:Office-protected'] = {'office'}, ['Template:Pending changes–protected'] = {action = 'autoreview', small = true}, ['Template:Semi-protected indefinitely'] = {small = true}, ['Template:Protected due to sockpuppetry'] = {'sock'}, ['Template:Template-protected'] = {'template', small = true}, ['Template:Upload-protected'] = {action = 'upload'}, ['Template:Protected talk page of a blocked user'] = {'usertalk'}, ['Template:Protected due to vandalism'] = {'vandalism'}, }, -------------------------------------------------------------------------------- -- -- MESSAGES -- -------------------------------------------------------------------------------- msg = { -------------------------------------------------------------------------------- -- Intro blurb and intro fragment -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${INTROBLURB} and -- ${INTROFRAGMENT} parameters. If the protection is temporary they use the -- intro-blurb-expiry or intro-fragment-expiry, and if not they use -- intro-blurb-noexpiry or intro-fragment-noexpiry. -- It is possible to use banner parameters in these messages. ['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.', ['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.', ['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},', ['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}', -------------------------------------------------------------------------------- -- Tooltip blurb -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${TOOLTIPBLURB} parameter. -- If the protection is temporary the tooltip-blurb-expiry message is used, and -- if not the tooltip-blurb-noexpiry message is used. -- It is possible to use banner parameters in these messages. ['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.', ['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.', ['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},', ['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', -------------------------------------------------------------------------------- -- Special explanation blurb -------------------------------------------------------------------------------- -- An explanation blurb for pages that cannot be unprotected, e.g. for pages -- in the MediaWiki namespace. -- It is possible to use banner parameters in this message. ['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]].', -------------------------------------------------------------------------------- -- Protection log display values -------------------------------------------------------------------------------- -- These messages determine the display values for the protection log link -- or the pending changes log link produced by the ${PROTECTIONLOG} parameter. -- It is possible to use banner parameters in these messages. ['protection-log-display'] = 'protection log', ['pc-log-display'] = 'pending changes log', -------------------------------------------------------------------------------- -- Current version display values -------------------------------------------------------------------------------- -- These messages determine the display values for the page history link -- or the move log link produced by the ${CURRENTVERSION} parameter. -- It is possible to use banner parameters in these messages. ['current-version-move-display'] = 'current title', ['current-version-edit-display'] = 'current version', -------------------------------------------------------------------------------- -- Talk page -------------------------------------------------------------------------------- -- This message determines the display value of the talk page link produced -- with the ${TALKPAGE} parameter. -- It is possible to use banner parameters in this message. ['talk-page-link-display'] = 'talk page', -------------------------------------------------------------------------------- -- Edit requests -------------------------------------------------------------------------------- -- This message determines the display value of the edit request link produced -- with the ${EDITREQUEST} parameter. -- It is possible to use banner parameters in this message. ['edit-request-display'] = 'submit an edit request', -------------------------------------------------------------------------------- -- Expiry date format -------------------------------------------------------------------------------- -- This is the format for the blurb expiry date. It should be valid input for -- the first parameter of the #time parser function. ['expiry-date-format'] = 'F j, Y "at" H:i e', -------------------------------------------------------------------------------- -- Tracking categories -------------------------------------------------------------------------------- -- These messages determine which tracking categories the module outputs. ['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates', ['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules', -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- These are images that are not defined by their protection action and protection level. ['image-filename-indef'] = 'Full-protection-shackle.svg', ['image-filename-default'] = 'Transparent.gif', -------------------------------------------------------------------------------- -- End messages -------------------------------------------------------------------------------- } -------------------------------------------------------------------------------- -- End configuration -------------------------------------------------------------------------------- } pj6zo6l44p4bk4pwax9tlbkyf7cpx34 સભ્યની ચર્ચા:Pawar Mehulbhai Shantarambhai 3 155178 904881 2026-09-08T07:06:45Z New user message 14116 નવા સભ્યનાં ચર્ચાનાં પાના પર [[ઢાંચો:સ્વાગત|સ્વાગત સંદેશ]]નો ઉમેરો 904881 wikitext text/x-wiki {{ઢાંચો:સ્વાગત|realName=|name=Pawar Mehulbhai Shantarambhai}} -- [[:User:Dsvyas|ધવલ સુધન્વા વ્યાસ]]<sup>[[:User_talk:Dsvyas|ચર્ચા]]/[[:Special:Contributions/Dsvyas|યોગદાન]]</sup> ૧૨:૩૬, ૮ સપ્ટેમ્બર ૨૦૨૬ (IST) fkzfa39ehgmvkwpu1u8c9imvg4obi1b સભ્યની ચર્ચા:Pargi Priyanka Ben Priyank Bhai 3 155179 904885 2026-09-08T10:51:16Z New user message 14116 નવા સભ્યનાં ચર્ચાનાં પાના પર [[ઢાંચો:સ્વાગત|સ્વાગત સંદેશ]]નો ઉમેરો 904885 wikitext text/x-wiki {{ઢાંચો:સ્વાગત|realName=|name=Pargi Priyanka Ben Priyank Bhai}} -- [[સભ્ય:Aniket|Aniket]] ([[સભ્યની ચર્ચા:Aniket|ચર્ચા]]) ૧૬:૨૧, ૮ સપ્ટેમ્બર ૨૦૨૬ (IST) qpdpsmhi6vj7wo1jadaa1pty9q9b5tx સભ્યની ચર્ચા:Baral kalpesh 3 155180 904887 2026-09-08T11:38:37Z New user message 14116 નવા સભ્યનાં ચર્ચાનાં પાના પર [[ઢાંચો:સ્વાગત|સ્વાગત સંદેશ]]નો ઉમેરો 904887 wikitext text/x-wiki {{ઢાંચો:સ્વાગત|realName=|name=Baral kalpesh}} -- [[સભ્ય:Aniket|Aniket]] ([[સભ્યની ચર્ચા:Aniket|ચર્ચા]]) ૧૭:૦૮, ૮ સપ્ટેમ્બર ૨૦૨૬ (IST) hnkgultb5fhoi4jq46us3blgr7stovh