Wikipedia pagwiki https://pag.wikipedia.org/wiki/Arapan_ya_Bolong MediaWiki 1.46.0-wmf.26 first-letter Media Special Talk User User talk Wikipedia Wikipedia talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk TimedText TimedText talk Module Module talk Event Event talk Template:Pangasinan 10 476 79622 66184 2026-04-29T14:09:32Z Exec8 2783 79622 wikitext text/x-wiki {{Navbox |name = Pangasinan |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Pangasinan]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13871|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q41668}} <!--Agno--> * {{wikidata|label|linked|Q41686}} <!--Aguilar--> * {{wikidata|label|linked|Q41704}} <!--Alcala--> * {{wikidata|label|linked|Q41713}} <!--Anda--> * {{wikidata|label|linked|Q41721}} <!--Asingan--> * {{wikidata|label|linked|Q41725}} <!--Balungao--> * {{wikidata|label|linked|Q41732}} <!--Bani--> * {{wikidata|label|linked|Q41737}} <!--Basista--> * {{wikidata|label|linked|Q41757}} <!--Bautista--> * {{wikidata|label|linked|Q41762}} <!--Bayambang--> * {{wikidata|label|linked|Q41771}} <!--Binalonan--> * {{wikidata|label|linked|Q41779}} <!--Binmaley--> * {{wikidata|label|linked|Q41807}} <!--Bolinao--> * {{wikidata|label|linked|Q41826}} <!--Bugallon--> * {{wikidata|label|linked|Q41850}} <!--Burgos--> * {{wikidata|label|linked|Q41855}} <!--Calasiao--> * {{wikidata|label|linked|Q41917}} <!--Dasol--> * {{wikidata|label|linked|Q41922}} <!--Infanta--> * {{wikidata|label|linked|Q41942}} <!--Labrador--> * {{wikidata|label|linked|Q41965}} <!--Laoac--> * {{wikidata|label|linked|Q41978}} <!--Lingayen--> * {{wikidata|label|linked|Q41982}} <!--Mabini--> * {{wikidata|label|linked|Q41985}} <!--Malasiqui--> * {{wikidata|label|linked|Q1020685}} <!--Manaoag--> * {{wikidata|label|linked|Q41996}} <!--Mangaldan--> * {{wikidata|label|linked|Q42001}} <!--Mangatarem--> * {{wikidata|label|linked|Q42006}} <!--Mapandan--> * {{wikidata|label|linked|Q42011}} <!--Natividad--> * {{wikidata|label|linked|Q42017}} <!--Pozorrubio--> * {{wikidata|label|linked|Q42024}} <!--Rosales--> * {{wikidata|label|linked|Q42031}} <!--San Fabian--> * {{wikidata|label|linked|Q42036}} <!--San Jacinto--> * {{wikidata|label|linked|Q42039}} <!--San Manuel--> * {{wikidata|label|linked|Q42043}} <!--San Nicolas--> * {{wikidata|label|linked|Q42044}} <!--San Quintin--> * {{wikidata|label|linked|Q122401}} <!--Santa Barbara--> * {{wikidata|label|linked|Q42055}} <!--Santa Maria--> * {{wikidata|label|linked|Q43140}} <!--Santo Tomas--> * {{wikidata|label|linked|Q43143}} <!--Sison--> * {{wikidata|label|linked|Q43145}} <!--Sual--> * {{wikidata|label|linked|Q43148}} <!--Tayug--> * {{wikidata|label|linked|Q43152}} <!--Umingan--> * {{wikidata|label|linked|Q43154}} <!--Urbiztondo--> * {{wikidata|label|linked|Q43157}} <!--Villasis--> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q43162}} <!--Alaminos --> * {{wikidata|label|linked|Q875070}} <!--Dagupan--> * {{wikidata|label|linked|Q43165}} <!--San Carlos, Pangasinan --> * {{wikidata|label|linked|Q43168}} <!--Urdaneta --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Pangasinan| ]] </noinclude> 6jlbahkk2jd9gxeqarx7iky330m84wu Template:La Union 10 2057 79598 66506 2026-04-29T13:48:25Z Exec8 2783 79598 wikitext text/x-wiki {{Navbox |name = La Union |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[La Union]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13829|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q40168}} <!-- Agoo --> * {{wikidata|label|linked|Q40239}} <!-- Aringay --> * {{wikidata|label|linked|Q40259}} <!-- Bacnotan --> * {{wikidata|label|linked|Q40275}} <!-- Bagulin --> * {{wikidata|label|linked|Q40282}} <!-- Balaoan --> * {{wikidata|label|linked|Q40298}} <!-- Bangar --> * {{wikidata|label|linked|Q40313}} <!-- Bauang --> * {{wikidata|label|linked|Q40372}} <!-- Burgos --> * {{wikidata|label|linked|Q40393}} <!-- Caba --> * {{wikidata|label|linked|Q40419}} <!-- Luna --> * {{wikidata|label|linked|Q40450}} <!-- Naguilian --> * {{wikidata|label|linked|Q40466}} <!-- Pugo --> * {{wikidata|label|linked|Q40486}} <!-- Rosario --> * {{wikidata|label|linked|Q40500}} <!-- San Gabriel --> * {{wikidata|label|linked|Q40517}} <!-- San Juan --> * {{wikidata|label|linked|Q40521}} <!-- Santo Tomas --> * {{wikidata|label|linked|Q40536}} <!-- Santol --> * {{wikidata|label|linked|Q40557}} <!-- Sudipen --> * {{wikidata|label|linked|Q40562}} <!-- Tubao --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q40584}} <!--San Fernando, La Union --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na La Union| ]] </noinclude> neko754ex0k3jvoexz82enwnqmwv8rc Template:Ilocos Sur 10 2109 79594 66032 2026-04-29T13:43:53Z Exec8 2783 79594 wikitext text/x-wiki {{Navbox |name = Ilocos Sur |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Ilocos Sur]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q12741|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q12813}} <!-- Alilem --> * {{wikidata|label|linked|Q12818}} <!-- Banayoyo --> * {{wikidata|label|linked|Q12825}} <!-- Bantay --> * {{wikidata|label|linked|Q12828}} <!-- Burgos --> * {{wikidata|label|linked|Q12832}} <!-- Cabugao --> * {{wikidata|label|linked|Q12834}} <!-- Caoayan --> * {{wikidata|label|linked|Q12835}} <!-- Cervantes --> * {{wikidata|label|linked|Q12838}} <!-- Galimuyod --> * {{wikidata|label|linked|Q12840}} <!-- Gregorio Del Pilar --> * {{wikidata|label|linked|Q12843}} <!-- Lidlidda --> * {{wikidata|label|linked|Q12845}} <!-- Magsingal --> * {{wikidata|label|linked|Q12848}} <!-- Nagbukel --> * {{wikidata|label|linked|Q12850}} <!-- Narvacan --> * {{wikidata|label|linked|Q12853}} <!-- Quirino --> * {{wikidata|label|linked|Q12856}} <!-- Salcedo --> * {{wikidata|label|linked|Q12859}} <!-- San Emilio --> * {{wikidata|label|linked|Q12863}} <!-- San Esteban --> * {{wikidata|label|linked|Q12864}} <!-- San Ildefonso --> * {{wikidata|label|linked|Q12867}} <!-- San Juan --> * {{wikidata|label|linked|Q12868}} <!-- San Vicente --> * {{wikidata|label|linked|Q12873}} <!-- Santa --> * {{wikidata|label|linked|Q12875}} <!-- Santa Catalina --> * {{wikidata|label|linked|Q12880}} <!-- Santa Cruz --> * {{wikidata|label|linked|Q12882}} <!-- Santa Lucia --> * {{wikidata|label|linked|Q12692}} <!-- Santa Maria --> * {{wikidata|label|linked|Q12884}} <!-- Santiago --> * {{wikidata|label|linked|Q12885}} <!-- Santo Domingo --> * {{wikidata|label|linked|Q12888}} <!-- Sigay --> * {{wikidata|label|linked|Q12891}} <!-- Sinait --> * {{wikidata|label|linked|Q12893}} <!-- Sugpon --> * {{wikidata|label|linked|Q12894}} <!-- Suyo --> * {{wikidata|label|linked|Q12895}} <!-- Tagudin --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q205956}} <!--Candon --> * {{wikidata|label|linked|Q235004}} <!--Vigan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Ilocos Sur| ]] </noinclude> 37y7iss7z2ozc03ul80o3i8p54ksopw Template:Ilocos Norte 10 2111 79593 77219 2026-04-29T13:42:48Z Exec8 2783 79593 wikitext text/x-wiki {{Navbox |name = Ilocos Norte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Ilocos Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13813|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q39241}} <!-- Adams --> * {{wikidata|label|linked|Q39271}} <!-- Bacarra --> * {{wikidata|label|linked|Q39303}} <!-- Badoc --> * {{wikidata|label|linked|Q39326}} <!-- Bangui --> * {{wikidata|label|linked|Q39346}} <!-- Banna --> * {{wikidata|label|linked|Q39368}} <!-- Burgos --> * {{wikidata|label|linked|Q39393}} <!-- Carasi --> * {{wikidata|label|linked|Q39416}} <!-- Currimao --> * {{wikidata|label|linked|Q39429}} <!-- Dingras --> * {{wikidata|label|linked|Q39511}} <!-- Dumalneg --> * {{wikidata|label|linked|Q39523}} <!-- Marcos --> * {{wikidata|label|linked|Q39540}} <!-- Nueva Era --> * {{wikidata|label|linked|Q39559}} <!-- Pagudpud --> * {{wikidata|label|linked|Q39573}} <!-- Paoay --> * {{wikidata|label|linked|Q39591}} <!-- Pasuquin --> * {{wikidata|label|linked|Q39616}} <!-- Piddig --> * {{wikidata|label|linked|Q39629}} <!-- Pinili --> * {{wikidata|label|linked|Q39653}} <!-- San Nicolas --> * {{wikidata|label|linked|Q39673}} <!-- Sarrat --> * {{wikidata|label|linked|Q39677}} <!-- Solsona --> * {{wikidata|label|linked|Q39694}} <!-- Vintar --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q39711}} <!--Batac --> * {{wikidata|label|linked|Q39738}} <!--Laoag --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Ilocos Norte| ]] </noinclude> kfirwfhz0cy4zzrwqtrqp16u1zwpu51 Template:Abra 10 2125 79540 64557 2026-04-29T12:41:40Z Exec8 2783 . 79540 wikitext text/x-wiki {{Navbox |name = Abra |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Abra|Abra]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13711|P36}}''' (kapital) |listclass = hlist |image = |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q27995}} <!-- Bangued --> * {{wikidata|label|linked|Q28002}} <!-- Boliney --> * {{wikidata|label|linked|Q28014}} <!-- Bucay --> * {{wikidata|label|linked|Q28030}} <!-- Bucloc --> * {{wikidata|label|linked|Q28044}} <!-- Daguioman --> * {{wikidata|label|linked|Q28068}} <!-- Danglas --> * {{wikidata|label|linked|Q28096}} <!-- Dolores --> * {{wikidata|label|linked|Q28124}} <!-- La Paz --> * {{wikidata|label|linked|Q29007}} <!-- Lacub --> * {{wikidata|label|linked|Q29020}} <!-- Lagangilang --> * {{wikidata|label|linked|Q29029}} <!-- Lagayan --> * {{wikidata|label|linked|Q29038}} <!-- Langiden --> * {{wikidata|label|linked|Q29045}} <!-- Licuan-Baay --> * {{wikidata|label|linked|Q29048}} <!-- Luba --> * {{wikidata|label|linked|Q29069}} <!-- Malibcong --> * {{wikidata|label|linked|Q29082}} <!-- Manabo --> * {{wikidata|label|linked|Q29094}} <!-- Peñarrubia --> * {{wikidata|label|linked|Q29102}} <!-- Pidigan --> * {{wikidata|label|linked|Q29109}} <!-- Pilar --> * {{wikidata|label|linked|Q29116}} <!-- Sallapadan --> * {{wikidata|label|linked|Q801530}} <!-- San Isidro --> * {{wikidata|label|linked|Q29123}} <!-- San Juan --> * {{wikidata|label|linked|Q29133}} <!-- San Quintin --> * {{wikidata|label|linked|Q29139}} <!-- Tayum --> * {{wikidata|label|linked|Q29146}} <!-- Tineg --> * {{wikidata|label|linked|Q29153}} <!-- Tubo --> * {{wikidata|label|linked|Q29191}} <!-- Villaviciosa --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Abra| ]] </noinclude> mze17u9spvb50hdjpekbwqiyxvlhk3r Template:Ifugao 10 6071 79592 62135 2026-04-29T13:41:46Z Exec8 2783 79592 wikitext text/x-wiki {{Navbox |name = Ifugao |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Ifugao]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13812|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q30365}} <!-- Aguinaldo --> * {{wikidata|label|linked|Q30391}} <!-- Alfonso Lista --> * {{wikidata|label|linked|Q30394}} <!-- Asipulo --> * {{wikidata|label|linked|Q806138}} <!-- Banaue --> * {{wikidata|label|linked|Q30410}} <!-- Hingyon --> * {{wikidata|label|linked|Q30413}} <!-- Hungduan --> * {{wikidata|label|linked|Q30416}} <!-- Kiangan --> * {{wikidata|label|linked|Q30419}} <!-- Lagawe --> * {{wikidata|label|linked|Q30421}} <!-- Lamut --> * {{wikidata|label|linked|Q30425}} <!-- Mayoyao --> * {{wikidata|label|linked|Q30428}} <!-- Tinoc --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Ifugao| ]] </noinclude> i2c9xy3gsqp5gav1uggtb64hwdaujsq Template:Masbate 10 6072 79607 66344 2026-04-29T13:56:11Z Exec8 2783 79607 wikitext text/x-wiki {{Navbox |name = Masbate |image = |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Masbate]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13847|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q191416}} <!-- Aroroy --> * {{wikidata|label|linked|Q191438}} <!-- Baleno --> * {{wikidata|label|linked|Q191453}} <!-- Balud --> * {{wikidata|label|linked|Q191463}} <!-- Batuan --> * {{wikidata|label|linked|Q191478}} <!-- Cataingan --> * {{wikidata|label|linked|Q191482}} <!-- Cawayan --> * {{wikidata|label|linked|Q191490}} <!-- Claveria --> * {{wikidata|label|linked|Q191496}} <!-- Dimasalang --> * {{wikidata|label|linked|Q191501}} <!-- Esperanza --> * {{wikidata|label|linked|Q191512}} <!-- Mandaon --> * {{wikidata|label|linked|Q191522}} <!-- Milagros --> * {{wikidata|label|linked|Q191533}} <!-- Mobo --> * {{wikidata|label|linked|Q191544}} <!-- Monreal --> * {{wikidata|label|linked|Q191558}} <!-- Palanas --> * {{wikidata|label|linked|Q191581}} <!-- Pio V. Corpuz --> * {{wikidata|label|linked|Q191590}} <!-- Placer --> * {{wikidata|label|linked|Q191606}} <!-- San Fernando --> * {{wikidata|label|linked|Q191621}} <!-- San Jacinto --> * {{wikidata|label|linked|Q191630}} <!-- San Pascual --> * {{wikidata|label|linked|Q191636}} <!-- Uson --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q191651}} <!--Masbate City --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Masbate| ]] </noinclude> 0ark0bmrgmupn4cj0a0lbmou0hjid5y Template:Apayao 10 6207 79548 62103 2026-04-29T12:49:43Z Exec8 2783 79548 wikitext text/x-wiki {{Navbox |name = Apayao |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Apayao]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13728|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q29018}} <!-- Calanasan --> * {{wikidata|label|linked|Q30033}} <!-- Conner --> * {{wikidata|label|linked|Q30042}} <!-- Flora --> * {{wikidata|label|linked|Q30053}} <!-- Kabugao --> * {{wikidata|label|linked|Q801777}} <!-- Luna --> * {{wikidata|label|linked|Q30062}} <!-- Pudtol --> * {{wikidata|label|linked|Q30073}} <!-- Santa Marcela --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Apayao| ]] </noinclude> 3msmdec025y1zqf7zbmag7pg49ewtrc Template:Benguet 10 6209 79554 62113 2026-04-29T12:55:39Z Exec8 2783 79554 wikitext text/x-wiki {{Navbox |name = Benguet |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Benguet]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13750|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q30104}} <!-- Atok --> * {{wikidata|label|linked|Q30325}} <!-- Bakun --> * {{wikidata|label|linked|Q30328}} <!-- Bokod --> * {{wikidata|label|linked|Q30332}} <!-- Buguias --> * {{wikidata|label|linked|Q30335}} <!-- Itogon --> * {{wikidata|label|linked|Q30338}} <!-- Kabayan --> * {{wikidata|label|linked|Q30345}} <!-- Kapangan --> * {{wikidata|label|linked|Q30349}} <!-- Kibungan --> * {{wikidata|label|linked|Q30351}} <!-- La Trinidad --> * {{wikidata|label|linked|Q30356}} <!-- Mankayan --> * {{wikidata|label|linked|Q30358}} <!-- Sablan --> * {{wikidata|label|linked|Q30361}} <!-- Tuba --> * {{wikidata|label|linked|Q30363}} <!-- Tublay --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q1822}} <!--Baguio--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Benguet| ]] </noinclude> noz3qgkpm06vwkj9jo7s1mg15c166oq Template:Kalinga 10 6211 79597 66142 2026-04-29T13:47:24Z Exec8 2783 79597 wikitext text/x-wiki {{Navbox |name = Kalinga |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Kalinga]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13827|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q35848}} <!-- Balbalan --> * {{wikidata|label|linked|Q35858}} <!-- Lubuagan --> * {{wikidata|label|linked|Q35866}} <!-- Pasil --> * {{wikidata|label|linked|Q35873}} <!-- Pinukpuk --> * {{wikidata|label|linked|Q35884}} <!-- Rizal --> * {{wikidata|label|linked|Q35897}} <!-- Tanudan --> * {{wikidata|label|linked|Q35909}} <!-- Tinglayan --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q35925}} <!--Tabuk, Kalinga --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Kalinga| ]] </noinclude> l2i6nxzs6wdokqxim2bc8d6ss114sn8 Template:Mountain Province 10 6214 79612 79434 2026-04-29T13:59:18Z Exec8 2783 . 79612 wikitext text/x-wiki {{Navbox |name = Mountain Province |title = Saray [[:Category:Saray baley na Filipinas|baley]] na {{wikidata|label|linked|Q13861}} |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13861|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q35975}} <!-- Barlig --> * {{wikidata|label|linked|Q35994}} <!-- Bauko --> * {{wikidata|label|linked|Q36012}} <!-- Besao --> * {{wikidata|label|linked|Q36025}} <!-- Bontoc --> * {{wikidata|label|linked|Q36040}} <!-- Natonin --> * {{wikidata|label|linked|Q36049}} <!-- Paracelis --> * {{wikidata|label|linked|Q36061}} <!-- Sabangan --> * {{wikidata|label|linked|Q36076}} <!-- Sadanga --> * {{wikidata|label|linked|Q36090}} <!-- Sagada --> * {{wikidata|label|linked|Q36099}} <!-- Tadian --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Mountain Province| ]] </noinclude> dc9kojin37057f25avkg7u2c1adkwds Template:Batanes 10 6216 79552 66867 2026-04-29T12:53:47Z Exec8 2783 79552 wikitext text/x-wiki {{Navbox |name = Batanes |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Batanes]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13740|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q43180}} <!-- Basco --> * {{wikidata|label|linked|Q43451}} <!-- Itbayat --> * {{wikidata|label|linked|Q43454}} <!-- Ivana --> * {{wikidata|label|linked|Q43458}} <!-- Mahatao --> * {{wikidata|label|linked|Q43460}} <!-- Sabtang --> * {{wikidata|label|linked|Q43469}} <!-- Uyugan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Batanes| ]] </noinclude> epdr5eo1pusesacbr23zbc8ch2t86fk Template:Cagayan 10 6218 79559 66846 2026-04-29T13:00:22Z Exec8 2783 79559 wikitext text/x-wiki {{Navbox |name = Cagayan |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Cagayan]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13759|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q43500}} <!-- Abulug --> * {{wikidata|label|linked|Q43503}} <!-- Alcala --> * {{wikidata|label|linked|Q43508}} <!-- Allacapan --> * {{wikidata|label|linked|Q43515}} <!-- Amulung --> * {{wikidata|label|linked|Q43517}} <!-- Aparri --> * {{wikidata|label|linked|Q43520}} <!-- Baggao --> * {{wikidata|label|linked|Q49058}} <!-- Ballesteros --> * {{wikidata|label|linked|Q49059}} <!-- Buguey --> * {{wikidata|label|linked|Q49062}} <!-- Calayan --> * {{wikidata|label|linked|Q49313}} <!-- Camalaniugan --> * {{wikidata|label|linked|Q49314}} <!-- Claveria --> * {{wikidata|label|linked|Q49315}} <!-- Enrile --> * {{wikidata|label|linked|Q49316}} <!-- Gattaran --> * {{wikidata|label|linked|Q49317}} <!-- Gonzaga --> * {{wikidata|label|linked|Q49318}} <!-- Iguig --> * {{wikidata|label|linked|Q49320}} <!-- Lal-lo --> * {{wikidata|label|linked|Q49321}} <!-- Lasam --> * {{wikidata|label|linked|Q49324}} <!-- Pamplona --> * {{wikidata|label|linked|Q49327}} <!-- Peñablanca --> * {{wikidata|label|linked|Q49331}} <!-- Piat --> * {{wikidata|label|linked|Q49333}} <!-- Rizal --> * {{wikidata|label|linked|Q49336}} <!-- Sanchez-Mira --> * {{wikidata|label|linked|Q49337}} <!-- Santa Ana --> * {{wikidata|label|linked|Q49339}} <!-- Santa Praxedes --> * {{wikidata|label|linked|Q49342}} <!-- Santa Teresita --> * {{wikidata|label|linked|Q49346}} <!-- Santo Niño --> * {{wikidata|label|linked|Q49348}} <!-- Solana --> * {{wikidata|label|linked|Q49350}} <!-- Tuao --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q2200}} <!--Tuguegarao --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Cagayan| ]] </noinclude> 0dsiww6lxote1xzv374yev9lss8qrz6 Template:Isabela 10 6238 79596 63163 2026-04-29T13:46:42Z Exec8 2783 79596 wikitext text/x-wiki {{Navbox |name = Isabela |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na na [[Isabela|Isabela]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13826|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q49354}} <!-- Alicia --> * {{wikidata|label|linked|Q49357}} <!-- Angadanan --> * {{wikidata|label|linked|Q49358}} <!-- Aurora --> * {{wikidata|label|linked|Q49359}} <!-- Benito Soliven --> * {{wikidata|label|linked|Q49360}} <!-- Burgos --> * {{wikidata|label|linked|Q49361}} <!-- Cabagan --> * {{wikidata|label|linked|Q49362}} <!-- Cabatuan --> * {{wikidata|label|linked|Q49363}} <!-- Cordon --> * {{wikidata|label|linked|Q49365}} <!-- Delfin Albano --> * {{wikidata|label|linked|Q49366}} <!-- Dinapigue --> * {{wikidata|label|linked|Q49368}} <!-- Divilacan --> * {{wikidata|label|linked|Q49369}} <!-- Echague --> * {{wikidata|label|linked|Q49370}} <!-- Gamu --> * {{wikidata|label|linked|Q49372}} <!-- Jones --> * {{wikidata|label|linked|Q49375}} <!-- Luna --> * {{wikidata|label|linked|Q49434}} <!-- Maconacon --> * {{wikidata|label|linked|Q49435}} <!-- Mallig --> * {{wikidata|label|linked|Q50066}} <!-- Naguilian --> * {{wikidata|label|linked|Q50102}} <!-- Palanan --> * {{wikidata|label|linked|Q50145}} <!-- Quezon --> * {{wikidata|label|linked|Q50149}} <!-- Quirino --> * {{wikidata|label|linked|Q50152}} <!-- Ramon --> * {{wikidata|label|linked|Q50153}} <!-- Reina Mercedes --> * {{wikidata|label|linked|Q50154}} <!-- Roxas --> * {{wikidata|label|linked|Q50158}} <!-- San Agustin --> * {{wikidata|label|linked|Q50160}} <!-- San Guillermo --> * {{wikidata|label|linked|Q50163}} <!-- San Isidro --> * {{wikidata|label|linked|Q50164}} <!-- San Manuel --> * {{wikidata|label|linked|Q50167}} <!-- San Mariano --> * {{wikidata|label|linked|Q50171}} <!-- San Mateo --> * {{wikidata|label|linked|Q50174}} <!-- San Pablo --> * {{wikidata|label|linked|Q50175}} <!-- Santa Maria --> * {{wikidata|label|linked|Q50176}} <!-- Santo Tomas --> * {{wikidata|label|linked|Q50177}} <!-- Tumauini --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q50178}} <!--Cauayan --> * {{wikidata|label|linked|Q50179}} <!--Ilagan --> * {{wikidata|label|linked|Q50180}} <!--Santiago--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Isabela| ]] </noinclude> 9tngeorzg0y6vgauo3uv9060dd49owf Template:Nueva Vizcaya 10 6241 79617 62165 2026-04-29T14:04:22Z Exec8 2783 79617 wikitext text/x-wiki {{Navbox |name = Nueva Vizcaya |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Nueva Vizcaya]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13866|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q51474}} <!-- Alfonso Castaneda --> * {{wikidata|label|linked|Q51475}} <!-- Ambaguio --> * {{wikidata|label|linked|Q51477}} <!-- Aritao --> * {{wikidata|label|linked|Q51478}} <!-- Bagabag --> * {{wikidata|label|linked|Q51479}} <!-- Bambang --> * {{wikidata|label|linked|Q51480}} <!-- Bayombong --> * {{wikidata|label|linked|Q51481}} <!-- Diadi --> * {{wikidata|label|linked|Q51483}} <!-- Dupax del Norte --> * {{wikidata|label|linked|Q51484}} <!-- Dupax del Sur --> * {{wikidata|label|linked|Q51485}} <!-- Kasibu --> * {{wikidata|label|linked|Q51486}} <!-- Kayapa --> * {{wikidata|label|linked|Q51487}} <!-- Quezon --> * {{wikidata|label|linked|Q51493}} <!-- Santa Fe --> * {{wikidata|label|linked|Q51494}} <!-- Solano --> * {{wikidata|label|linked|Q51496}} <!-- Villaverde --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Nueva Vizcaya| ]] </noinclude> 8gfn7wfaywt76xiuvrbkkoeyirwjuxc Template:Quirino 10 6244 79624 62174 2026-04-29T14:11:27Z Exec8 2783 . 79624 wikitext text/x-wiki {{Navbox |name = Quirino |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Quirino]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13873|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q53069}} <!-- Aglipay --> * {{wikidata|label|linked|Q53070}} <!-- Cabarroguis --> * {{wikidata|label|linked|Q53071}} <!-- Diffun --> * {{wikidata|label|linked|Q53072}} <!-- Maddela --> * {{wikidata|label|linked|Q53073}} <!-- Nagtipunan --> * {{wikidata|label|linked|Q53074}} <!-- Saguday --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Quirino| ]] </noinclude> 5c07q4v7ml2nyat52f87x7tjo6ijnpo Template:Bataan 10 6502 79551 66647 2026-04-29T12:53:01Z Exec8 2783 . 79551 wikitext text/x-wiki {{Navbox |name = Bataan |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Bataan]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13739|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q54455}} <!-- Abucay --> * {{wikidata|label|linked|Q54456}} <!-- Bagac --> * {{wikidata|label|linked|Q54457}} <!-- Dinalupihan --> * {{wikidata|label|linked|Q54458}} <!-- Hermosa --> * {{wikidata|label|linked|Q54459}} <!-- Limay --> * {{wikidata|label|linked|Q54460}} <!-- Mariveles --> * {{wikidata|label|linked|Q54461}} <!-- Morong --> * {{wikidata|label|linked|Q54462}} <!-- Orani --> * {{wikidata|label|linked|Q54463}} <!-- Orion --> * {{wikidata|label|linked|Q54464}} <!-- Pilar --> * {{wikidata|label|linked|Q54465}} <!-- Samal --> |group3 = Siyudad |list3 = * {{wikidata|label|linked|Q1719}} <!--Balanga --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Bataan| ]] </noinclude> 1laolg7m6mihz36a3md6t10544gb3yd Template:Pampanga 10 6924 79621 66780 2026-04-29T14:08:08Z Exec8 2783 79621 wikitext text/x-wiki {{Navbox |name = Pampanga |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Pampanga]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13870|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q55693}} <!-- Apalit --> * {{wikidata|label|linked|Q55694}} <!-- Arayat --> * {{wikidata|label|linked|Q55696}} <!-- Bacolor --> * {{wikidata|label|linked|Q55699}} <!-- Candaba --> * {{wikidata|label|linked|Q55700}} <!-- Floridablanca --> * {{wikidata|label|linked|Q55702}} <!-- Guagua --> * {{wikidata|label|linked|Q55705}} <!-- Lubao --> * {{wikidata|label|linked|Q55707}} <!-- Macabebe --> * {{wikidata|label|linked|Q55709}} <!-- Magalang --> * {{wikidata|label|linked|Q55710}} <!-- Masantol --> * {{wikidata|label|linked|Q55712}} <!-- Mexico --> * {{wikidata|label|linked|Q55717}} <!-- Minalin --> * {{wikidata|label|linked|Q55721}} <!-- Porac --> * {{wikidata|label|linked|Q55724}} <!-- San Luis --> * {{wikidata|label|linked|Q55725}} <!-- San Simon --> * {{wikidata|label|linked|Q55727}} <!-- Santa Ana --> * {{wikidata|label|linked|Q55730}} <!-- Santa Rita --> * {{wikidata|label|linked|Q55731}} <!-- Santo Tomas --> * {{wikidata|label|linked|Q55734}} <!-- Sasmuan --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q55741}} <!-- Angeles --> * {{wikidata|label|linked|Q55737}} <!--Mabalacat --> * {{wikidata|label|linked|Q55740}} <!--San Fernando, Pampanga --> * [[Angeles]] }}<noinclude> {{collapsible option}} [[Category:Saray baley na Pampanga| ]] </noinclude> 32xl0yo1t7rmykzr0cp8ykbaqg9entx Template:Tarlac 10 6926 79637 66718 2026-04-29T14:26:33Z Exec8 2783 79637 wikitext text/x-wiki {{Navbox |name = Tarlac |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Tarlac]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13892|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q56414}} <!-- Anao --> * {{wikidata|label|linked|Q56420}} <!-- Bamban --> * {{wikidata|label|linked|Q56424}} <!-- Camiling --> * {{wikidata|label|linked|Q56427}} <!-- Capas --> * {{wikidata|label|linked|Q30934}} <!-- Concepcion --> * {{wikidata|label|linked|Q56439}} <!-- Gerona --> * {{wikidata|label|linked|Q28733}} <!-- La Paz --> * {{wikidata|label|linked|Q56444}} <!-- Mayantoc --> * {{wikidata|label|linked|Q56453}} <!-- Moncada --> * {{wikidata|label|linked|Q56457}} <!-- Paniqui --> * {{wikidata|label|linked|Q56461}} <!-- Pura --> * {{wikidata|label|linked|Q56465}} <!-- Ramos --> * {{wikidata|label|linked|Q56471}} <!-- San Clemente --> * {{wikidata|label|linked|Q56476}} <!-- San Jose --> * {{wikidata|label|linked|Q56481}} <!-- San Manuel --> * {{wikidata|label|linked|Q56486}} <!-- Santa Ignacia --> * {{wikidata|label|linked|Q56493}} <!-- Victoria --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q5285}} <!--Tarlac City --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Tarlac| ]] </noinclude> p46zxs69febu4zzxu699s1pjj3tmxvj Template:Cavite 10 6931 79565 66177 2026-04-29T13:08:09Z Exec8 2783 . 79565 wikitext text/x-wiki {{Navbox |name = Cavite |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Cavite]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|label|linked|Q63160}}''' <!--Trece Martires --> (sentro na administrasyon) ▪ '''{{wikidata|label|linked|Q63145}}''' <!--Imus --> (kapital) ▪ '''{{wikidata|label|linked|Q63139}} <!--Dasmariñas -->''' (sankabalgan ya syudad) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q62600}} <!-- Alfonso --> * {{wikidata|label|linked|Q62606}} <!-- Amadeo --> * {{wikidata|label|linked|Q62719}} <!-- General Emilio Aguinaldo --> * {{wikidata|label|linked|Q62638}} <!-- General Mariano Alvarez --> * {{wikidata|label|linked|Q62729}} <!-- Indang --> * {{wikidata|label|linked|Q62755}} <!-- Kawit --> * {{wikidata|label|linked|Q62771}} <!-- Magallanes --> * {{wikidata|label|linked|Q62776}} <!-- Maragondon --> * {{wikidata|label|linked|Q62784}} <!-- Mendez --> * {{wikidata|label|linked|Q62799}} <!-- Naic --> * {{wikidata|label|linked|Q63096}} <!-- Noveleta --> * {{wikidata|label|linked|Q63102}} <!-- Rosario --> * {{wikidata|label|linked|Q63110}} <!-- Silang --> * {{wikidata|label|linked|Q63115}} <!-- Tanza --> * {{wikidata|label|linked|Q63124}} <!-- Ternate --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q63129}} <!--Bacoor --> * {{wikidata|label|linked|Q62611}} <!--Carmona --> * {{wikidata|label|linked|Q1482}} <!--Cavite City --> * {{wikidata|label|linked|Q63139}} <!--Dasmariñas --> * {{wikidata|label|linked|Q62723}} <!--General Trias, Cavite|General Trias --> * {{wikidata|label|linked|Q63145}} <!--Imus --> * {{wikidata|label|linked|Q63154}} <!--Tagaytay --> * {{wikidata|label|linked|Q63160}} <!--Trece Martires --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Cavite| ]] </noinclude> c7bqxmq0ujwn37p5giej1vncby6o6ig Template:Aklan 10 6980 79543 66126 2026-04-29T12:46:36Z Exec8 2783 79543 wikitext text/x-wiki {{Navbox |name = Aklan |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Aklan]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13723|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q434743}} <!-- Altavas --> * {{wikidata|label|linked|Q626586}} <!-- Balete --> * {{wikidata|label|linked|Q569215}} <!-- Banga --> * {{wikidata|label|linked|Q626645}} <!-- Batan --> * {{wikidata|label|linked|Q576805}} <!-- Buruanga --> * {{wikidata|label|linked|Q626695}} <!-- Ibajay --> * {{wikidata|label|linked|Q626721}} <!-- Kalibo --> * {{wikidata|label|linked|Q626746}} <!-- Lezo --> * {{wikidata|label|linked|Q626786}} <!-- Libacao --> * {{wikidata|label|linked|Q626820}} <!-- Madalag --> * {{wikidata|label|linked|Q626873}} <!-- Makato --> * {{wikidata|label|linked|Q626905}} <!-- Malay --> * {{wikidata|label|linked|Q626935}} <!-- Malinao --> * {{wikidata|label|linked|Q626959}} <!-- Nabas --> * {{wikidata|label|linked|Q626992}} <!-- New Washington --> * {{wikidata|label|linked|Q627008}} <!-- Numancia --> * {{wikidata|label|linked|Q627028}} <!-- Tangalan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Aklan| ]] </noinclude> 8ssabhunls2peta0c91lgqqv7mvc0pi Template:Antique 10 6983 79547 62333 2026-04-29T12:49:01Z Exec8 2783 . 79547 wikitext text/x-wiki {{Navbox |name = Antique |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Antique]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13727|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q492119}} <!-- Anini-y --> * {{wikidata|label|linked|Q492155}} <!-- Barbaza --> * {{wikidata|label|linked|Q492263}} <!-- Belison --> * {{wikidata|label|linked|Q492325}} <!-- Bugasong --> * {{wikidata|label|linked|Q492363}} <!-- Caluya --> * {{wikidata|label|linked|Q492406}} <!-- Culasi --> * {{wikidata|label|linked|Q144779}} <!-- Hamtic --> * {{wikidata|label|linked|Q492479}} <!-- Laua-an --> * {{wikidata|label|linked|Q492516}} <!-- Libertad --> * {{wikidata|label|linked|Q492545}} <!-- Pandan --> * {{wikidata|label|linked|Q492577}} <!-- Patnongon --> * {{wikidata|label|linked|Q492619}} <!-- San Jose --> * {{wikidata|label|linked|Q492673}} <!-- San Remigio --> * {{wikidata|label|linked|Q492707}} <!-- Sebaste --> * {{wikidata|label|linked|Q492742}} <!-- Sibalom --> * {{wikidata|label|linked|Q492780}} <!-- Tibiao --> * {{wikidata|label|linked|Q492817}} <!-- Tobias Fornier --> * {{wikidata|label|linked|Q492862}} <!-- Valderrama --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Antique| ]] </noinclude> a1v82zc6wnaghubrxx84wrpos2ge0ke Template:Capiz 10 6986 79563 62122 2026-04-29T13:04:05Z Exec8 2783 . 79563 wikitext text/x-wiki {{Navbox |name = Capiz |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Capiz|Capiz]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13772|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q355953}} <!-- Cuartero --> * {{wikidata|label|linked|Q355986}} <!-- Dao --> * {{wikidata|label|linked|Q356019}} <!-- Dumalag --> * {{wikidata|label|linked|Q356053}} <!-- Dumarao --> * {{wikidata|label|linked|Q356081}} <!-- Ivisan --> * {{wikidata|label|linked|Q356106}} <!-- Jamindan --> * {{wikidata|label|linked|Q356153}} <!-- Ma-ayon --> * {{wikidata|label|linked|Q356174}} <!-- Mambusao --> * {{wikidata|label|linked|Q356204}} <!-- Panay --> * {{wikidata|label|linked|Q356231}} <!-- Panitan --> * {{wikidata|label|linked|Q356266}} <!-- Pilar --> * {{wikidata|label|linked|Q356292}} <!-- Pontevedra --> * {{wikidata|label|linked|Q356313}} <!-- President Roxas --> * {{wikidata|label|linked|Q356338}} <!-- Sapi-an --> * {{wikidata|label|linked|Q356368}} <!-- Sigma --> * {{wikidata|label|linked|Q356398}} <!-- Tapaz --> |group2 = Saray siyudad * {{wikidata|label|linked|Q2209}} <!--Roxas, Capiz --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Capiz| ]] </noinclude> skxgrez3vuzq7rto2xyoz20rfkqdf3r Template:Guimaras 10 6988 79591 62134 2026-04-29T13:40:57Z Exec8 2783 79591 wikitext text/x-wiki {{Navbox |name = Guimaras |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Guimaras|Guimaras]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13810|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q313781}} <!-- Buenavista --> * {{wikidata|label|linked|Q313802}} <!-- Jordan --> * {{wikidata|label|linked|Q313810}} <!-- Nueva Valencia --> * {{wikidata|label|linked|Q313825}} <!-- San Lorenzo --> * {{wikidata|label|linked|Q313844}} <!-- Sibunag --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Guimaras| ]] </noinclude> 0cgpnaeoul1quiqfenmyi01xh108kgc Template:Iloilo 10 6990 79595 66198 2026-04-29T13:45:30Z Exec8 2783 79595 wikitext text/x-wiki {{Navbox |name = Iloilo |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Iloilo]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13825|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q274491}} <!-- Ajuy --> * {{wikidata|label|linked|Q274508}} <!-- Alimodian --> * {{wikidata|label|linked|Q274543}} <!-- Anilao --> * {{wikidata|label|linked|Q274557}} <!-- Badiangan --> * {{wikidata|label|linked|Q274578}} <!-- Balasan --> * {{wikidata|label|linked|Q274595}} <!-- Banate --> * {{wikidata|label|linked|Q82502}} <!-- Barotac Nuevo --> * {{wikidata|label|linked|Q82493}} <!-- Barotac Viejo --> * {{wikidata|label|linked|Q274654}} <!-- Batad --> * {{wikidata|label|linked|Q274671}} <!-- Bingawan --> * {{wikidata|label|linked|Q274693}} <!-- Cabatuan --> * {{wikidata|label|linked|Q274713}} <!-- Calinog --> * {{wikidata|label|linked|Q274731}} <!-- Carles --> * {{wikidata|label|linked|Q274749}} <!-- Concepcion --> * {{wikidata|label|linked|Q274780}} <!-- Dingle --> * {{wikidata|label|linked|Q274795}} <!-- Dueñas --> * {{wikidata|label|linked|Q74758}} <!-- Dumangas --> * {{wikidata|label|linked|Q82506}} <!-- Estancia --> * {{wikidata|label|linked|Q274847}} <!-- Guimbal --> * {{wikidata|label|linked|Q74755}} <!-- Igbaras --> * {{wikidata|label|linked|Q82570}} <!-- Janiuay --> * {{wikidata|label|linked|Q274907}} <!-- Lambunao --> * {{wikidata|label|linked|Q274937}} <!-- Leganes --> * {{wikidata|label|linked|Q274961}} <!-- Lemery --> * {{wikidata|label|linked|Q274987}} <!-- Leon --> * {{wikidata|label|linked|Q275015}} <!-- Maasin --> * {{wikidata|label|linked|Q74753}} <!-- Miagao --> * {{wikidata|label|linked|Q275071}} <!-- Mina --> * {{wikidata|label|linked|Q275184}} <!-- New Lucena --> * {{wikidata|label|linked|Q275199}} <!-- Oton --> * {{wikidata|label|linked|Q275221}} <!-- Pavia --> * {{wikidata|label|linked|Q275243}} <!-- Pototan --> * {{wikidata|label|linked|Q275264}} <!-- San Dionisio --> * {{wikidata|label|linked|Q275280}} <!-- San Enrique --> * {{wikidata|label|linked|Q275295}} <!-- San Joaquin --> * {{wikidata|label|linked|Q275312}} <!-- San Miguel --> * {{wikidata|label|linked|Q275329}} <!-- San Rafael --> * {{wikidata|label|linked|Q275347}} <!-- Santa Barbara --> * {{wikidata|label|linked|Q275368}} <!-- Sara --> * {{wikidata|label|linked|Q82497}} <!-- Tigbauan --> * {{wikidata|label|linked|Q275417}} <!-- Tubungan --> * {{wikidata|label|linked|Q148064}} <!-- Zarraga --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q459787}} <!--Iloilo City--> * {{wikidata|label|linked|Q1855693}} <!--Passi --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Iloilo| ]] </noinclude> 44jsh3zx0ta5j175kfqnbqnish98zm0 Template:Negros Occidental 10 6996 79613 66200 2026-04-29T14:00:29Z Exec8 2783 79613 wikitext text/x-wiki {{Navbox |name = Negros Occidental |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Negros Occidental]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13862|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q195243}} <!-- Binalbagan --> * {{wikidata|label|linked|Q195258}} <!-- Calatrava --> * {{wikidata|label|linked|Q195272}} <!-- Candoni --> * {{wikidata|label|linked|Q195287}} <!-- Cauayan --> * {{wikidata|label|linked|Q195304}} <!-- Enrique B. Magalona --> * {{wikidata|label|linked|Q195322}} <!-- Hinigaran --> * {{wikidata|label|linked|Q195336}} <!-- Hinoba-an --> * {{wikidata|label|linked|Q195352}} <!-- Ilog --> * {{wikidata|label|linked|Q195373}} <!-- Isabela --> * {{wikidata|label|linked|Q195397}} <!-- La Castellana --> * {{wikidata|label|linked|Q195418}} <!-- Manapla --> * {{wikidata|label|linked|Q195438}} <!-- Moises Padilla --> * {{wikidata|label|linked|Q195459}} <!-- Murcia --> * {{wikidata|label|linked|Q195477}} <!-- Pontevedra --> * {{wikidata|label|linked|Q195489}} <!-- Pulupandan --> * {{wikidata|label|linked|Q120708094}} <!-- Don Salvador Benedicto --> * {{wikidata|label|linked|Q195523}} <!-- San Enrique --> * {{wikidata|label|linked|Q195549}} <!-- Toboso --> * {{wikidata|label|linked|Q195569}} <!-- Valladolid --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q5217}} <!--Bacolod--> * {{wikidata|label|linked|Q628297}} <!--Bago --> * {{wikidata|label|linked|Q1020688}} <!--Cadiz --> * {{wikidata|label|linked|Q1027743}} <!--Escalante --> * {{wikidata|label|linked|Q1423846}} <!--Himamaylan --> * {{wikidata|label|linked|Q1026445}} <!--Kabankalan --> * {{wikidata|label|linked|Q1789908}} <!--La Carlota --> * {{wikidata|label|linked|Q1787527}} <!--Sagay, Negros Occidental|Sagay --> * {{wikidata|label|linked|Q1025390}} <!--San Carlos, Negros Occidental --> * {{wikidata|label|linked|Q1020696}} <!--Silay --> * {{wikidata|label|linked|Q1027115}} <!--Sipalay --> * {{wikidata|label|linked|Q1027120}} <!--Talisay, Negros Occidental --> * {{wikidata|label|linked|Q1026021}} <!--Victorias --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Negros Occidental| ]] </noinclude> flmo5fsc5guta85be6n2xp5k32oetrh Template:Bohol 10 7001 79556 62115 2026-04-29T12:57:39Z Exec8 2783 79556 wikitext text/x-wiki {{Navbox |name = Bohol |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Bohol]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13752|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q404369}} <!-- Alburquerque --> * {{wikidata|label|linked|Q404403}} <!-- Alicia --> * {{wikidata|label|linked|Q404434}} <!-- Anda --> * {{wikidata|label|linked|Q404459}} <!-- Antequera --> * {{wikidata|label|linked|Q404489}} <!-- Baclayon --> * {{wikidata|label|linked|Q404519}} <!-- Balilihan --> * {{wikidata|label|linked|Q404549}} <!-- Batuan --> * {{wikidata|label|linked|Q404581}} <!-- Bien Unido --> * {{wikidata|label|linked|Q404604}} <!-- Bilar --> * {{wikidata|label|linked|Q404623}} <!-- Buenavista --> * {{wikidata|label|linked|Q404652}} <!-- Calape --> * {{wikidata|label|linked|Q404680}} <!-- Candijay --> * {{wikidata|label|linked|Q241239}} <!-- Carmen --> * {{wikidata|label|linked|Q404750}} <!-- Catigbian --> * {{wikidata|label|linked|Q404775}} <!-- Clarin --> * {{wikidata|label|linked|Q404799}} <!-- Corella --> * {{wikidata|label|linked|Q404825}} <!-- Cortes --> * {{wikidata|label|linked|Q404854}} <!-- Dagohoy --> * {{wikidata|label|linked|Q404882}} <!-- Danao --> * {{wikidata|label|linked|Q404908}} <!-- Dauis --> * {{wikidata|label|linked|Q404930}} <!-- Dimiao --> * {{wikidata|label|linked|Q404951}} <!-- Duero --> * {{wikidata|label|linked|Q404976}} <!-- Garcia Hernandez --> * {{wikidata|label|linked|Q405005}} <!-- Getafe --> * {{wikidata|label|linked|Q405058}} <!-- Guindulman --> * {{wikidata|label|linked|Q405088}} <!-- Inabanga --> * {{wikidata|label|linked|Q405110}} <!-- Jagna --> * {{wikidata|label|linked|Q405141}} <!-- Lila --> * {{wikidata|label|linked|Q405171}} <!-- Loay --> * {{wikidata|label|linked|Q405197}} <!-- Loboc --> * {{wikidata|label|linked|Q405224}} <!-- Loon --> * {{wikidata|label|linked|Q405268}} <!-- Mabini --> * {{wikidata|label|linked|Q405303}} <!-- Maribojoc --> * {{wikidata|label|linked|Q178330}} <!-- Panglao --> * {{wikidata|label|linked|Q405384}} <!-- Pilar --> * {{wikidata|label|linked|Q405427}} <!-- President Carlos P. Garcia --> * {{wikidata|label|linked|Q405472}} <!-- Sagbayan --> * {{wikidata|label|linked|Q259298}} <!-- San Isidro --> * {{wikidata|label|linked|Q405544}} <!-- San Miguel --> * {{wikidata|label|linked|Q386388}} <!-- Sevilla --> * {{wikidata|label|linked|Q405628}} <!-- Sierra Bullones --> * {{wikidata|label|linked|Q405674}} <!-- Sikatuna --> * {{wikidata|label|linked|Q405714}} <!-- Talibon --> * {{wikidata|label|linked|Q405749}} <!-- Trinidad --> * {{wikidata|label|linked|Q405980}} <!-- Tubigon --> * {{wikidata|label|linked|Q406015}} <!-- Ubay --> * {{wikidata|label|linked|Q406046}} <!-- Valencia --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q1826}} <!--Tagbilaran --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Bohol| ]] </noinclude> p3j7sft20ttqcvyvn8vltpqp57j24i6 Template:Zambales 10 7363 79639 62189 2026-04-29T14:28:03Z Exec8 2783 79639 wikitext text/x-wiki {{Navbox |name = Zambales |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Zambales]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13895|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q56529}} <!-- Botolan --> * {{wikidata|label|linked|Q56533}} <!-- Cabangan --> * {{wikidata|label|linked|Q56538}} <!-- Candelaria --> * {{wikidata|label|linked|Q56561}} <!-- Castillejos --> * {{wikidata|label|linked|Q56566}} <!-- Iba --> * {{wikidata|label|linked|Q56572}} <!-- Masinloc --> * {{wikidata|label|linked|Q56575}} <!-- Palauig --> * {{wikidata|label|linked|Q56581}} <!-- San Antonio --> * {{wikidata|label|linked|Q56584}} <!-- San Felipe --> * {{wikidata|label|linked|Q56623}} <!-- San Marcelino --> * {{wikidata|label|linked|Q56647}} <!-- San Narciso --> * {{wikidata|label|linked|Q56656}} <!-- Santa Cruz --> * {{wikidata|label|linked|Q56663}} <!-- Subic --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q56759}} <!--Olongapo--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Zambales| ]] </noinclude> s4ov4ou6jllyzo4nixz09o27p4v26y4 Template:Laguna 10 7557 79599 63208 2026-04-29T13:49:30Z Exec8 2783 79599 wikitext text/x-wiki {{Navbox |name = Laguna |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Laguna]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13840|P36}}''' (kapital) |listclass = hlist |image = |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q63750}} <!-- Alaminos --> * {{wikidata|label|linked|Q63763}} <!-- Bay --> * {{wikidata|label|linked|Q69739}} <!-- Calauan --> * {{wikidata|label|linked|Q69749}} <!-- Cavinti --> * {{wikidata|label|linked|Q69759}} <!-- Famy --> * {{wikidata|label|linked|Q69771}} <!-- Kalayaan --> * {{wikidata|label|linked|Q69781}} <!-- Liliw --> * {{wikidata|label|linked|Q69793}} <!-- Los Baños --> * {{wikidata|label|linked|Q69812}} <!-- Luisiana --> * {{wikidata|label|linked|Q69824}} <!-- Lumban --> * {{wikidata|label|linked|Q75875}} <!-- Mabitac --> * {{wikidata|label|linked|Q75881}} <!-- Magdalena --> * {{wikidata|label|linked|Q75888}} <!-- Majayjay --> * {{wikidata|label|linked|Q75895}} <!-- Nagcarlan --> * {{wikidata|label|linked|Q75899}} <!-- Paete --> * {{wikidata|label|linked|Q75905}} <!-- Pagsanjan --> * {{wikidata|label|linked|Q75910}} <!-- Pakil --> * {{wikidata|label|linked|Q75918}} <!-- Pangil --> * {{wikidata|label|linked|Q75923}} <!-- Pila --> * {{wikidata|label|linked|Q75928}} <!-- Rizal --> * {{wikidata|label|linked|Q75938}} <!-- Santa Cruz --> * {{wikidata|label|linked|Q75943}} <!-- Santa Maria --> * {{wikidata|label|linked|Q75948}} <!-- Siniloan --> * {{wikidata|label|linked|Q75953}} <!-- Victoria --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q75961}} <!--Biñan --> * {{wikidata|label|linked|Q25096}} <!--Cabuyao --> * {{wikidata|label|linked|Q75978}} <!--Calamba --> * {{wikidata|label|linked|Q76001}} <!--San Pablo, Laguna|San Pablo --> * {{wikidata|label|linked|Q75933}} <!--San Pedro, Laguna|San Pedro --> * {{wikidata|label|linked|Q76010}} <!--Santa Rosa, Laguna|Santa Rosa --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Laguna| ]] </noinclude> jd2awcin9zozuogvnayva10q84inkeo Template:Batangas 10 7625 79553 66507 2026-04-29T12:54:49Z Exec8 2783 79553 wikitext text/x-wiki {{Navbox |name = Batangas |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Batangas]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13744|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q59250}} <!-- Agoncillo --> * {{wikidata|label|linked|Q59251}} <!-- Alitagtag --> * {{wikidata|label|linked|Q59252}} <!-- Balayan --> * {{wikidata|label|linked|Q59253}} <!-- Balete --> * {{wikidata|label|linked|Q59272}} <!-- Bauan --> * {{wikidata|label|linked|Q59279}} <!-- Calatagan --> * {{wikidata|label|linked|Q59287}} <!-- Cuenca --> * {{wikidata|label|linked|Q59304}} <!-- Ibaan --> * {{wikidata|label|linked|Q59308}} <!-- Laurel --> * {{wikidata|label|linked|Q59311}} <!-- Lemery --> * {{wikidata|label|linked|Q59312}} <!-- Lian --> * {{wikidata|label|linked|Q803199}} <!-- Lobo --> * {{wikidata|label|linked|Q59313}} <!-- Mabini --> * {{wikidata|label|linked|Q59731}} <!-- Malvar --> * {{wikidata|label|linked|Q59740}} <!-- Mataasnakahoy --> * {{wikidata|label|linked|Q59745}} <!-- Nasugbu --> * {{wikidata|label|linked|Q59749}} <!-- Padre Garcia --> * {{wikidata|label|linked|Q59758}} <!-- Rosario --> * {{wikidata|label|linked|Q59764}} <!-- San Jose --> * {{wikidata|label|linked|Q59770}} <!-- San Juan --> * {{wikidata|label|linked|Q59773}} <!-- San Luis --> * {{wikidata|label|linked|Q59777}} <!-- San Nicolas --> * {{wikidata|label|linked|Q59784}} <!-- San Pascual --> * {{wikidata|label|linked|Q59788}} <!-- Santa Teresita --> * {{wikidata|label|linked|Q59814}} <!-- Taal --> * {{wikidata|label|linked|Q59825}} <!-- Talisay --> * {{wikidata|label|linked|Q59830}} <!-- Taysan --> * {{wikidata|label|linked|Q59835}} <!-- Tingloy --> * {{wikidata|label|linked|Q59844}} <!-- Tuy --> |group3 = Saray siyudad |list3 = * {{wikidata|label|linked|Q1723}} <!--Batangas City --> * {{wikidata|label|linked|Q59276}} <!-- Calaca --> * {{wikidata|label|linked|Q1725}} <!--Lipa --> * {{wikidata|label|linked|Q59799}} <!--Santo Tomas, Batangas|Santo Tomas --> * {{wikidata|label|linked|Q1730}} <!--Tanauan, Batangas|Tanauan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Batangas| ]] </noinclude> oev3urf1x6vuq1beua08bhffwqskrek Template:Quezon 10 7706 79623 66316 2026-04-29T14:10:37Z Exec8 2783 79623 wikitext text/x-wiki {{Navbox |name = Quezon |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Quezon]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13872|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q103777}} <!-- Agdangan --> * {{wikidata|label|linked|Q103786}} <!-- Alabat --> * {{wikidata|label|linked|Q103807}} <!-- Atimonan --> * {{wikidata|label|linked|Q103815}} <!-- Buenavista --> * {{wikidata|label|linked|Q103825}} <!-- Burdeos --> * {{wikidata|label|linked|Q103833}} <!-- Calauag --> * {{wikidata|label|linked|Q103841}} <!-- Candelaria --> * {{wikidata|label|linked|Q103872}} <!-- Catanauan --> * {{wikidata|label|linked|Q103879}} <!-- Dolores --> * {{wikidata|label|linked|Q103889}} <!-- General Luna --> * {{wikidata|label|linked|Q103899}} <!-- General Nakar --> * {{wikidata|label|linked|Q103905}} <!-- Guinayangan --> * {{wikidata|label|linked|Q103914}} <!-- Gumaca --> * {{wikidata|label|linked|Q103921}} <!-- Infanta --> * {{wikidata|label|linked|Q103928}} <!-- Jomalig --> * {{wikidata|label|linked|Q103935}} <!-- Lopez --> * {{wikidata|label|linked|Q103941}} <!-- Lucban --> * {{wikidata|label|linked|Q103947}} <!-- Macalelon --> * {{wikidata|label|linked|Q103952}} <!-- Mauban --> * {{wikidata|label|linked|Q103958}} <!-- Mulanay --> * {{wikidata|label|linked|Q103965}} <!-- Padre Burgos --> * {{wikidata|label|linked|Q103971}} <!-- Pagbilao --> * {{wikidata|label|linked|Q103976}} <!-- Panukulan --> * {{wikidata|label|linked|Q103981}} <!-- Patnanungan --> * {{wikidata|label|linked|Q103987}} <!-- Perez --> * {{wikidata|label|linked|Q103996}} <!-- Pitogo --> * {{wikidata|label|linked|Q104005}} <!-- Plaridel --> * {{wikidata|label|linked|Q104011}} <!-- Polillo --> * {{wikidata|label|linked|Q104020}} <!-- Quezon --> * {{wikidata|label|linked|Q104026}} <!-- Real --> * {{wikidata|label|linked|Q104037}} <!-- Sampaloc --> * {{wikidata|label|linked|Q104044}} <!-- San Andres --> * {{wikidata|label|linked|Q104052}} <!-- San Antonio --> * {{wikidata|label|linked|Q104063}} <!-- San Francisco --> * {{wikidata|label|linked|Q104071}} <!-- San Narciso --> * {{wikidata|label|linked|Q104078}} <!-- Sariaya --> * {{wikidata|label|linked|Q104087}} <!-- Tagkawayan --> * {{wikidata|label|linked|Q104092}} <!-- Tiaong --> * {{wikidata|label|linked|Q104099}} <!-- Unisan --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q104125}} <!--Lucena--> * {{wikidata|label|linked|Q104113}} <!--Tayabas --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Quezon| ]] </noinclude> k6v9rxpe52r4ect0wiekygc79sxcjw5 Template:Bulacan 10 7755 79558 66297 2026-04-29T12:59:34Z Exec8 2783 79558 wikitext text/x-wiki {{Navbox |name = Bulacan |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Bulacan]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13755|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q54551}} <!-- Angat --> * {{wikidata|label|linked|Q54553}} <!-- Balagtas --> * {{wikidata|label|linked|Q54555}} <!-- Bocaue --> * {{wikidata|label|linked|Q54558}} <!-- Bulacan --> * {{wikidata|label|linked|Q54560}} <!-- Bustos --> * {{wikidata|label|linked|Q54564}} <!-- Calumpit --> * {{wikidata|label|linked|Q54566}} <!-- Doña Remedios Trinidad --> * {{wikidata|label|linked|Q54589}} <!-- Guiguinto --> * {{wikidata|label|linked|Q54592}} <!-- Hagonoy --> * {{wikidata|label|linked|Q54595}} <!-- Marilao --> * {{wikidata|label|linked|Q54598}} <!-- Norzagaray --> * {{wikidata|label|linked|Q54599}} <!-- Obando --> * {{wikidata|label|linked|Q54600}} <!-- Pandi --> * {{wikidata|label|linked|Q54605}} <!-- Paombong --> * {{wikidata|label|linked|Q54760}} <!-- Plaridel --> * {{wikidata|label|linked|Q54761}} <!-- Pulilan --> * {{wikidata|label|linked|Q54762}} <!-- San Ildefonso --> * {{wikidata|label|linked|Q54763}} <!-- San Miguel --> * {{wikidata|label|linked|Q54765}} <!-- San Rafael --> * {{wikidata|label|linked|Q54768}} <!-- Santa Maria --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q54554}} <!-- Baliwag --> * {{wikidata|label|linked|Q2180}} <!--Malolos --> * {{wikidata|label|linked|Q2187}} <!--Meycauayan --> * {{wikidata|label|linked|Q2193}} <!--San Jose del Monte --> }}<noinclude> [[Category:Saray baley na Bulacan| ]] </noinclude> lcgf7cn6z8k5sm0riifvg6umf86uy1a Template:Rizal 10 7776 79625 64558 2026-04-29T14:14:03Z Exec8 2783 79625 wikitext text/x-wiki {{Navbox |name = Rizal |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Rizal]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13874|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q106758}} <!-- Angono --> * {{wikidata|label|linked|Q106766}} <!-- Baras --> * {{wikidata|label|linked|Q106783}} <!-- Binangonan --> * {{wikidata|label|linked|Q106790}} <!-- Cainta --> * {{wikidata|label|linked|Q106796}} <!-- Cardona --> * {{wikidata|label|linked|Q106804}} <!-- Jalajala --> * {{wikidata|label|linked|Q106810}} <!-- Morong --> * {{wikidata|label|linked|Q106817}} <!-- Pililla --> * {{wikidata|label|linked|Q106825}} <!-- Rodriguez (Montalban) --> * {{wikidata|label|linked|Q106832}} <!-- San Mateo --> * {{wikidata|label|linked|Q106839}} <!-- Tanay --> * {{wikidata|label|linked|Q373204}} <!-- Taytay --> * {{wikidata|label|linked|Q106848}} <!-- Teresa --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1636}} <!--Antipolo --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Rizal| ]] </noinclude> tc1qykvd0kiwo8c5z1m7pym2bb4uob5 Template:Aurora 10 7818 79549 62354 2026-04-29T12:50:38Z Exec8 2783 . 79549 wikitext text/x-wiki {{Navbox |name = Aurora |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Aurora]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13730|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q53081}} <!-- Baler --> * {{wikidata|label|linked|Q53083}} <!-- Casiguran --> * {{wikidata|label|linked|Q53084}} <!-- Dilasag --> * {{wikidata|label|linked|Q53086}} <!-- Dinalungan --> * {{wikidata|label|linked|Q53087}} <!-- Dingalan --> * {{wikidata|label|linked|Q53089}} <!-- Dipaculao --> * {{wikidata|label|linked|Q53090}} <!-- Maria Aurora --> * {{wikidata|label|linked|Q53092}} <!-- San Luis --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Aurora| ]] </noinclude> atkrkpcfth91njbtdx14nfdiqo5pjmj Template:Nueva Ecija 10 7849 79616 66776 2026-04-29T14:03:38Z Exec8 2783 79616 wikitext text/x-wiki {{Navbox |name = Nueva Ecija |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Nueva Ecija]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13865|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q55543}} <!-- Aliaga --> * {{wikidata|label|linked|Q55544}} <!-- Bongabon --> * {{wikidata|label|linked|Q55545}} <!-- Cabiao --> * {{wikidata|label|linked|Q55546}} <!-- Carranglan --> * {{wikidata|label|linked|Q55547}} <!-- Cuyapo --> * {{wikidata|label|linked|Q55548}} <!-- Gabaldon --> * {{wikidata|label|linked|Q55549}} <!-- General Mamerto Natividad --> * {{wikidata|label|linked|Q55551}} <!-- General Tinio --> * {{wikidata|label|linked|Q55552}} <!-- Guimba --> * {{wikidata|label|linked|Q30871}} <!-- Jaen --> * {{wikidata|label|linked|Q55556}} <!-- Laur --> * {{wikidata|label|linked|Q55557}} <!-- Licab --> * {{wikidata|label|linked|Q55558}} <!-- Llanera --> * {{wikidata|label|linked|Q55559}} <!-- Lupao --> * {{wikidata|label|linked|Q55560}} <!-- Nampicuan --> * {{wikidata|label|linked|Q55567}} <!-- Pantabangan --> * {{wikidata|label|linked|Q55568}} <!-- Peñaranda --> * {{wikidata|label|linked|Q55569}} <!-- Quezon --> * {{wikidata|label|linked|Q55570}} <!-- Rizal --> * {{wikidata|label|linked|Q30923}} <!-- San Antonio --> * {{wikidata|label|linked|Q55572}} <!-- San Isidro --> * {{wikidata|label|linked|Q55573}} <!-- San Leonardo --> * {{wikidata|label|linked|Q55590}} <!-- Santa Rosa --> * {{wikidata|label|linked|Q55591}} <!-- Santo Domingo --> * {{wikidata|label|linked|Q55592}} <!-- Talavera --> * {{wikidata|label|linked|Q55593}} <!-- Talugtug --> * {{wikidata|label|linked|Q28731}} <!-- Zaragoza --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q55595}} <!--Cabanatuan --> * {{wikidata|label|linked|Q55596}} <!--Gapan --> * {{wikidata|label|linked|Q55597}} <!--Muñoz --> * {{wikidata|label|linked|Q55598}} <!--Palayan --> * {{wikidata|label|linked|Q55599}} <!--San Jose, Nueva Ecija --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Nueva Ecija| ]] </noinclude> q488dy5w7sqogcry04r9z9teq5ty2ec Template:Sarangani 10 7956 79628 62178 2026-04-29T14:16:44Z Exec8 2783 79628 wikitext text/x-wiki {{Navbox |name = Sarangani |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Sarangani]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13877|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q174393}} <!-- Alabel --> * {{wikidata|label|linked|Q174403}} <!-- Glan --> * {{wikidata|label|linked|Q174417}} <!-- Kiamba --> * {{wikidata|label|linked|Q174429}} <!-- Maasim --> * {{wikidata|label|linked|Q174442}} <!-- Maitum --> * {{wikidata|label|linked|Q174457}} <!-- Malapatan --> * {{wikidata|label|linked|Q174468}} <!-- Malungon --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Sarangani| ]] </noinclude> 13eshehz0bivaaxtrexcdd402uynzn5 Template:Basilan 10 7958 79550 62105 2026-04-29T12:51:48Z Exec8 2783 79550 wikitext text/x-wiki {{Navbox |name = Basilan |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Basilan]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13737|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q42589}} <!-- Akbar --> * {{wikidata|label|linked|Q41999}} <!-- Al-Barka --> * {{wikidata|label|linked|Q41998}} <!-- Hadji Mohammad Ajul --> * {{wikidata|label|linked|Q802075}} <!-- Hadji Muhtamad --> * {{wikidata|label|linked|Q802107}} <!-- Lantawan --> * {{wikidata|label|linked|Q802142}} <!-- Maluso --> * {{wikidata|label|linked|Q802171}} <!-- Sumisip --> * {{wikidata|label|linked|Q802202}} <!-- Tabuan-Lasa --> * {{wikidata|label|linked|Q667595}} <!-- Tipo-Tipo --> * {{wikidata|label|linked|Q630096}} <!-- Tuburan --> * {{wikidata|label|linked|Q204771}} <!-- Ungkaya Pukan --> |group3 = Saray siyudad |list3 = * {{wikidata|label|linked|Q1710}} <!--Isabela City--> * {{wikidata|label|linked|Q1714}} <!--Lamitan--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Basilan| ]] </noinclude> nwd92ruy3043pa7wu6cp0cwldim9h4u Template:Sulu 10 7991 79634 79441 2026-04-29T14:23:22Z Exec8 2783 79634 wikitext text/x-wiki {{Navbox |name = Sulu |title = Saray [[:Category:Saray baley na Filipinas|baley]] na {{wikidata|label|linked|Q13887}} |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13887|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q155970}} <!-- Banguingui --> * {{wikidata|label|linked|Q155983}} <!-- Hadji Panglima Tahil --> * {{wikidata|label|linked|Q156008}} <!-- Indanan --> * {{wikidata|label|linked|Q156024}} <!-- Jolo --> * {{wikidata|label|linked|Q156042}} <!-- Kalingalan Caluang --> * {{wikidata|label|linked|Q156055}} <!-- Lugus --> * {{wikidata|label|linked|Q156071}} <!-- Luuk --> * {{wikidata|label|linked|Q156090}} <!-- Maimbung --> * {{wikidata|label|linked|Q156126}} <!-- Omar --> * {{wikidata|label|linked|Q156107}} <!-- Panamao (old) --> * {{wikidata|label|linked|Q156159}} <!-- Pandami --> * {{wikidata|label|linked|Q156180}} <!-- Panglima Estino --> * {{wikidata|label|linked|Q156195}} <!-- Pangutaran --> * {{wikidata|label|linked|Q156208}} <!-- Parang --> * {{wikidata|label|linked|Q156225}} <!-- Pata --> * {{wikidata|label|linked|Q156244}} <!-- Patikul --> * {{wikidata|label|linked|Q156263}} <!-- Siasi --> * {{wikidata|label|linked|Q156285}} <!-- Talipao --> * {{wikidata|label|linked|Q156302}} <!-- Tapul --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Sulu| ]] </noinclude> egwq67g7p60hhy1i7w10x62xdxa7ila Template:Oriental Mindoro 10 8098 79619 62169 2026-04-29T14:06:00Z Exec8 2783 79619 wikitext text/x-wiki {{Navbox |name = Oriental Mindoro |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Oriental Mindoro]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13868|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q107538}} <!-- Baco --> * {{wikidata|label|linked|Q107543}} <!-- Bansud --> * {{wikidata|label|linked|Q107550}} <!-- Bongabong --> * {{wikidata|label|linked|Q107554}} <!-- Bulalacao --> * {{wikidata|label|linked|Q107559}} <!-- Gloria --> * {{wikidata|label|linked|Q107567}} <!-- Mansalay --> * {{wikidata|label|linked|Q107573}} <!-- Naujan --> * {{wikidata|label|linked|Q107578}} <!-- Pinamalayan --> * {{wikidata|label|linked|Q107585}} <!-- Pola --> * {{wikidata|label|linked|Q107593}} <!-- Puerto Galera --> * {{wikidata|label|linked|Q107598}} <!-- Roxas --> * {{wikidata|label|linked|Q107606}} <!-- San Teodoro --> * {{wikidata|label|linked|Q107612}} <!-- Socorro --> * {{wikidata|label|linked|Q107618}} <!-- Victoria --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q107624}} <!--Calapan --> }}<noinclude> [[Category:Saray baley na Oriental Mindoro| ]] </noinclude> 2ubgcmzj1iiyob9pgkhoxc5kklchjyt Template:Cebu 10 8115 79566 62760 2026-04-29T13:09:59Z Exec8 2783 79566 wikitext text/x-wiki {{Navbox |name = Cebu |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Cebu]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13786|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q315636}} <!-- Alcantara --> * {{wikidata|label|linked|Q315655}} <!-- Alcoy --> * {{wikidata|label|linked|Q315669}} <!-- Alegria --> * {{wikidata|label|linked|Q315687}} <!-- Aloguinsan --> * {{wikidata|label|linked|Q315703}} <!-- Argao --> * {{wikidata|label|linked|Q315719}} <!-- Asturias --> * {{wikidata|label|linked|Q315733}} <!-- Badian --> * {{wikidata|label|linked|Q315754}} <!-- Balamban --> * {{wikidata|label|linked|Q315771}} <!-- Bantayan --> * {{wikidata|label|linked|Q315790}} <!-- Barili --> * {{wikidata|label|linked|Q315809}} <!-- Boljoon --> * {{wikidata|label|linked|Q315827}} <!-- Borbon --> * {{wikidata|label|linked|Q315882}} <!-- Carmen --> * {{wikidata|label|linked|Q315900}} <!-- Catmon --> * {{wikidata|label|linked|Q315923}} <!-- Compostela --> * {{wikidata|label|linked|Q315945}} <!-- Consolacion --> * {{wikidata|label|linked|Q315965}} <!-- Cordova --> * {{wikidata|label|linked|Q315981}} <!-- Daanbantayan --> * {{wikidata|label|linked|Q316001}} <!-- Dalaguete --> * {{wikidata|label|linked|Q316019}} <!-- Dumanjug --> * {{wikidata|label|linked|Q316037}} <!-- Ginatilan --> * {{wikidata|label|linked|Q316056}} <!-- Liloan --> * {{wikidata|label|linked|Q316080}} <!-- Madridejos --> * {{wikidata|label|linked|Q316101}} <!-- Malabuyoc --> * {{wikidata|label|linked|Q316125}} <!-- Medellin --> * {{wikidata|label|linked|Q316146}} <!-- Minglanilla --> * {{wikidata|label|linked|Q316171}} <!-- Moalboal --> * {{wikidata|label|linked|Q316230}} <!-- Oslob --> * {{wikidata|label|linked|Q316245}} <!-- Pilar --> * {{wikidata|label|linked|Q316259}} <!-- Pinamungahan --> * {{wikidata|label|linked|Q316275}} <!-- Poro --> * {{wikidata|label|linked|Q316289}} <!-- Ronda --> * {{wikidata|label|linked|Q316303}} <!-- Samboan --> * {{wikidata|label|linked|Q316318}} <!-- San Fernando --> * {{wikidata|label|linked|Q316332}} <!-- San Francisco --> * {{wikidata|label|linked|Q316350}} <!-- San Remigio --> * {{wikidata|label|linked|Q316370}} <!-- Santa Fe --> * {{wikidata|label|linked|Q316386}} <!-- Santander --> * {{wikidata|label|linked|Q316404}} <!-- Sibonga --> * {{wikidata|label|linked|Q316432}} <!-- Sogod --> * {{wikidata|label|linked|Q316453}} <!-- Tabogon --> * {{wikidata|label|linked|Q316474}} <!-- Tabuelan --> * {{wikidata|label|linked|Q316547}} <!-- Tuburan --> * {{wikidata|label|linked|Q316564}} <!-- Tudela --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q890623}} <!--Bogo, Cebu|Bogo --> * {{wikidata|label|linked|Q315851}} <!--Carcar --> * {{wikidata|label|linked|Q1467}} <!--Cebu City--> * {{wikidata|label|linked|Q1159273}} <!--Danao, Cebu|Danao --> * {{wikidata|label|linked|Q574903}} <!--Lapu-Lapu--> * {{wikidata|label|linked|Q1889017}} <!--Mandaue--> * {{wikidata|label|linked|Q316197}} <!--Naga, Cebu --> * {{wikidata|label|linked|Q316500}} <!--Talisay, Cebu --> * {{wikidata|label|linked|Q316527}} <!--Toledo, Cebu|Toledo --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Cebu| ]] </noinclude> abzodcwyq0tql6j0jfpl1z3n2ivou22 Template:Sorsogon 10 8315 79630 62180 2026-04-29T14:18:44Z Exec8 2783 79630 wikitext text/x-wiki {{Navbox |name = Sorsogon |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Sorsogon]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13881|P36}}''' (kapital) |listclass = hlist |image = |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q174114}} <!-- Barcelona --> * {{wikidata|label|linked|Q174132}} <!-- Bulan --> * {{wikidata|label|linked|Q174149}} <!-- Bulusan --> * {{wikidata|label|linked|Q174162}} <!-- Casiguran --> * {{wikidata|label|linked|Q174177}} <!-- Castilla --> * {{wikidata|label|linked|Q174192}} <!-- Donsol --> * {{wikidata|label|linked|Q174201}} <!-- Gubat --> * {{wikidata|label|linked|Q174215}} <!-- Irosin --> * {{wikidata|label|linked|Q174226}} <!-- Juban --> * {{wikidata|label|linked|Q174236}} <!-- Magallanes --> * {{wikidata|label|linked|Q174246}} <!-- Matnog --> * {{wikidata|label|linked|Q174255}} <!-- Pilar --> * {{wikidata|label|linked|Q174269}} <!-- Prieto Diaz --> * {{wikidata|label|linked|Q174281}} <!-- Santa Magdalena --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q174096}} <!--Sorsogon City --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Sorsogon| ]] </noinclude> aq42xpo19zl0us1569xr8r8fvcy2jpi Template:Romblon 10 8318 79626 63728 2026-04-29T14:14:58Z Exec8 2783 79626 wikitext text/x-wiki {{Navbox |name = Romblon |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Romblon]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13875|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q174497}} <!-- Alcantara --> * {{wikidata|label|linked|Q174511}} <!-- Banton --> * {{wikidata|label|linked|Q174525}} <!-- Cajidiocan --> * {{wikidata|label|linked|Q174544}} <!-- Calatrava --> * {{wikidata|label|linked|Q174562}} <!-- Concepcion --> * {{wikidata|label|linked|Q174575}} <!-- Corcuera --> * {{wikidata|label|linked|Q174591}} <!-- Ferrol --> * {{wikidata|label|linked|Q174607}} <!-- Looc --> * {{wikidata|label|linked|Q174620}} <!-- Magdiwang --> * {{wikidata|label|linked|Q174632}} <!-- Odiongan --> * {{wikidata|label|linked|Q174649}} <!-- Romblon --> * {{wikidata|label|linked|Q174659}} <!-- San Agustin --> * {{wikidata|label|linked|Q174667}} <!-- San Andres --> * {{wikidata|label|linked|Q174676}} <!-- San Fernando --> * {{wikidata|label|linked|Q174689}} <!-- San Jose --> * {{wikidata|label|linked|Q174702}} <!-- Santa Fe --> * {{wikidata|label|linked|Q174717}} <!-- Santa Maria --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Romblon| ]] </noinclude> skvkknytw83ffyzdancdz33a55jgnky Module:String 828 8713 79580 69170 2026-04-29T13:30:37Z Exec8 2783 79580 Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The first index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = string.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end -- findpagetext returns the position of a piece of text in a page -- First positional parameter or |text is the search text -- Optional parameter |title is the page title, defaults to current page -- Optional parameter |plain is either true for plain search (default) or false for Lua pattern search -- Optional parameter |nomatch is the return value when no match is found; default is nil function str._findpagetext(args) -- process parameters local nomatch = args.nomatch or "" if nomatch == "" then nomatch = nil end -- local text = mw.text.trim(args[1] or args.text or "") if text == "" then return nil end -- local title = args.title or "" local titleobj if title == "" then titleobj = mw.title.getCurrentTitle() else titleobj = mw.title.new(title) end -- local plain = args.plain or "" if plain:sub(1, 1) == "f" then plain = false else plain = true end -- get the page content and look for 'text' - return position or nomatch local content = titleobj and titleobj:getContent() return content and mw.ustring.find(content, text, 1, plain) or nomatch end function str.findpagetext(frame) local args = frame.args local pargs = frame:getParent().args for k, v in pairs(pargs) do args[k] = v end if not (args[1] or args.text) then return nil end -- just the first value return (str._findpagetext(args)) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return ( string.gsub( pattern_str, "[%(%)%.%%%+%-%*%?%[%^%$%]]", "%%%0" ) ) end return str j3b8d4sejqnvazpfl0gk0yfaa503gli San Miguel, Bulacan 0 8949 79645 70903 2026-04-30T02:05:30Z ~2026-26161-46 9872 Add the official website link 79645 wikitext text/x-wiki {{Infobox location}} Say '''{{PH wikidata|name}}''' et {{PH wikidata|income_class}} ed luyag na {{PH wikidata|province}}, [[Filipinas]]. Unong ed {{wikidata|qualifier|single|P1082|P585}} census, say populasyon to et {{PH wikidata|population_total}} totoo tan {{PH wikidata|household}} abong. Walay kabaleg tan sukat to ya {{PH wikidata|area}} sq. km. Say zip code to et {{PH wikidata|postal_code}}. ==Saray barangay== {{columns-list|colwidth=12em| * Bagong Silang * Balaong * Balite * Bantog * Bardias * Baritan * Batasan Bata * Batasan Matanda * Biak-na-Bato * Biclat * Buga * Buliran * Bulualto * Calumpang * Cambio * Camias * Ilog-Bulo * King Kabayo * Labne * Lambakin * Magmarale * Malibay * Mandile * Masalipit * Pacalag * Paliwasan * Partida * Pinambaran * Poblacion * Pulong Bayabas * Sacdalan * Salacot * Salangan * San Agustin * San Jose * San Juan * San Vicente * Santa Ines * Santa Lucia * Santa Rita Bata * Santa Rita Matanda * Sapang * Sibul * Tartaro * Tibagan * Bagong Pag-asa * Pulong Duhat * Maligaya * Tigpalas }} == Demograpiko == {{Populasyon}} == Saray reperensiya == {{Reflist}} ==Saray gawing ed labas== * [https://www.sanmiguelbulacan.gov.ph Official Website of Municipality of San Miguel, Bulacan] * [https://www.philatlas.com/ PhilAtlas.com] * [https://web.archive.org/web/20120413163013/http://www.nscb.gov.ph/activestats/psgc/default.asp Philippine Standard Geographic Code] * [https://web.archive.org/web/20161010201809/http://www.blgs.gov.ph/lgpmsv2/cmshome/index.php?pageID=23 Local Governance Performance Management System] * {{PH wikidata|website}} {{Bulacan}} [[Category:Saray baley na Bulacan]] dv4cmy9voe0uclu8yge8tw56dkfeeyd Template:Occidental Mindoro 10 9046 79618 66848 2026-04-29T14:05:04Z Exec8 2783 79618 wikitext text/x-wiki {{Navbox |name = Occidental Mindoro |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Occidental Mindoro]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13867|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q107454}} <!-- Abra de Ilog --> * {{wikidata|label|linked|Q107460}} <!-- Calintaan --> * {{wikidata|label|linked|Q107465}} <!-- Looc --> * {{wikidata|label|linked|Q107476}} <!-- Lubang --> * {{wikidata|label|linked|Q107482}} <!-- Magsaysay --> * {{wikidata|label|linked|Q107488}} <!-- Mamburao --> * {{wikidata|label|linked|Q107493}} <!-- Paluan --> * {{wikidata|label|linked|Q107499}} <!-- Rizal --> * {{wikidata|label|linked|Q107505}} <!-- Sablayan --> * {{wikidata|label|linked|Q107511}} <!-- San Jose --> * {{wikidata|label|linked|Q107519}} <!-- Santa Cruz --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Occidental Mindoro| ]] </noinclude> 559lcdszeno4q1a1xsmdgomij2k2zc9 Template:Marinduque 10 9049 79606 63369 2026-04-29T13:55:24Z Exec8 2783 79606 wikitext text/x-wiki {{Navbox |name = Marinduque |image = |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Marinduque]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13846|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q107011}} <!-- Boac --> * {{wikidata|label|linked|Q107023}} <!-- Buenavista --> * {{wikidata|label|linked|Q107029}} <!-- Gasan --> * {{wikidata|label|linked|Q107034}} <!-- Mogpog --> * {{wikidata|label|linked|Q107042}} <!-- Santa Cruz --> * {{wikidata|label|linked|Q107048}} <!-- Torrijos --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Marinduque| ]] </noinclude> d9zwzo3sw027bazbmv6qvuwfvoxyxvh Template:Catanduanes 10 9052 79564 62123 2026-04-29T13:04:51Z Exec8 2783 79564 wikitext text/x-wiki {{Navbox |name = Catanduanes |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Catanduanes]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13778|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q192067}} <!-- Bagamanoc --> * {{wikidata|label|linked|Q192072}} <!-- Baras --> * {{wikidata|label|linked|Q192085}} <!-- Bato --> * {{wikidata|label|linked|Q192091}} <!-- Caramoran --> * {{wikidata|label|linked|Q192629}} <!-- Gigmoto --> * {{wikidata|label|linked|Q123163}} <!-- Pandan --> * {{wikidata|label|linked|Q192646}} <!-- Panganiban --> * {{wikidata|label|linked|Q840162}} <!-- San Andres --> * {{wikidata|label|linked|Q192665}} <!-- San Miguel --> * {{wikidata|label|linked|Q192670}} <!-- Viga --> * {{wikidata|label|linked|Q192681}} <!-- Virac --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Catanduanes| ]] </noinclude> gh6tmys4nlph1a3fk7jnwuirbz8a2ev Template:Albay 10 9228 79546 62311 2026-04-29T12:48:10Z Exec8 2783 . 79546 wikitext text/x-wiki {{Navbox |name = Albay |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Albay]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13726|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q492912}} <!-- Bacacay --> * {{wikidata|label|linked|Q492976}} <!-- Camalig --> * {{wikidata|label|linked|Q493008}} <!-- Daraga --> * {{wikidata|label|linked|Q493032}} <!-- Guinobatan --> * {{wikidata|label|linked|Q493065}} <!-- Jovellar --> * {{wikidata|label|linked|Q493095}} <!-- Libon --> * {{wikidata|label|linked|Q493132}} <!-- Malilipot --> * {{wikidata|label|linked|Q493178}} <!-- Malinao --> * {{wikidata|label|linked|Q493204}} <!-- Manito --> * {{wikidata|label|linked|Q493246}} <!-- Oas --> * {{wikidata|label|linked|Q256045}} <!-- Pio Duran --> * {{wikidata|label|linked|Q493326}} <!-- Polangui --> * {{wikidata|label|linked|Q493362}} <!-- Rapu-Rapu --> * {{wikidata|label|linked|Q493409}} <!-- Santo Domingo --> * {{wikidata|label|linked|Q493444}} <!-- Tiwi --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1696}} <!--Legazpi --> * {{wikidata|label|linked|Q1701}} <!--Ligao --> * {{wikidata|label|linked|Q1706}} <!--Tabaco --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Albay| ]] </noinclude> qnpy1bhn8jy1ce3kv0dftyrnj90j2ua Template:Zamboanga del Sur 10 10878 79641 66227 2026-04-29T14:30:06Z Exec8 2783 79641 wikitext text/x-wiki {{Navbox |name = Zamboanga del Sur |image = |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Zamboanga del Sur]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13900|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q132015}} <!-- Aurora --> * {{wikidata|label|linked|Q132032}} <!-- Bayog --> * {{wikidata|label|linked|Q132057}} <!-- Dimataling --> * {{wikidata|label|linked|Q132077}} <!-- Dinas --> * {{wikidata|label|linked|Q132104}} <!-- Dumalinao --> * {{wikidata|label|linked|Q132126}} <!-- Dumingag --> * {{wikidata|label|linked|Q132141}} <!-- Guipos --> * {{wikidata|label|linked|Q132155}} <!-- Josefina --> * {{wikidata|label|linked|Q132161}} <!-- Kumalarang --> * {{wikidata|label|linked|Q132184}} <!-- Labangan --> * {{wikidata|label|linked|Q132200}} <!-- Lakewood --> * {{wikidata|label|linked|Q132215}} <!-- Lapuyan --> * {{wikidata|label|linked|Q132230}} <!-- Mahayag --> * {{wikidata|label|linked|Q132244}} <!-- Margosatubig --> * {{wikidata|label|linked|Q132262}} <!-- Midsalip --> * {{wikidata|label|linked|Q132271}} <!-- Molave --> * {{wikidata|label|linked|Q132284}} <!-- Pitogo --> * {{wikidata|label|linked|Q132301}} <!-- Ramon Magsaysay --> * {{wikidata|label|linked|Q132317}} <!-- San Miguel --> * {{wikidata|label|linked|Q132337}} <!-- San Pablo --> * {{wikidata|label|linked|Q132353}} <!-- Sominot --> * {{wikidata|label|linked|Q132371}} <!-- Tabina --> * {{wikidata|label|linked|Q132391}} <!-- Tambulig --> * {{wikidata|label|linked|Q132403}} <!-- Tigbao --> * {{wikidata|label|linked|Q132417}} <!-- Tukuran --> * {{wikidata|label|linked|Q132432}} <!-- Vincenzo A. Sagun --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q874270}} <!--Pagadian --> * {{wikidata|label|linked|Q1629}} <!--Zamboanga City--> }}<noinclude> [[Category:Saray baley na Zamboanga del Sur| ]] </noinclude> cfvyaboyevyzw7hfi392tc41p2ne8uz 79642 79641 2026-04-29T14:30:28Z Exec8 2783 79642 wikitext text/x-wiki {{Navbox |name = Zamboanga del Sur |image = |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Zamboanga del Sur]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13900|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q132015}} <!-- Aurora --> * {{wikidata|label|linked|Q132032}} <!-- Bayog --> * {{wikidata|label|linked|Q132057}} <!-- Dimataling --> * {{wikidata|label|linked|Q132077}} <!-- Dinas --> * {{wikidata|label|linked|Q132104}} <!-- Dumalinao --> * {{wikidata|label|linked|Q132126}} <!-- Dumingag --> * {{wikidata|label|linked|Q132141}} <!-- Guipos --> * {{wikidata|label|linked|Q132155}} <!-- Josefina --> * {{wikidata|label|linked|Q132161}} <!-- Kumalarang --> * {{wikidata|label|linked|Q132184}} <!-- Labangan --> * {{wikidata|label|linked|Q132200}} <!-- Lakewood --> * {{wikidata|label|linked|Q132215}} <!-- Lapuyan --> * {{wikidata|label|linked|Q132230}} <!-- Mahayag --> * {{wikidata|label|linked|Q132244}} <!-- Margosatubig --> * {{wikidata|label|linked|Q132262}} <!-- Midsalip --> * {{wikidata|label|linked|Q132271}} <!-- Molave --> * {{wikidata|label|linked|Q132284}} <!-- Pitogo --> * {{wikidata|label|linked|Q132301}} <!-- Ramon Magsaysay --> * {{wikidata|label|linked|Q132317}} <!-- San Miguel --> * {{wikidata|label|linked|Q132337}} <!-- San Pablo --> * {{wikidata|label|linked|Q132353}} <!-- Sominot --> * {{wikidata|label|linked|Q132371}} <!-- Tabina --> * {{wikidata|label|linked|Q132391}} <!-- Tambulig --> * {{wikidata|label|linked|Q132403}} <!-- Tigbao --> * {{wikidata|label|linked|Q132417}} <!-- Tukuran --> * {{wikidata|label|linked|Q132432}} <!-- Vincenzo A. Sagun --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q874270}} <!--Pagadian --> * {{wikidata|label|linked|Q1629}} <!--Zamboanga City--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Zamboanga del Sur| ]] </noinclude> o15bhrhdbincs5x2cc8h1fi8nsgqz3c Template:Collapsible option 10 10879 79568 57899 2026-04-29T13:15:27Z Exec8 2783 79568 wikitext text/x-wiki This template's '''initial visibility currently defaults to {{param value|{{#switch:{{{default|}}}|collapsed=collapsed|expanded=expanded|autocollapse|#default=autocollapse}}}}''', meaning that {{#switch:{{{default|}}}|collapsed=it is hidden apart from its title bar.|expanded=it is fully visible.|autocollapse|#default=if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing tables and more|table with the collapsible attribute]]), it is hidden apart from its title bar; if not, it is fully visible.}} To change this template's initial visibility, the {{parameter|{{{parameter_name|state}}}}} [[Help:Template#Parameters|parameter]] may be used: <ul> {{#ifeq:{{{default|}}}|collapsed|<!-- don't show -->|<li>{{#tag:syntaxhighlight|<nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}}| |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=collapsed}}</nowiki>|lang=wikitext|inline=1}} will show the template collapsed, i.e. hidden apart from its title bar.</li>}} {{#ifeq:{{{default|}}}|expanded|<!-- don't show -->|<li>{{#tag:syntaxhighlight|<nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=expanded}}</nowiki>|lang=wikitext|inline=1}} will show the template expanded, i.e. fully visible.</li>}} {{#ifeq:{{{default|autocollapse}}}|autocollapse|<!-- don't show -->|<li>{{#tag:syntaxhighlight|<nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=autocollapse}}</nowiki>|lang=wikitext|inline=1}} will show the template autocollapsed, i.e. if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing|table with the collapsible attribute]]), it is hidden apart from its title bar, but if not, it is fully visible.</li>}}</ul><!-- -->{{#if:{{{align|}}}|{{parameter|align|{{var|value}}}} is also available; where {{var|value}} can be either <code>right</code> or <code>left</code>. The default is {{kbd|center}}. }}{{#if:{{{title-background|}}}|{{parameter|title-background|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|navbox}} or a {{kbd|color}}. The default is {{kbd|none}}, and {{{kbd|navbox}}} defaults to the default navbox color. }}{{#if:{{{width|}}}| {{parameter|width|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|{{var|N}} [em/%/px]}} or {{kbd|auto}}. The default is {{kbd|100%}}. }}{{sandbox other|__EXPECTUNUSEDTEMPLATE__}}<!-- Add {{pp-template}} if template page where this template is transcluded is protected: -->{{template other | {{#if:{{PROTECTIONLEVEL:edit}} |{{pp-template|docusage=yes}} | {{#if:{{PROTECTIONLEVEL:move}} |{{pp-move|docusage=yes|small=yes}} }} }} }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 6ecf4uy7k6zbyqz3ipgg8pxi5edcfb2 Module:Color contrast 828 11030 79574 58731 2026-04-29T13:23:23Z Exec8 2783 79574 Scribunto text/plain -- -- This module implements -- {{Color contrast ratio}} -- {{Greater color contrast ratio}} -- {{ColorToLum}} -- {{RGBColorToLum}} -- local p = {} local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) local function sRGB (v) if (v <= 0.03928) then v = v / 12.92 else v = math.pow((v+0.055)/1.055, 2.4) end return v end local function rgbdec2lum(R, G, B) if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255) else return '' end end local function hsl2lum(h, s, l) if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then local c = (1 - math.abs(2*l - 1))*s local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) ) local m = l - c/2 local r, g, b = m, m, m if( 0 <= h and h < 60 ) then r = r + c g = g + x elseif( 60 <= h and h < 120 ) then r = r + x g = g + c elseif( 120 <= h and h < 180 ) then g = g + c b = b + x elseif( 180 <= h and h < 240 ) then g = g + x b = b + c elseif( 240 <= h and h < 300 ) then r = r + x b = b + c elseif( 300 <= h and h < 360 ) then r = r + c b = b + x end return rgbdec2lum(255*r, 255*g, 255*b) else return '' end end local function color2lum(c) if (c == nil) then return '' end -- html '#' entity c = c:gsub("&#35;", "#") -- whitespace c = c:match( '^%s*(.-)[%s;]*$' ) -- unstrip nowiki strip markers c = mw.text.unstripNoWiki(c) -- lowercase c = c:lower() -- first try to look it up local L = HTMLcolor[c] if (L ~= nil) then return L end -- convert from hsl if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100) end -- convert from rgb if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$') return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B)) end -- convert from rgb percent if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100) end -- remove leading # (if there is one) and whitespace c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$') -- split into rgb local cs = mw.text.split(c or '', '') if( #cs == 6 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2]) local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4]) local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6]) return rgbdec2lum(R, G, B) elseif ( #cs == 3 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1]) local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2]) local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3]) return rgbdec2lum(R, G, B) end -- failure, return blank return '' end -- This exports the function for use in other modules. -- The colour is passed as a string. function p._lum(color) return color2lum(color) end function p._greatercontrast(args) local bias = tonumber(args['bias'] or '0') or 0 local css = (args['css'] and args['css'] ~= '') and true or false local v1 = color2lum(args[1] or '') local c2 = args[2] or 'white' local v2 = color2lum(c2) local c3 = args[3] or 'black' local v3 = color2lum(c3) local ratio1 = -1; local ratio2 = -1; if (type(v1) == 'number' and type(v2) == 'number') then ratio1 = (v2 + 0.05)/(v1 + 0.05) ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1 end if (type(v1) == 'number' and type(v3) == 'number') then ratio2 = (v3 + 0.05)/(v1 + 0.05) ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2 end if css then local c1 = args[1] or '' if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c1 = '#' .. c1 end if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c2 = '#' .. c2 end if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c3 = '#' .. c3 end return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';' end return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '' end function p._ratio(args) local v1 = color2lum(args[1]) local v2 = color2lum(args[2]) if (type(v1) == 'number' and type(v2) == 'number') then -- v1 should be the brighter of the two. if v2 > v1 then v1, v2 = v2, v1 end return (v1 + 0.05)/(v2 + 0.05) else return args['error'] or '?' end end function p._styleratio(args) local style = (args[1] or ''):lower() local bg, fg = 'white', 'black' local lum_bg, lum_fg = 1, 0 if args[2] then local lum = color2lum(args[2]) if lum ~= '' then bg, lum_bg = args[2], lum end end if args[3] then local lum = color2lum(args[3]) if lum ~= '' then fg, lum_fg = args[3], lum end end local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '&#35;', '#'), ';') for k = 1,#slist do local s = slist[k] local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' ) k = k or '' v = v or '' if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_bg = v, lum end elseif (k:match('^[%s]*(color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_fg = v, lum end end end if lum_bg > lum_fg then return (lum_bg + 0.05)/(lum_fg + 0.05) else return (lum_fg + 0.05)/(lum_bg + 0.05) end end --[[ Use {{#invoke:Color contrast|somecolor}} directly or {{#invoke:Color contrast}} from a wrapper template. Parameters: -- |1= — required; A color to check. --]] function p.lum(frame) local color = frame.args[1] or frame:getParent().args[1] return p._lum(color) end function p.ratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._ratio(args) end function p.styleratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._styleratio(args) end function p.greatercontrast(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._greatercontrast(args) end return p bx0blwcv5isqzm2jrxnp01lj4148n73 Module:Wd 828 11072 79581 79316 2026-04-29T13:31:50Z Exec8 2783 79581 Scribunto text/plain -- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]]. require("strict") local p = {} local module_arg = ... local i18n local i18nPath local function loadI18n(aliasesP, frame) local title if frame then -- current module invoked by page/template, get its title from frame title = frame:getTitle() else -- current module included by other module, get its title from ... title = module_arg end if not i18n then i18nPath = title .. "/i18n" i18n = require(i18nPath).init(aliasesP) end end p.claimCommands = { property = "property", properties = "properties", qualifier = "qualifier", qualifiers = "qualifiers", reference = "reference", references = "references" } p.generalCommands = { label = "label", title = "title", description = "description", alias = "alias", aliases = "aliases", badge = "badge", badges = "badges" } p.flags = { linked = "linked", short = "short", raw = "raw", multilanguage = "multilanguage", unit = "unit", ------------- preferred = "preferred", normal = "normal", deprecated = "deprecated", best = "best", future = "future", current = "current", former = "former", edit = "edit", editAtEnd = "edit@end", mdy = "mdy", single = "single", sourced = "sourced" } p.args = { eid = "eid", page = "page", date = "date", globalSiteId = "globalSiteId" } local aliasesP = { coord = "P625", ----------------------- image = "P18", author = "P50", authorNameString = "P2093", publisher = "P123", importedFrom = "P143", wikimediaImportURL = "P4656", statedIn = "P248", pages = "P304", language = "P407", hasPart = "P527", publicationDate = "P577", startTime = "P580", endTime = "P582", chapter = "P792", retrieved = "P813", referenceURL = "P854", sectionVerseOrParagraph = "P958", archiveURL = "P1065", title = "P1476", formatterURL = "P1630", quote = "P1683", shortName = "P1813", definingFormula = "P2534", archiveDate = "P2960", inferredFrom = "P3452", typeOfReference = "P3865", column = "P3903", subjectNamedAs = "P1810", wikidataProperty = "P1687", publishedIn = "P1433", lastUpdate = "P5017" } local aliasesQ = { percentage = "Q11229", prolepticJulianCalendar = "Q1985786", citeWeb = "Q5637226", citeQ = "Q22321052" } local parameters = { property = "%p", qualifier = "%q", reference = "%r", alias = "%a", badge = "%b", separator = "%s", general = "%x" } local formats = { property = "%p[%s][%r]", qualifier = "%q[%s][%r]", reference = "%r", propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]", alias = "%a[%s]", badge = "%b[%s]" } local hookNames = { -- {level_1, level_2} [parameters.property] = {"getProperty"}, [parameters.reference] = {"getReferences", "getReference"}, [parameters.qualifier] = {"getAllQualifiers"}, [parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"}, [parameters.alias] = {"getAlias"}, [parameters.badge] = {"getBadge"} } -- default value objects, should NOT be mutated but instead copied local defaultSeparators = { ["sep"] = {" "}, ["sep%s"] = {","}, ["sep%q"] = {"; "}, ["sep%q\\d"] = {", "}, ["sep%r"] = nil, -- none ["punc"] = nil -- none } local rankTable = { ["preferred"] = 1, ["normal"] = 2, ["deprecated"] = 3 } local function replaceAlias(id) if aliasesP[id] then id = aliasesP[id] end return id end local function errorText(code, ...) local text = i18n["errors"][code] if arg then text = mw.ustring.format(text, unpack(arg)) end return text end local function throwError(errorMessage, ...) error(errorText(errorMessage, unpack(arg))) end local function replaceDecimalMark(num) return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1) end local function padZeros(num, numDigits) local numZeros local negative = false if num < 0 then negative = true num = num * -1 end num = tostring(num) numZeros = numDigits - num:len() for _ = 1, numZeros do num = "0"..num end if negative then num = "-"..num end return num end local function replaceSpecialChar(chr) if chr == '_' then -- replace underscores with spaces return ' ' else return chr end end local function replaceSpecialChars(str) local chr local esc = false local strOut = "" for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then esc = true else strOut = strOut .. replaceSpecialChar(chr) end else strOut = strOut .. chr esc = false end end return strOut end local function buildWikilink(target, label) if not label or target == label then return "[[" .. target .. "]]" else return "[[" .. target .. "|" .. label .. "]]" end end -- used to make frame.args mutable, to replace #frame.args (which is always 0) -- with the actual amount and to simply copy tables local function copyTable(tIn) if not tIn then return nil end local tOut = {} for i, v in pairs(tIn) do tOut[i] = v end return tOut end -- used to merge output arrays together; -- note that it currently mutates the first input array local function mergeArrays(a1, a2) for i = 1, #a2 do a1[#a1 + 1] = a2[i] end return a1 end local function split(str, del) local out = {} local i, j = str:find(del) if i and j then out[1] = str:sub(1, i - 1) out[2] = str:sub(j + 1) else out[1] = str end return out end local function parseWikidataURL(url) local id if url:match('^http[s]?://') then id = split(url, "Q") if id[2] then return "Q" .. id[2] end end return nil end local function parseDate(dateStr, precision) precision = precision or "d" local i, j, index, ptr local parts = {nil, nil, nil} if dateStr == nil then return parts[1], parts[2], parts[3] -- year, month, day end -- 'T' for snak values, '/' for outputs with '/Julian' attached i, j = dateStr:find("[T/]") if i then dateStr = dateStr:sub(1, i-1) end local from = 1 if dateStr:sub(1,1) == "-" then -- this is a negative number, look further ahead from = 2 end index = 1 ptr = 1 i, j = dateStr:find("-", from) if i then -- year parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error if parts[index] == -0 then parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead end if precision == "y" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 i, j = dateStr:find("-", ptr) if i then -- month parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) if precision == "m" then -- we're done return parts[1], parts[2], parts[3] -- year, month, day end index = index + 1 ptr = i + 1 end end if dateStr:sub(ptr) ~= "" then -- day if we have month, month if we have year, or year parts[index] = tonumber(dateStr:sub(ptr), 10) end return parts[1], parts[2], parts[3] -- year, month, day end local function datePrecedesDate(aY, aM, aD, bY, bM, bD) if aY == nil or bY == nil then return nil end aM = aM or 1 aD = aD or 1 bM = bM or 1 bD = bD or 1 if aY < bY then return true end if aY > bY then return false end if aM < bM then return true end if aM > bM then return false end if aD < bD then return true end return false end local function getHookName(param, index) if hookNames[param] then return hookNames[param][index] elseif param:len() > 2 then return hookNames[param:sub(1, 2).."\\d"][index] else return nil end end local function alwaysTrue() return true end -- The following function parses a format string. -- -- The example below shows how a parsed string is structured in memory. -- Variables other than 'str' and 'child' are left out for clarity's sake. -- -- Example: -- "A %p B [%s[%q1]] C [%r] D" -- -- Structure: -- [ -- { -- str = "A " -- }, -- { -- str = "%p" -- }, -- { -- str = " B ", -- child = -- [ -- { -- str = "%s", -- child = -- [ -- { -- str = "%q1" -- } -- ] -- } -- ] -- }, -- { -- str = " C ", -- child = -- [ -- { -- str = "%r" -- } -- ] -- }, -- { -- str = " D" -- } -- ] -- local function parseFormat(str) local chr, esc, param, root, cur, prev, new local params = {} local function newObject(array) local obj = {} -- new object obj.str = "" array[#array + 1] = obj -- array{object} obj.parent = array return obj end local function endParam() if param > 0 then if cur.str ~= "" then cur.str = "%"..cur.str cur.param = true params[cur.str] = true cur.parent.req[cur.str] = true prev = cur cur = newObject(cur.parent) end param = 0 end end root = {} -- array root.req = {} cur = newObject(root) prev = nil esc = false param = 0 for i = 1, #str do chr = str:sub(i,i) if not esc then if chr == '\\' then endParam() esc = true elseif chr == '%' then endParam() if cur.str ~= "" then cur = newObject(cur.parent) end param = 2 elseif chr == '[' then endParam() if prev and cur.str == "" then table.remove(cur.parent) cur = prev end cur.child = {} -- new array cur.child.req = {} cur.child.parent = cur cur = newObject(cur.child) elseif chr == ']' then endParam() if cur.parent.parent then new = newObject(cur.parent.parent.parent) if cur.str == "" then table.remove(cur.parent) end cur = new end else if param > 1 then param = param - 1 elseif param == 1 then if not chr:match('%d') then endParam() end end cur.str = cur.str .. replaceSpecialChar(chr) end else cur.str = cur.str .. chr esc = false end prev = nil end endParam() -- make sure that at least one required parameter has been defined if not next(root.req) then throwError("missing-required-parameter") end -- make sure that the separator parameter "%s" is not amongst the required parameters if root.req[parameters.separator] then throwError("extra-required-parameter", parameters.separator) end return root, params end local function sortOnRank(claims) local rankPos local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default) local sorted = {} for _, v in ipairs(claims) do rankPos = rankTable[v.rank] or 4 ranks[rankPos][#ranks[rankPos] + 1] = v end sorted = ranks[1] sorted = mergeArrays(sorted, ranks[2]) sorted = mergeArrays(sorted, ranks[3]) return sorted end local function isValueInTable(searchedItem, inputTable) for _, item in pairs(inputTable) do if item == searchedItem then return true end end return false end local Config = {} -- allows for recursive calls function Config:new() local cfg = {} setmetatable(cfg, self) self.__index = self cfg.separators = { -- single value objects wrapped in arrays so that we can pass by reference ["sep"] = {copyTable(defaultSeparators["sep"])}, ["sep%s"] = {copyTable(defaultSeparators["sep%s"])}, ["sep%q"] = {copyTable(defaultSeparators["sep%q"])}, ["sep%r"] = {copyTable(defaultSeparators["sep%r"])}, ["punc"] = {copyTable(defaultSeparators["punc"])} } cfg.entity = nil cfg.entityID = nil cfg.propertyID = nil cfg.propertyValue = nil cfg.qualifierIDs = {} cfg.qualifierIDsAndValues = {} cfg.bestRank = true cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false cfg.foundRank = #cfg.ranks cfg.flagBest = false cfg.flagRank = false cfg.periods = {true, true, true} -- future = true, current = true, former = true cfg.flagPeriod = false cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day} cfg.mdyDate = false cfg.singleClaim = false cfg.sourcedOnly = false cfg.editable = false cfg.editAtEnd = false cfg.inSitelinks = false cfg.langCode = mw.language.getContentLanguage().code cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode) cfg.langObj = mw.language.new(cfg.langCode) cfg.siteID = mw.wikibase.getGlobalSiteId() cfg.states = {} cfg.states.qualifiersCount = 0 cfg.curState = nil cfg.prefetchedRefs = nil return cfg end local State = {} function State:new(cfg, type) local stt = {} setmetatable(stt, self) self.__index = self stt.conf = cfg stt.type = type stt.results = {} stt.parsedFormat = {} stt.separator = {} stt.movSeparator = {} stt.puncMark = {} stt.linked = false stt.rawValue = false stt.shortName = false stt.anyLanguage = false stt.unitOnly = false stt.singleValue = false return stt end -- if id == nil then item connected to current page is used function Config:getLabel(id, raw, link, short) local label = nil local prefix, title= "", nil if not id then id = mw.wikibase.getEntityIdForCurrentPage() if not id then return "" end end id = id:upper() -- just to be sure if raw then -- check if given id actually exists if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then label = id end prefix, title = "d:Special:EntityPage/", label -- may be nil else -- try short name first if requested if short then label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name if label == "" then label = nil end end -- get label if not label then label = mw.wikibase.getLabel(id) end end if not label then label = "" elseif link then -- build a link if requested if not title then if id:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(id) elseif id:sub(1,1) == "P" then -- properties have no sitelink, link to Wikidata instead prefix, title = "d:Special:EntityPage/", id end end label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup if title then label = buildWikilink(prefix .. title, label) end end return label end function Config:getEditIcon() local value = "" local prefix = "" local front = "&nbsp;" local back = "" if self.entityID:sub(1,1) == "P" then prefix = "Property:" end if self.editAtEnd then front = '<span style="float:' if self.langObj:isRTL() then front = front .. 'left' else front = front .. 'right' end front = front .. '">' back = '</span>' end value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode if self.propertyID then value = value .. "#" .. self.propertyID elseif self.inSitelinks then value = value .. "#sitelinks-wikipedia" end value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]" return front .. value .. back end -- used to create the final output string when it's all done, so that for references the -- function extensionTag("ref", ...) is only called when they really ended up in the final output function Config:concatValues(valuesArray) local outString = "" local j, skip for i = 1, #valuesArray do -- check if this is a reference if valuesArray[i].refHash then j = i - 1 skip = false -- skip this reference if it is part of a continuous row of references that already contains the exact same reference while valuesArray[j] and valuesArray[j].refHash do if valuesArray[i].refHash == valuesArray[j].refHash then skip = true break end j = j - 1 end if not skip then -- add <ref> tag with the reference's hash as its name (to deduplicate references) outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash}) end else outString = outString .. valuesArray[i][1] end end return outString end function Config:convertUnit(unit, raw, link, short, unitOnly) local space = " " local label = "" local itemID if unit == "" or unit == "1" then return nil end if unitOnly then space = "" end itemID = parseWikidataURL(unit) if itemID then if itemID == aliasesQ.percentage then return "%" else label = self:getLabel(itemID, raw, link, short) if label ~= "" then return space .. label end end end return "" end function State:getValue(snak) return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2)) end function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type) if snak.snaktype == 'value' then local datatype = snak.datavalue.type local subtype = snak.datatype local datavalue = snak.datavalue.value if datatype == 'string' then if subtype == 'url' and link then -- create link explicitly if raw then -- will render as a linked number like [1] return "[" .. datavalue .. "]" else return "[" .. datavalue .. " " .. datavalue .. "]" end elseif subtype == 'commonsMedia' then if link then return buildWikilink("c:File:" .. datavalue, datavalue) elseif not raw then return "[[File:" .. datavalue .. "]]" else return datavalue end elseif subtype == 'geo-shape' and link then return buildWikilink("c:" .. datavalue, datavalue) elseif subtype == 'math' and not raw then local attribute = nil if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then attribute = {qid = self.entityID} end return mw.getCurrentFrame():extensionTag("math", datavalue, attribute) elseif subtype == 'external-id' and link then local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL if url ~= "" then url = mw.ustring.gsub(url, "$1", datavalue) return "[" .. url .. " " .. datavalue .. "]" else return datavalue end else return datavalue end elseif datatype == 'monolingualtext' then if anyLang or datavalue['language'] == self.langCode then return datavalue['text'] else return nil end elseif datatype == 'quantity' then local value = "" local unit if not unitOnly then -- get value and strip + signs from front value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1") if raw then return value end -- replace decimal mark based on locale value = replaceDecimalMark(value) -- add delimiters for readability value = i18n.addDelimiters(value) end unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly) if unit then value = value .. unit end return value elseif datatype == 'time' then local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr local yFactor = 1 local sign = 1 local prefix = "" local suffix = "" local mayAddCalendar = false local calendar = "" local precision = datavalue['precision'] if precision == 11 then p = "d" elseif precision == 10 then p = "m" else p = "y" yFactor = 10^(9-precision) end y, m, d = parseDate(datavalue['time'], p) if y < 0 then sign = -1 y = y * sign end -- if precision is tens/hundreds/thousands/millions/billions of years if precision <= 8 then yDiv = y / yFactor -- if precision is tens/hundreds/thousands of years if precision >= 6 then mayAddCalendar = true if precision <= 7 then -- round centuries/millenniums up (e.g. 20th century or 3rd millennium) yRound = math.ceil(yDiv) if not raw then if precision == 6 then suffix = i18n['datetime']['suffixes']['millennium'] else suffix = i18n['datetime']['suffixes']['century'] end suffix = i18n.getOrdinalSuffix(yRound) .. suffix else -- if not verbose, take the first year of the century/millennium -- (e.g. 1901 for 20th century or 2001 for 3rd millennium) yRound = (yRound - 1) * yFactor + 1 end else -- precision == 8 -- round decades down (e.g. 2010s) yRound = math.floor(yDiv) * yFactor if not raw then prefix = i18n['datetime']['prefixes']['decade-period'] suffix = i18n['datetime']['suffixes']['decade-period'] end end if raw and sign < 0 then -- if BCE then compensate for "counting backwards" -- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE) yRound = yRound + yFactor - 1 end else local yReFactor, yReDiv, yReRound -- round to nearest for tens of thousands of years or more yRound = math.floor(yDiv + 0.5) if yRound == 0 then if precision <= 2 and y ~= 0 then yReFactor = 1e6 yReDiv = y / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years only if we have a whole number of them precision = 3 yFactor = yReFactor yRound = yReRound end end if yRound == 0 then -- otherwise, take the unrounded (original) number of years precision = 5 yFactor = 1 yRound = y mayAddCalendar = true end end if precision >= 1 and y ~= 0 then yFull = yRound * yFactor yReFactor = 1e9 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to billions of years if we're in that range precision = 0 yFactor = yReFactor yRound = yReRound else yReFactor = 1e6 yReDiv = yFull / yReFactor yReRound = math.floor(yReDiv + 0.5) if yReDiv == yReRound then -- change precision to millions of years if we're in that range precision = 3 yFactor = yReFactor yRound = yReRound end end end if not raw then if precision == 3 then suffix = i18n['datetime']['suffixes']['million-years'] elseif precision == 0 then suffix = i18n['datetime']['suffixes']['billion-years'] else yRound = yRound * yFactor if yRound == 1 then suffix = i18n['datetime']['suffixes']['year'] else suffix = i18n['datetime']['suffixes']['years'] end end else yRound = yRound * yFactor end end else yRound = y mayAddCalendar = true end if mayAddCalendar then calendarID = parseWikidataURL(datavalue['calendarmodel']) if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then if not raw then if link then calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")" else calendar = " ("..i18n['datetime']['julian']..")" end else calendar = "/"..i18n['datetime']['julian'] end end end if not raw then local ce = nil if sign < 0 then ce = i18n['datetime']['BCE'] elseif precision <= 5 then ce = i18n['datetime']['CE'] end if ce then if link then ce = buildWikilink(i18n['datetime']['common-era'], ce) end suffix = suffix .. " " .. ce end value = tostring(yRound) if m then dateStr = self.langObj:formatDate("F", "1-"..m.."-1") if d then if self.mdyDate then dateStr = dateStr .. " " .. d .. "," else dateStr = d .. " " .. dateStr end end value = dateStr .. " " .. value end value = prefix .. value .. suffix .. calendar else value = padZeros(yRound * sign, 4) if m then value = value .. "-" .. padZeros(m, 2) if d then value = value .. "-" .. padZeros(d, 2) end end value = value .. calendar end return value elseif datatype == 'globecoordinate' then -- logic from https://github.com/DataValues/Geo (v4.0.1) local precision, unitsPerDegree, numDigits, strFormat, value, globe local latitude, latConv, latValue, latLink local longitude, lonConv, lonValue, lonLink local latDirection, latDirectionN, latDirectionS, latDirectionEN local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN local degSymbol, minSymbol, secSymbol, separator local latDegrees = nil local latMinutes = nil local latSeconds = nil local lonDegrees = nil local lonMinutes = nil local lonSeconds = nil local latDegSym = "" local latMinSym = "" local latSecSym = "" local lonDegSym = "" local lonMinSym = "" local lonSecSym = "" local latDirectionEN_N = "N" local latDirectionEN_S = "S" local lonDirectionEN_E = "E" local lonDirectionEN_W = "W" if not raw then latDirectionN = i18n['coord']['latitude-north'] latDirectionS = i18n['coord']['latitude-south'] lonDirectionE = i18n['coord']['longitude-east'] lonDirectionW = i18n['coord']['longitude-west'] degSymbol = i18n['coord']['degrees'] minSymbol = i18n['coord']['minutes'] secSymbol = i18n['coord']['seconds'] separator = i18n['coord']['separator'] else latDirectionN = latDirectionEN_N latDirectionS = latDirectionEN_S lonDirectionE = lonDirectionEN_E lonDirectionW = lonDirectionEN_W degSymbol = "/" minSymbol = "/" secSymbol = "/" separator = "/" end latitude = datavalue['latitude'] longitude = datavalue['longitude'] if latitude < 0 then latDirection = latDirectionS latDirectionEN = latDirectionEN_S latitude = math.abs(latitude) else latDirection = latDirectionN latDirectionEN = latDirectionEN_N end if longitude < 0 then lonDirection = lonDirectionW lonDirectionEN = lonDirectionEN_W longitude = math.abs(longitude) else lonDirection = lonDirectionE lonDirectionEN = lonDirectionEN_E end precision = datavalue['precision'] if not precision or precision <= 0 then precision = 1 / 3600 -- precision not set (correctly), set to arcsecond end -- remove insignificant detail latitude = math.floor(latitude / precision + 0.5) * precision longitude = math.floor(longitude / precision + 0.5) * precision if precision >= 1 - (1 / 60) and precision < 1 then precision = 1 elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then precision = 1 / 60 end if precision >= 1 then unitsPerDegree = 1 elseif precision >= (1 / 60) then unitsPerDegree = 60 else unitsPerDegree = 3600 end numDigits = math.ceil(-math.log10(unitsPerDegree * precision)) if numDigits <= 0 then numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead end strFormat = "%." .. numDigits .. "f" if precision >= 1 then latDegrees = strFormat:format(latitude) lonDegrees = strFormat:format(longitude) if not raw then latDegSym = replaceDecimalMark(latDegrees) .. degSymbol lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol else latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol end else latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits if precision >= (1 / 60) then latMinutes = latConv lonMinutes = lonConv else latSeconds = latConv lonSeconds = lonConv latMinutes = math.floor(latSeconds / 60) lonMinutes = math.floor(lonSeconds / 60) latSeconds = strFormat:format(latSeconds - (latMinutes * 60)) lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60)) if not raw then latSecSym = replaceDecimalMark(latSeconds) .. secSymbol lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol else latSecSym = latSeconds .. secSymbol lonSecSym = lonSeconds .. secSymbol end end latDegrees = math.floor(latMinutes / 60) lonDegrees = math.floor(lonMinutes / 60) latDegSym = latDegrees .. degSymbol lonDegSym = lonDegrees .. degSymbol latMinutes = latMinutes - (latDegrees * 60) lonMinutes = lonMinutes - (lonDegrees * 60) if precision >= (1 / 60) then latMinutes = strFormat:format(latMinutes) lonMinutes = strFormat:format(lonMinutes) if not raw then latMinSym = replaceDecimalMark(latMinutes) .. minSymbol lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end else latMinSym = latMinutes .. minSymbol lonMinSym = lonMinutes .. minSymbol end end latValue = latDegSym .. latMinSym .. latSecSym .. latDirection lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection value = latValue .. separator .. lonValue if link then globe = parseWikidataURL(datavalue['globe']) if globe then globe = mw.wikibase.getLabelByLang(globe, "en"):lower() else globe = "earth" end latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_") lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_") value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."&params="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]" end return value elseif datatype == 'wikibase-entityid' then local label local itemID = datavalue['numeric-id'] if subtype == 'wikibase-item' then itemID = "Q" .. itemID elseif subtype == 'wikibase-property' then itemID = "P" .. itemID else return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>' end label = self:getLabel(itemID, raw, link, short) if label == "" then label = nil end return label else return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>' end elseif snak.snaktype == 'somevalue' and not noSpecial then if raw then return " " -- single space represents 'somevalue' else return i18n['values']['unknown'] end elseif snak.snaktype == 'novalue' and not noSpecial then if raw then return "" -- empty string represents 'novalue' else return i18n['values']['none'] end else return nil end end function Config:getSingleRawQualifier(claim, qualifierID) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end if qualifiers and qualifiers[1] then return self:getValue(qualifiers[1], true) -- raw = true else return nil end end function Config:snakEqualsValue(snak, value) local snakValue = self:getValue(snak, true) -- raw = true if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end return snakValue == value end function Config:setRank(rank) local rankPos if rank == p.flags.best then self.bestRank = true self.flagBest = true -- mark that 'best' flag was given return end if rank:sub(1,9) == p.flags.preferred then rankPos = 1 elseif rank:sub(1,6) == p.flags.normal then rankPos = 2 elseif rank:sub(1,10) == p.flags.deprecated then rankPos = 3 else return end -- one of the rank flags was given, check if another one was given before if not self.flagRank then self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before self.flagRank = true -- mark that a rank flag was given end if rank:sub(-1) == "+" then for i = rankPos, 1, -1 do self.ranks[i] = true end elseif rank:sub(-1) == "-" then for i = rankPos, #self.ranks do self.ranks[i] = true end else self.ranks[rankPos] = true end end function Config:setPeriod(period) local periodPos if period == p.flags.future then periodPos = 1 elseif period == p.flags.current then periodPos = 2 elseif period == p.flags.former then periodPos = 3 else return end -- one of the period flags was given, check if another one was given before if not self.flagPeriod then self.periods = {false, false, false} -- no other period flag given before, so unset periods self.flagPeriod = true -- mark that a period flag was given end self.periods[periodPos] = true end function Config:qualifierMatches(claim, id, value) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[id] end if qualifiers then for _, v in pairs(qualifiers) do if self:snakEqualsValue(v, value) then return true end end elseif value == "" then -- if the qualifier is not present then treat it the same as the special value 'novalue' return true end return false end function Config:rankMatches(rankPos) if self.bestRank then return (self.ranks[rankPos] and self.foundRank >= rankPos) else return self.ranks[rankPos] end end function Config:timeMatches(claim) local startTime = nil local startTimeY = nil local startTimeM = nil local startTimeD = nil local endTime = nil local endTimeY = nil local endTimeM = nil local endTimeD = nil if self.periods[1] and self.periods[2] and self.periods[3] then -- any time return true end startTime = self:getSingleRawQualifier(claim, aliasesP.startTime) if startTime and startTime ~= "" and startTime ~= " " then startTimeY, startTimeM, startTimeD = parseDate(startTime) end endTime = self:getSingleRawQualifier(claim, aliasesP.endTime) if endTime and endTime ~= "" and endTime ~= " " then endTimeY, endTimeM, endTimeD = parseDate(endTime) end if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then -- invalidate end time if it precedes start time endTimeY = nil endTimeM = nil endTimeD = nil end if self.periods[1] then -- future if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then return true end end if self.periods[2] then -- current if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then return true end end if self.periods[3] then -- former if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then return true end end return false end function Config:processFlag(flag) if not flag then return false end if flag == p.flags.linked then self.curState.linked = true return true elseif flag == p.flags.raw then self.curState.rawValue = true if self.curState == self.states[parameters.reference] then -- raw reference values end with periods and require a separator (other than none) self.separators["sep%r"][1] = {" "} end return true elseif flag == p.flags.short then self.curState.shortName = true return true elseif flag == p.flags.multilanguage then self.curState.anyLanguage = true return true elseif flag == p.flags.unit then self.curState.unitOnly = true return true elseif flag == p.flags.mdy then self.mdyDate = true return true elseif flag == p.flags.single then self.singleClaim = true return true elseif flag == p.flags.sourced then self.sourcedOnly = true return true elseif flag == p.flags.edit then self.editable = true return true elseif flag == p.flags.editAtEnd then self.editable = true self.editAtEnd = true return true elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then self:setRank(flag) return true elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then self:setPeriod(flag) return true elseif flag == "" then -- ignore empty flags and carry on return true else return false end end function Config:processFlagOrCommand(flag) local param = "" if not flag then return false end if flag == p.claimCommands.property or flag == p.claimCommands.properties then param = parameters.property elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then self.states.qualifiersCount = self.states.qualifiersCount + 1 param = parameters.qualifier .. self.states.qualifiersCount self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])} elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then param = parameters.reference else return self:processFlag(flag) end if self.states[param] then return false end -- create a new state for each command self.states[param] = State:new(self, param) -- use "%x" as the general parameter name self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p" -- set the separator self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then self.states[param].singleValue = true end self.curState = self.states[param] return true end function Config:processSeparators(args) local sep for i, v in pairs(self.separators) do if args[i] then sep = replaceSpecialChars(args[i]) if sep ~= "" then self.separators[i][1] = {sep} else self.separators[i][1] = nil end end end end function Config:setFormatAndSeparators(state, parsedFormat) state.parsedFormat = parsedFormat state.separator = self.separators["sep"] state.movSeparator = self.separators["sep"..parameters.separator] state.puncMark = self.separators["punc"] end -- determines if a claim has references by prefetching them from the claim using getReferences, -- which applies some filtering that determines if a reference is actually returned, -- and caches the references for later use function State:isSourced(claim) self.conf.prefetchedRefs = self:getReferences(claim) return (#self.conf.prefetchedRefs > 0) end function State:resetCaches() -- any prefetched references of the previous claim must not be used self.conf.prefetchedRefs = nil end function State:claimMatches(claim) local matches, rankPos -- first of all, reset any cached values used for the previous claim self:resetCaches() -- if a property value was given, check if it matches the claim's property value if self.conf.propertyValue then matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue) else matches = true end -- if any qualifier values were given, check if each matches one of the claim's qualifier values for i, v in pairs(self.conf.qualifierIDsAndValues) do matches = (matches and self.conf:qualifierMatches(claim, i, v)) end -- check if the claim's rank and time period match rankPos = rankTable[claim.rank] or 4 matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim)) -- if only claims with references must be returned, check if this one has any if self.conf.sourcedOnly then matches = (matches and self:isSourced(claim)) -- prefetches and caches references end return matches, rankPos end function State:out() local result -- collection of arrays with value objects local valuesArray -- array with value objects local sep = nil -- value object local out = {} -- array with value objects local function walk(formatTable, result) local valuesArray = {} -- array with value objects for i, v in pairs(formatTable.req) do if not result[i] or not result[i][1] then -- we've got no result for a parameter that is required on this level, -- so skip this level (and its children) by returning an empty result return {} end end for _, v in ipairs(formatTable) do if v.param then valuesArray = mergeArrays(valuesArray, result[v.str]) elseif v.str ~= "" then valuesArray[#valuesArray + 1] = {v.str} end if v.child then valuesArray = mergeArrays(valuesArray, walk(v.child, result)) end end return valuesArray end -- iterate through the results from back to front, so that we know when to add separators for i = #self.results, 1, -1 do result = self.results[i] -- if there is already some output, then add the separators if #out > 0 then sep = self.separator[1] -- fixed separator result[parameters.separator] = {self.movSeparator[1]} -- movable separator else sep = nil result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark end valuesArray = walk(self.parsedFormat, result) if #valuesArray > 0 then if sep then valuesArray[#valuesArray + 1] = sep end out = mergeArrays(valuesArray, out) end end -- reset state before next iteration self.results = {} return out end -- level 1 hook function State:getProperty(claim) local value = {self:getValue(claim.mainsnak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getQualifiers(claim, param) local qualifiers if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end if qualifiers then -- iterate through claim's qualifier statements to collect their values; -- return array with multiple value objects return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getQualifier(snak) local value = {self:getValue(snak)} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getAllQualifiers(claim, param, result, hooks) local out = {} -- array with value objects local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object -- iterate through the output of the separate "qualifier(s)" commands for i = 1, self.conf.states.qualifiersCount do -- if a hook has not been called yet, call it now if not result[parameters.qualifier..i] then self:callHook(parameters.qualifier..i, hooks, claim, result) end -- if there is output for this particular "qualifier(s)" command, then add it if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then -- if there is already some output, then add the separator if #out > 0 and sep then out[#out + 1] = sep end out = mergeArrays(out, result[parameters.qualifier..i]) end end return out end -- level 1 hook function State:getReferences(claim) if self.conf.prefetchedRefs then -- return references that have been prefetched by isSourced return self.conf.prefetchedRefs end if claim.references then -- iterate through claim's reference statements to collect their values; -- return array with multiple value objects return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook else return {} -- return empty array end end -- level 2 hook function State:getReference(statement) local citeParamMapping = i18n['cite']['param-mapping'] local citeConfig = i18n['cite']['config'] local citeTypes = i18n['cite']['output-types'] -- will hold rendered properties of the reference which are not directly from statement.snaks, -- Namely, is URL generated from an external ID. local additionalProcessedProperties = {} -- for each citation type, there will be an associative array that associates lists of rendered properties -- to citation-template parameters local candidateParams = {} -- like above, but only associates one rendered property to each parameter; if the above variable -- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. "author1") local citeParams = {} local citeErrors = {} local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved local version = 12 -- increment this each time the below logic is changed to avoid conflict errors if not statement.snaks then return {} end -- don't use bot-added references referencing Wikimedia projects or containing "inferred from" (such references are not usable on Wikipedia) if statement.snaks[aliasesP.importedFrom] or statement.snaks[aliasesP.wikimediaImportURL] or statement.snaks[aliasesP.inferredFrom] then return {} end -- don't include "type of reference" if statement.snaks[aliasesP.typeOfReference] then statement.snaks[aliasesP.typeOfReference] = nil end -- don't include "image" to prevent littering if statement.snaks[aliasesP.image] then statement.snaks[aliasesP.image] = nil end -- don't include "language" if it is equal to the local one if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then statement.snaks[aliasesP.language] = nil end if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then -- "stated in" was given but "reference URL" was not. -- get "Wikidata property" properties from the item in "stated in" -- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference -- find the "Wikidata property" properties in the item from "stated in" local wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true) for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then local tempLink = self:getReferenceDetail(statement.snaks, wikidataPropertyOfSource, false, true) -- not raw, linked if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL in square brackets. -- the link is in wiki markup, so strip the square brackets and the display text -- gsub also returns another, discarted value, therefore the result is assigned to tempLink first tempLink = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") additionalProcessedProperties[aliasesP.referenceURL] = {tempLink} statement.snaks[wikidataPropertyOfSource] = nil break end end end end -- initialize candidateParams and citeParams for _, citeType in ipairs(citeTypes) do candidateParams[citeType] = {} citeParams[citeType] = {} end -- fill candidateParams for _, citeType in ipairs(citeTypes) do -- This will contain value--priority pairs for each param name. local candidateValuesAndPriorities = {} -- fill candidateValuesAndPriorities for refProperty in pairs(statement.snaks) do if citeErrors[citeType] then break end repeat -- just a simple wrapper to emulate "continue" -- set mappingKey and prefix local mappingKey local prefix = "" if statement.snaks[refProperty][1].datatype == 'external-id' then mappingKey = "external-id" prefix = self.conf:getLabel(refProperty) if prefix ~= "" then prefix = prefix .. " " end else mappingKey = refProperty end local paramName = citeParamMapping[citeType][mappingKey] -- skip properties with empty parameter name if paramName == "" then break -- skip this property for this value of citeType end -- handle unknown properties in the reference if not paramName then referenceEmpty = false local error_message = errorText("unknown-property-in-ref", refProperty) assert(error_message) -- Should not be nil citeErrors[citeType] = error_message break end -- set processedProperty local processedProperty local raw = false -- if the value is wanted raw if isValueInTable(paramName, citeConfig[citeType]["raw-value-params"] or {}) then raw = true end if isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then -- Multiple values may be given. processedProperty = self:getReferenceDetails(statement.snaks, refProperty, raw, self.linked, true) -- anyLang = true else -- If multiple values are given, all but the first suitable one are discarted. processedProperty = {self:getReferenceDetail(statement.snaks, refProperty, raw, self.linked and (statement.snaks[refProperty][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true end if #processedProperty == 0 then break end referenceEmpty = false -- add an empty entry to candidateValuesAndPriorities, if there isn't one already if not candidateValuesAndPriorities[paramName] then candidateValuesAndPriorities[paramName] = {} end -- find the priority of refProperty local thisPropertyPriority = -1 local thisParamPrioritization = citeConfig[citeType]["prioritization"][paramName] if thisParamPrioritization then for i_priority, i_property in ipairs(thisParamPrioritization) do if i_property == refProperty then thisPropertyPriority = i_priority end end end for _, propertyValue in pairs(processedProperty) do table.insert( candidateValuesAndPriorities[paramName], {prefix .. propertyValue, thisPropertyPriority} ) end until true end -- fill candidateParams[citeType] if not citeErrors[citeType] then local compareValuePriorities = function(pair1, pair2) if pair1[2] == -1 and pair2[2] ~= -1 then return false end if pair1[2] ~= -1 and pair2[2] == -1 then return true end return pair1[2] < pair2[2] end -- fill candidateParams[citeType][paramName] for each used param for paramName, _ in pairs(candidateValuesAndPriorities) do table.sort(candidateValuesAndPriorities[paramName], compareValuePriorities) candidateParams[citeType][paramName] = {} for _, valuePriorityPair in ipairs(candidateValuesAndPriorities[paramName]) do table.insert(candidateParams[citeType][paramName], valuePriorityPair[1]) end end end end -- handle additional properties for refProperty in pairs(additionalProcessedProperties) do for _, citeType in ipairs(citeTypes) do repeat -- skip if there already have been errors if citeErrors[citeType] then break end local paramName = citeParamMapping[citeType][refProperty] -- handle unknown properties in the reference if not paramName then -- Skip this additional property, but do not cause an error. break end if paramName == "" then break end referenceEmpty = false if not candidateParams[citeType][paramName] then candidateParams[citeType][paramName] = {} end for _, propertyValue in pairs(additionalProcessedProperties[refProperty]) do table.insert(candidateParams[citeType][paramName], propertyValue) end until true end end -- fill citeParams for _, citeType in ipairs(citeTypes) do for paramName, paramValues in pairs(candidateParams[citeType]) do if #paramValues == 1 or not isValueInTable(paramName, citeConfig[citeType]["numbered-params"] or {}) then citeParams[citeType][paramName] = paramValues[1] else -- There is more than one value for this parameter - the values will -- go into separate numbered parameters (e.g. "author1", "author2") for paramNum, paramValue in pairs(paramValues) do citeParams[citeType][paramName .. paramNum] = paramValue end end end end -- handle missing mandatory parameters for the templates for _, citeType in ipairs(citeTypes) do for _, requiredCiteParam in pairs(citeConfig[citeType]["mandatory-params"] or {}) do if not citeParams[citeType][requiredCiteParam] then -- The required param is not present. if citeErrors[citeType] then -- Do not override the previous error, if it exists. break end local error_message = errorText("missing-mandatory-param", requiredCiteParam) assert(error_message) -- Should not be nil citeErrors[citeType] = error_message end end end local citeTypeToUse = nil -- choose the output template for _, citeType in ipairs(citeTypes) do if not citeErrors[citeType] then citeTypeToUse = citeType break end end -- set refContent local refContent = "" if citeTypeToUse then local templateToUse = citeConfig[citeTypeToUse]["template"] local paramsToUse = citeParams[citeTypeToUse] if not templateToUse or templateToUse == "" then throwError("no-such-reference-template", tostring(templateToUse), i18nPath, citeTypeToUse) end -- if this module is being substituted then build a regular template call, otherwise expand the template if mw.isSubsting() then for i, v in pairs(paramsToUse) do refContent = refContent .. "|" .. i .. "=" .. v end refContent = "{{" .. templateToUse .. refContent .. "}}" else xpcall( function () refContent = mw.getCurrentFrame():expandTemplate{title=templateToUse, args=paramsToUse} end, function () throwError("no-such-reference-template", templateToUse, i18nPath, citeTypeToUse) end ) end -- If the citation couldn't be displayed using any template, but is not empty (barring ignored propeties), throw an error. elseif not referenceEmpty then refContent = errorText("malformed-reference-header") for _, citeType in ipairs(citeTypes) do refContent = refContent .. errorText("template-failure-reason", citeConfig[citeType]["template"], citeErrors[citeType]) end refContent = refContent .. errorText("malformed-reference-footer") end -- wrap refContent local ref = {} if refContent ~= "" then ref = {refContent} if not self.rawValue then -- this should become a <ref> tag, so save the reference's hash for later ref.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['version']) + version) end return {ref} else return {} end end -- gets a detail of one particular type for a reference function State:getReferenceDetail(snaks, dType, raw, link, anyLang) local switchLang = anyLang local value = nil if not snaks[dType] then return nil end -- if anyLang, first try the local language and otherwise any language repeat for _, v in ipairs(snaks[dType]) do value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true if value then break end end if value or not anyLang then break end switchLang = not switchLang until anyLang and switchLang return value end -- gets the details of one particular type for a reference function State:getReferenceDetails(snaks, dType, raw, link, anyLang) local values = {} if not snaks[dType] then return {} end for _, v in ipairs(snaks[dType]) do -- if nil is returned then it will not be added to the table values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true end return values end -- level 1 hook function State:getAlias(object) local value = object.value local title = nil if value and self.linked then if self.conf.entityID:sub(1,1) == "Q" then title = mw.wikibase.getSitelink(self.conf.entityID) elseif self.conf.entityID:sub(1,1) == "P" then title = "d:Property:" .. self.conf.entityID end if title then value = buildWikilink(title, value) end end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end -- level 1 hook function State:getBadge(value) value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName) if value == "" then value = nil end value = {value} -- create one value object if #value > 0 then return {value} -- wrap the value object in an array and return it else return {} -- return empty array if there was no value end end function State:callHook(param, hooks, statement, result) -- call a parameter's hook if it has been defined and if it has not been called before if not result[param] and hooks[param] then local valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects -- add to the result if #valuesArray > 0 then result[param] = valuesArray result.count = result.count + 1 else result[param] = {} -- an empty array to indicate that we've tried this hook already return true -- miss == true end end return false end -- iterate through claims, claim's qualifiers or claim's references to collect values function State:iterate(statements, hooks, matchHook) matchHook = matchHook or alwaysTrue local matches = false local rankPos = nil local result, gotRequired for _, v in ipairs(statements) do -- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.) matches, rankPos = matchHook(self, v) if matches then result = {count = 0} -- collection of arrays with value objects local function walk(formatTable) local miss for i2, v2 in pairs(formatTable.req) do -- call a hook, adding its return value to the result miss = self:callHook(i2, hooks, v, result) if miss then -- we miss a required value for this level, so return false return false end if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point breaks the loop return true end end for _, v2 in ipairs(formatTable) do if result.count == hooks.count then -- we're done if all hooks have been called; -- returning at this point prevents further childs from being processed return true end if v2.child then walk(v2.child) end end return true end gotRequired = walk(self.parsedFormat) -- only append the result if we got values for all required parameters on the root level if gotRequired then -- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank if rankPos and self.conf.foundRank > rankPos then self.conf.foundRank = rankPos end -- append the result self.results[#self.results + 1] = result -- break if we only need a single value if self.singleValue then break end end end end return self:out() end local function getEntityId(arg, eid, page, allowOmitPropPrefix, globalSiteId) local id = nil local prop = nil if arg then if arg:sub(1,1) == ":" then page = arg eid = nil elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then eid = arg page = nil else prop = arg end end if eid then if eid:sub(1,9):lower() == "property:" then id = replaceAlias(mw.text.trim(eid:sub(10))) if id:sub(1,1):upper() ~= "P" then id = "" end else id = replaceAlias(eid) end elseif page then if page:sub(1,1) == ":" then page = mw.text.trim(page:sub(2)) end id = mw.wikibase.getEntityIdForTitle(page, globalSiteId) or "" end if not id then id = mw.wikibase.getEntityIdForCurrentPage() or "" end id = id:upper() if not mw.wikibase.isValidEntityId(id) then id = "" end return id, prop end local function nextArg(args) local arg = args[args.pointer] if arg then args.pointer = args.pointer + 1 return mw.text.trim(arg) else return nil end end local function claimCommand(args, funcName) local cfg = Config:new() cfg:processFlagOrCommand(funcName) -- process first command (== function name) local lastArg, parsedFormat, formatParams, claims, value local hooks = {count = 0} -- set the date if given; -- must come BEFORE processing the flags if args[p.args.date] then cfg.atDate = {parseDate(args[p.args.date])} cfg.periods = {false, true, false} -- change default time constraint to 'current' end -- process flags and commands repeat lastArg = nextArg(args) until not cfg:processFlagOrCommand(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], false, args[p.args.globalSiteId]) if cfg.entityID == "" then return "" -- we cannot continue without a valid entity ID end cfg.entity = mw.wikibase.getEntity(cfg.entityID) if not cfg.propertyID then cfg.propertyID = nextArg(args) end cfg.propertyID = replaceAlias(cfg.propertyID) if not cfg.entity or not cfg.propertyID then return "" -- we cannot continue without an entity or a property ID end cfg.propertyID = cfg.propertyID:upper() if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then return "" -- there is no use to continue without any claims end claims = cfg.entity.claims[cfg.propertyID] if cfg.states.qualifiersCount > 0 then -- do further processing if "qualifier(s)" command was given if #args - args.pointer + 1 > cfg.states.qualifiersCount then -- claim ID or literal value has been given cfg.propertyValue = nextArg(args) end for i = 1, cfg.states.qualifiersCount do -- check if given qualifier ID is an alias and add it cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper() end elseif cfg.states[parameters.reference] then -- do further processing if "reference(s)" command was given cfg.propertyValue = nextArg(args) end -- check for special property value 'somevalue' or 'novalue' if cfg.propertyValue then cfg.propertyValue = replaceSpecialChars(cfg.propertyValue) if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue' else cfg.propertyValue = mw.text.trim(cfg.propertyValue) end end -- parse the desired format, or choose an appropriate format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given if cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier) else parsedFormat, formatParams = parseFormat(formats.qualifier) end elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given parsedFormat, formatParams = parseFormat(formats.property) else -- "reference(s)" command given parsedFormat, formatParams = parseFormat(formats.reference) end -- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then cfg.separators["sep"..parameters.separator][1] = {";"} end -- if only "reference(s)" has been given, set the default separator to none (except when raw) if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0 and not cfg.states[parameters.reference].rawValue then cfg.separators["sep"][1] = nil end -- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent if cfg.states.qualifiersCount == 1 then cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"] end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hooks that should be called (getProperty, getQualifiers, getReferences); -- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given for i, v in pairs(cfg.states) do -- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q" if formatParams[i] or formatParams[i:sub(1, 2)] then hooks[i] = getHookName(i, 1) hooks.count = hooks.count + 1 end end -- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...); -- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1) hooks.count = hooks.count + 1 end -- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration; -- must come AFTER defining the hooks if not cfg.states[parameters.property] then cfg.states[parameters.property] = State:new(cfg, parameters.property) -- if the "single" flag has been given then this state should be equivalent to "property" (singular) if cfg.singleClaim then cfg.states[parameters.property].singleValue = true end end -- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values, -- which must exist in order to be able to determine if a claim has any references; -- must come AFTER defining the hooks if cfg.sourcedOnly and not cfg.states[parameters.reference] then cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead end -- set the parsed format and the separators (and optional punctuation mark); -- must come AFTER creating the additonal states cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat) -- process qualifier matching values, analogous to cfg.propertyValue for i, v in pairs(args) do i = tostring(i) if i:match('^[Pp]%d+$') or aliasesP[i] then v = replaceSpecialChars(v) -- check for special qualifier value 'somevalue' if v ~= "" and mw.text.trim(v) == "" then v = " " -- single space represents 'somevalue' end cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v end end -- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated) claims = sortOnRank(claims) -- then iterate through the claims to collect values value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook -- if desired, add a clickable icon that may be used to edit the returned values on Wikidata if cfg.editable and value ~= "" then value = value .. cfg:getEditIcon() end return value end local function generalCommand(args, funcName) local cfg = Config:new() cfg.curState = State:new(cfg) local lastArg local value = nil repeat lastArg = nextArg(args) until not cfg:processFlag(lastArg) -- get the entity ID from either the positional argument, the eid argument or the page argument cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true, args[p.args.globalSiteId]) if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then return "" -- we cannot continue without an entity end -- serve according to the given command if funcName == p.generalCommands.label then value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName) elseif funcName == p.generalCommands.title then cfg.inSitelinks = true if cfg.entityID:sub(1,1) == "Q" then value = mw.wikibase.getSitelink(cfg.entityID) end if cfg.curState.linked and value then value = buildWikilink(value) end elseif funcName == p.generalCommands.description then value = mw.wikibase.getDescription(cfg.entityID) else local parsedFormat, formatParams local hooks = {count = 0} cfg.entity = mw.wikibase.getEntity(cfg.entityID) if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then cfg.curState.singleValue = true end if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then return "" -- there is no use to continue without any aliasses end local aliases = cfg.entity.aliases[cfg.langCode] -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.alias) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getAlias); -- only define the hook if the parameter ("%a") has been given if formatParams[parameters.alias] then hooks[parameters.alias] = getHookName(parameters.alias, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(aliases, hooks)) elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then return "" -- there is no use to continue without any badges end local badges = cfg.entity.sitelinks[cfg.siteID].badges cfg.inSitelinks = true -- parse the desired format, or parse the default aliases format if args["format"] then parsedFormat, formatParams = parseFormat(args["format"]) else parsedFormat, formatParams = parseFormat(formats.badge) end -- process overridden separator values; -- must come AFTER tweaking the default separators cfg:processSeparators(args) -- define the hook that should be called (getBadge); -- only define the hook if the parameter ("%b") has been given if formatParams[parameters.badge] then hooks[parameters.badge] = getHookName(parameters.badge, 1) hooks.count = hooks.count + 1 end -- set the parsed format and the separators (and optional punctuation mark) cfg:setFormatAndSeparators(cfg.curState, parsedFormat) -- iterate to collect values value = cfg:concatValues(cfg.curState:iterate(badges, hooks)) end end value = value or "" if cfg.editable and value ~= "" then -- if desired, add a clickable icon that may be used to edit the returned value on Wikidata value = value .. cfg:getEditIcon() end return value end -- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args) local function establishCommands(commandList, commandFunc) for _, commandName in pairs(commandList) do local function wikitextWrapper(frame) local args = copyTable(frame.args) args.pointer = 1 loadI18n(aliasesP, frame) return commandFunc(args, commandName) end p[commandName] = wikitextWrapper local function luaWrapper(args) args = copyTable(args) args.pointer = 1 loadI18n(aliasesP) return commandFunc(args, commandName) end p["_" .. commandName] = luaWrapper end end establishCommands(p.claimCommands, claimCommand) establishCommands(p.generalCommands, generalCommand) -- main function that is supposed to be used by wrapper templates function p.main(frame) if not mw.wikibase then return nil end local f, args loadI18n(aliasesP, frame) -- get the parent frame to take the arguments that were passed to the wrapper template frame = frame:getParent() or frame if not frame.args[1] then throwError("no-function-specified") end f = mw.text.trim(frame.args[1]) if f == "main" then throwError("main-called-twice") end assert(p["_"..f], errorText('no-such-function', f)) -- copy arguments from immutable to mutable table args = copyTable(frame.args) -- remove the function name from the list table.remove(args, 1) return p["_"..f](args) end return p j5a6l03tjwodgrvfnv3lb4x5up93wlv Module:Wd/i18n 828 11073 79582 76198 2026-04-29T13:32:15Z Exec8 2783 79582 Scribunto text/plain -- The values and functions in this submodule should be localized per wiki. local p = {} function p.init(aliasesP) p = { ["version"] = "8", -- increment this each time the below parameters are changed to avoid reference conflict errors ["errors"] = { ["unknown-data-type"] = "Unknown or unsupported datatype '%s'.", ["missing-required-parameter"] = "No required parameters defined, needing at least one", ["extra-required-parameter"] = "Parameter '%s' must be defined as optional", ["no-function-specified"] = "You must specify a function to call", -- equal to the standard module error message ["main-called-twice"] = 'The function "main" cannot be called twice', ["no-such-function"] = 'The function "%s" does not exist', -- equal to the standard module error message ["no-such-reference-template"] = 'Error: template "%s", which is set in %s as the output template for the citation-output type "%s", does not exist', -- Parts of the error message signalling a malformed reference. ["malformed-reference-header"] = "<span style=\"color:#dd3333\">\nError: Unable to display the reference from Wikidata properly. Technical details:\n", ["malformed-reference-footer"] = "See [[Module:wd/doc#References|the documentation]] for further details.\n</span>\n[[Category:Module:Wd reference errors]]", ["template-failure-reason"] = "* Reason for the failure of {{tl|%s}}: %s\n", ["missing-mandatory-param"] = 'The output template call would miss the mandatory parameter <code>%s</code>.', ["unknown-property-in-ref"] = 'The Wikidata reference contains the property {{property|%s}}, which is not assigned to any parameter of this template.' }, ["info"] = { ["edit-on-wikidata"] = "Edit this on Wikidata" }, ["numeric"] = { ["decimal-mark"] = ".", ["delimiter"] = "," }, ["datetime"] = { ["prefixes"] = { ["decade-period"] = "" }, ["suffixes"] = { ["decade-period"] = "s", ["millennium"] = " millennium", ["century"] = " century", ["million-years"] = " million years", ["billion-years"] = " billion years", ["year"] = " year", ["years"] = " years" }, ["julian-calendar"] = "Julian calendar", -- linked page title ["julian"] = "Julian", ["BCE"] = "BCE", ["CE"] = "CE", ["common-era"] = "Common Era" -- linked page title }, ["coord"] = { ["latitude-north"] = "N", ["latitude-south"] = "S", ["longitude-east"] = "E", ["longitude-west"] = "W", ["degrees"] = "°", ["minutes"] = "'", ["seconds"] = '"', ["separator"] = ", " }, ["values"] = { ["unknown"] = "unknown", ["none"] = "none" }, ["cite"] = { ["output-types"] = {"web", "q"}, -- In this order, the output types will be tried ["param-mapping"] = { ["web"] = { -- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "website", [aliasesP.referenceURL] = "url", [aliasesP.publicationDate] = "date", [aliasesP.lastUpdate] = "date", [aliasesP.retrieved] = "access-date", [aliasesP.title] = "title", [aliasesP.subjectNamedAs] = "title", [aliasesP.archiveURL] = "archive-url", [aliasesP.archiveDate] = "archive-date", [aliasesP.language] = "language", [aliasesP.author] = "author", [aliasesP.authorNameString] = "author", [aliasesP.publisher] = "publisher", [aliasesP.quote] = "quote", [aliasesP.pages] = "pages", -- extra option [aliasesP.publishedIn] = "website", [aliasesP.sectionVerseOrParagraph] = "at" }, ["q"] = { -- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "") [aliasesP.statedIn] = "1", [aliasesP.pages] = "pages", [aliasesP.column] = "at", [aliasesP.chapter] = "chapter", [aliasesP.sectionVerseOrParagraph] = "section", ["external-id"] = "id", -- used for any type of database property ID [aliasesP.title] = "title", [aliasesP.publicationDate] = "date", [aliasesP.lastUpdate] = "date", [aliasesP.retrieved] = "access-date" } }, ["config"] = { -- supported fields: -- - template: name of the template used for output -- - numbered-params: citation params accepting an arbitrary number of values by numbering the params (e.g. author1, author2) -- - raw-value-params: params taking a raw value (which means the property is rendered with getValue with raw=true) -- - mandatory-params: params that are required be in the template call (after potentially appending numbers to params listed in numbered-params) -- - prioritization: table associating a list of properties, in the order in which they are preferred, to template parameters; -- properties not mentioned here have the lowest priority; -- prioritization of properties handled through additionalProcessedProperties is unsupported; -- no key of this table can be from numbered-params -- Leaving out the "template" field causes the output type to be ignored. ["web"] = { ["template"] = "Cite web", ["numbered-params"] = {"author"}, ["mandatory-params"] = {"url"}, ["prioritization"] = { ["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate}, ["title"] = {aliasesP.title, aliasesP.subjectNamedAs} } }, ["q"] = { ["template"] = "Cite Q", ["raw-value-params"] = {"1"}, -- the first, unnamed parameter of CiteQ takes a QID, not the name of the item cited ["mandatory-params"] = {"1"}, ["prioritization"] = { ["date"] = {aliasesP.lastUpdate, aliasesP.publicationDate} } } } } } p.getOrdinalSuffix = function(num) if tostring(num):sub(-2,-2) == '1' then return "th" -- 10th, 11th, 12th, 13th, ... 19th end num = tostring(num):sub(-1) if num == '1' then return "st" elseif num == '2' then return "nd" elseif num == '3' then return "rd" else return "th" end end p.addDelimiters = function(n) local left, num, right = string.match(n, "^([^%d]*%d)(%d*)(.-)$") if left and num and right then return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. p['numeric']['delimiter']):reverse()) .. right else return n end end return p end return p pgkxz3kqyoyu0zj2nmtkjkdr0ntnin5 Template:Leyte 10 11578 79602 66271 2026-04-29T13:52:43Z Exec8 2783 79602 wikitext text/x-wiki {{Navbox |name = Leyte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Leyte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13844|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q212877}} <!-- Abuyog --> * {{wikidata|label|linked|Q212888}} <!-- Alangalang --> * {{wikidata|label|linked|Q212896}} <!-- Albuera --> * {{wikidata|label|linked|Q212907}} <!-- Babatngon --> * {{wikidata|label|linked|Q212924}} <!-- Barugo --> * {{wikidata|label|linked|Q212935}} <!-- Bato --> * {{wikidata|label|linked|Q212945}} <!-- Burauen --> * {{wikidata|label|linked|Q212951}} <!-- Calubian --> * {{wikidata|label|linked|Q212958}} <!-- Capoocan --> * {{wikidata|label|linked|Q212969}} <!-- Carigara --> * {{wikidata|label|linked|Q212981}} <!-- Dagami --> * {{wikidata|label|linked|Q212988}} <!-- Dulag --> * {{wikidata|label|linked|Q213006}} <!-- Hilongos --> * {{wikidata|label|linked|Q213024}} <!-- Hindang --> * {{wikidata|label|linked|Q213042}} <!-- Inopacan --> * {{wikidata|label|linked|Q213060}} <!-- Isabel --> * {{wikidata|label|linked|Q213086}} <!-- Jaro --> * {{wikidata|label|linked|Q213101}} <!-- Javier --> * {{wikidata|label|linked|Q213113}} <!-- Julita --> * {{wikidata|label|linked|Q213130}} <!-- Kananga --> * {{wikidata|label|linked|Q213144}} <!-- La Paz --> * {{wikidata|label|linked|Q213160}} <!-- Leyte --> * {{wikidata|label|linked|Q213174}} <!-- MacArthur --> * {{wikidata|label|linked|Q213190}} <!-- Mahaplag --> * {{wikidata|label|linked|Q213209}} <!-- Matag-ob --> * {{wikidata|label|linked|Q213227}} <!-- Matalom --> * {{wikidata|label|linked|Q213245}} <!-- Mayorga --> * {{wikidata|label|linked|Q213261}} <!-- Merida --> * {{wikidata|label|linked|Q213281}} <!-- Palo --> * {{wikidata|label|linked|Q213303}} <!-- Palompon --> * {{wikidata|label|linked|Q213323}} <!-- Pastrana --> * {{wikidata|label|linked|Q213341}} <!-- San Isidro --> * {{wikidata|label|linked|Q213357}} <!-- San Miguel --> * {{wikidata|label|linked|Q213378}} <!-- Santa Fe --> * {{wikidata|label|linked|Q213400}} <!-- Tabango --> * {{wikidata|label|linked|Q213420}} <!-- Tabontabon --> * {{wikidata|label|linked|Q213431}} <!-- Tanauan --> * {{wikidata|label|linked|Q213442}} <!-- Tolosa --> * {{wikidata|label|linked|Q213455}} <!-- Tunga --> * {{wikidata|label|linked|Q213463}} <!-- Villaba --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q812117}} <!--Baybay --> * {{wikidata|label|linked|Q1014782}} <!--Ormoc--> * {{wikidata|label|linked|Q40626}} <!--Tacloban--> }}<noinclude> [[Category:Saray baley na Leyte| ]] </noinclude> 31outmf70enojp0r4g53z1sc9uruivy Template:Agusan del Norte 10 11579 79541 62107 2026-04-29T12:44:10Z Exec8 2783 . 79541 wikitext text/x-wiki {{Navbox |image = |name = Agusan del Norte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Agusan del Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13714|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q627390}} <!-- Buenavista --> * {{wikidata|label|linked|Q627434}} <!-- Carmen --> * {{wikidata|label|linked|Q627461}} <!-- Jabonga --> * {{wikidata|label|linked|Q627495}} <!-- Kitcharao --> * {{wikidata|label|linked|Q627529}} <!-- Las Nieves --> * {{wikidata|label|linked|Q627572}} <!-- Magallanes --> * {{wikidata|label|linked|Q627604}} <!-- Nasipit --> * {{wikidata|label|linked|Q627638}} <!-- Remedios T. Romualdez --> * {{wikidata|label|linked|Q588955}} <!-- Santiago --> * {{wikidata|label|linked|Q176975}} <!-- Tubay --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1692}} <!--Cabadbaran --> * {{wikidata|label|linked|Q1686}} <!--Butuan--> }}<noinclude> [[Category:Saray baley na Agusan del Norte| ]] </noinclude> 4gdjuku5o5viges7224v9gvsa8ylz26 79545 79541 2026-04-29T12:47:07Z Exec8 2783 79545 wikitext text/x-wiki {{Navbox |image = |name = Agusan del Norte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Agusan del Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13714|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q627390}} <!-- Buenavista --> * {{wikidata|label|linked|Q627434}} <!-- Carmen --> * {{wikidata|label|linked|Q627461}} <!-- Jabonga --> * {{wikidata|label|linked|Q627495}} <!-- Kitcharao --> * {{wikidata|label|linked|Q627529}} <!-- Las Nieves --> * {{wikidata|label|linked|Q627572}} <!-- Magallanes --> * {{wikidata|label|linked|Q627604}} <!-- Nasipit --> * {{wikidata|label|linked|Q627638}} <!-- Remedios T. Romualdez --> * {{wikidata|label|linked|Q588955}} <!-- Santiago --> * {{wikidata|label|linked|Q176975}} <!-- Tubay --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1692}} <!--Cabadbaran --> * {{wikidata|label|linked|Q1686}} <!--Butuan--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Agusan del Norte| ]] </noinclude> jdzqrvhmgh1vkxz0nnjad4ytv02uvvc Template:Agusan del Sur 10 11580 79542 62108 2026-04-29T12:45:30Z Exec8 2783 . 79542 wikitext text/x-wiki {{Navbox |name = Agusan del Sur |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Agusan del Sur]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked| Q13721 |P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q627049}} <!-- Bunawan --> * {{wikidata|label|linked|Q627077}} <!-- Esperanza --> * {{wikidata|label|linked|Q627107}} <!-- La Paz --> * {{wikidata|label|linked|Q627120}} <!-- Loreto --> * {{wikidata|label|linked|Q627144}} <!-- Prosperidad --> * {{wikidata|label|linked|Q627167}} <!-- Rosario --> * {{wikidata|label|linked|Q627190}} <!-- San Francisco --> * {{wikidata|label|linked|Q627210}} <!-- San Luis --> * {{wikidata|label|linked|Q627231}} <!-- Santa Josefa --> * {{wikidata|label|linked|Q627260}} <!-- Sibagat --> * {{wikidata|label|linked|Q627286}} <!-- Talacogon --> * {{wikidata|label|linked|Q627320}} <!-- Trento --> * {{wikidata|label|linked|Q627349}} <!-- Veruela --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q1694}} <!-- Bayugan --> }}<noinclude> [[Category:Saray baley na Agusan del Sur| ]] </noinclude> e7wrce973pf94u36isyy5evvlcvsk0z 79544 79542 2026-04-29T12:46:50Z Exec8 2783 79544 wikitext text/x-wiki {{Navbox |name = Agusan del Sur |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Agusan del Sur]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked| Q13721 |P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q627049}} <!-- Bunawan --> * {{wikidata|label|linked|Q627077}} <!-- Esperanza --> * {{wikidata|label|linked|Q627107}} <!-- La Paz --> * {{wikidata|label|linked|Q627120}} <!-- Loreto --> * {{wikidata|label|linked|Q627144}} <!-- Prosperidad --> * {{wikidata|label|linked|Q627167}} <!-- Rosario --> * {{wikidata|label|linked|Q627190}} <!-- San Francisco --> * {{wikidata|label|linked|Q627210}} <!-- San Luis --> * {{wikidata|label|linked|Q627231}} <!-- Santa Josefa --> * {{wikidata|label|linked|Q627260}} <!-- Sibagat --> * {{wikidata|label|linked|Q627286}} <!-- Talacogon --> * {{wikidata|label|linked|Q627320}} <!-- Trento --> * {{wikidata|label|linked|Q627349}} <!-- Veruela --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q1694}} <!-- Bayugan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Agusan del Sur| ]] </noinclude> 01qzu4q5wn1fkcumpgp1pzq3h5qxllw Template:Biliran 10 11581 79555 66504 2026-04-29T12:56:18Z Exec8 2783 79555 wikitext text/x-wiki {{Navbox |name = Biliran |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Biliran]] |image = |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13751|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q406163}} <!-- Almeria --> * {{wikidata|label|linked|Q406186}} <!-- Biliran --> * {{wikidata|label|linked|Q406226}} <!-- Cabucgayan --> * {{wikidata|label|linked|Q406267}} <!-- Caibiran --> * {{wikidata|label|linked|Q406317}} <!-- Culaba --> * {{wikidata|label|linked|Q406353}} <!-- Kawayan --> * {{wikidata|label|linked|Q406393}} <!-- Maripipi --> * {{wikidata|label|linked|Q277211}} <!-- Naval --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Biliran| ]] </noinclude> bq3lkwqjc40lk7opwlzfodxodqcxo9j Template:Bukidnon 10 11582 79557 62116 2026-04-29T12:58:45Z Exec8 2783 79557 wikitext text/x-wiki {{Navbox |name = Bukidnon |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Bukidnon]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13752|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q356943}} <!-- Baungon --> * {{wikidata|label|linked|Q356971}} <!-- Cabanglasan --> * {{wikidata|label|linked|Q356997}} <!-- Damulog --> * {{wikidata|label|linked|Q357021}} <!-- Dangcagan --> * {{wikidata|label|linked|Q357053}} <!-- Don Carlos --> * {{wikidata|label|linked|Q357075}} <!-- Impasug-ong --> * {{wikidata|label|linked|Q357100}} <!-- Kadingilan --> * {{wikidata|label|linked|Q357124}} <!-- Kalilangan --> * {{wikidata|label|linked|Q357152}} <!-- Kibawe --> * {{wikidata|label|linked|Q357175}} <!-- Kitaotao --> * {{wikidata|label|linked|Q357198}} <!-- Lantapan --> * {{wikidata|label|linked|Q357226}} <!-- Libona --> * {{wikidata|label|linked|Q357252}} <!-- Malitbog --> * {{wikidata|label|linked|Q357272}} <!-- Manolo Fortich --> * {{wikidata|label|linked|Q357299}} <!-- Maramag --> * {{wikidata|label|linked|Q357311}} <!-- Pangantucan --> * {{wikidata|label|linked|Q357342}} <!-- Quezon --> * {{wikidata|label|linked|Q357371}} <!-- San Fernando --> * {{wikidata|label|linked|Q357396}} <!-- Sumilao --> * {{wikidata|label|linked|Q357420}} <!-- Talakag --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1856}} <!--Malaybalay --> * {{wikidata|label|linked|Q2158}} <!--Valencia --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Bukidnon| ]] </noinclude> nz4x5naoejigwlsn5rth83wkfbxggqt Template:Camarines Norte 10 11583 79560 62673 2026-04-29T13:01:08Z Exec8 2783 79560 wikitext text/x-wiki {{Navbox |name = Camarines Norte |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Camarines Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13763|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q356607}} <!-- Basud --> * {{wikidata|label|linked|Q119624}} <!-- Capalonga --> * {{wikidata|label|linked|Q356655}} <!-- Daet --> * {{wikidata|label|linked|Q356681}} <!-- Jose Panganiban --> * {{wikidata|label|linked|Q356708}} <!-- Labo --> * {{wikidata|label|linked|Q356734}} <!-- Mercedes --> * {{wikidata|label|linked|Q356759}} <!-- Paracale --> * {{wikidata|label|linked|Q356803}} <!-- San Lorenzo Ruiz --> * {{wikidata|label|linked|Q302791}} <!-- San Vicente --> * {{wikidata|label|linked|Q356853}} <!-- Santa Elena --> * {{wikidata|label|linked|Q356878}} <!-- Talisay --> * {{wikidata|label|linked|Q356898}} <!-- Vinzons --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Camarines Norte| ]] </noinclude> d0qhioldzcsuj9guq4zoddy1ewn1j11 Template:Camarines Sur 10 11584 79561 66704 2026-04-29T13:02:16Z Exec8 2783 . 79561 wikitext text/x-wiki {{Navbox |name = Camarines Sur |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Camarines Sur]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13767|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q208672}} <!-- Baao --> * {{wikidata|label|linked|Q208678}} <!-- Balatan --> * {{wikidata|label|linked|Q208683}} <!-- Bato --> * {{wikidata|label|linked|Q208690}} <!-- Bombon --> * {{wikidata|label|linked|Q208699}} <!-- Buhi --> * {{wikidata|label|linked|Q208712}} <!-- Bula --> * {{wikidata|label|linked|Q208717}} <!-- Cabusao --> * {{wikidata|label|linked|Q208727}} <!-- Calabanga --> * {{wikidata|label|linked|Q208738}} <!-- Camaligan --> * {{wikidata|label|linked|Q208749}} <!-- Canaman --> * {{wikidata|label|linked|Q208757}} <!-- Caramoan --> * {{wikidata|label|linked|Q208765}} <!-- Del Gallego --> * {{wikidata|label|linked|Q208769}} <!-- Gainza --> * {{wikidata|label|linked|Q208775}} <!-- Garchitorena --> * {{wikidata|label|linked|Q208782}} <!-- Goa --> * {{wikidata|label|linked|Q208792}} <!-- Lagonoy --> * {{wikidata|label|linked|Q208814}} <!-- Libmanan --> * {{wikidata|label|linked|Q208835}} <!-- Lupi --> * {{wikidata|label|linked|Q208845}} <!-- Magarao --> * {{wikidata|label|linked|Q208852}} <!-- Milaor --> * {{wikidata|label|linked|Q208864}} <!-- Minalabac --> * {{wikidata|label|linked|Q208872}} <!-- Nabua --> * {{wikidata|label|linked|Q208878}} <!-- Ocampo --> * {{wikidata|label|linked|Q208886}} <!-- Pamplona --> * {{wikidata|label|linked|Q208892}} <!-- Pasacao --> * {{wikidata|label|linked|Q208899}} <!-- Pili --> * {{wikidata|label|linked|Q208919}} <!-- Presentacion --> * {{wikidata|label|linked|Q208924}} <!-- Ragay --> * {{wikidata|label|linked|Q208937}} <!-- Sagñay --> * {{wikidata|label|linked|Q208950}} <!-- San Fernando --> * {{wikidata|label|linked|Q208966}} <!-- San Jose --> * {{wikidata|label|linked|Q208985}} <!-- Sipocot --> * {{wikidata|label|linked|Q208995}} <!-- Siruma --> * {{wikidata|label|linked|Q209011}} <!-- Tigaon --> * {{wikidata|label|linked|Q209024}} <!-- Tinambac --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q2205}} <!--Iriga --> * {{wikidata|label|linked|Q2207}} <!--Naga, Camarines Sur--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Camarines Sur| ]] </noinclude> d9fe7zx1nmdh34qgofy1irye133keef Template:Camiguin 10 11585 79562 62121 2026-04-29T13:02:54Z Exec8 2783 79562 wikitext text/x-wiki {{Navbox |name = Camiguin |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Camiguin]] |state = {{{state|autocollapse}}} |listclass = hlist |above = '''{{wikidata|property|linked|Q13769|P36}}''' (kapital) |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q356442}} <!-- Catarman --> * {{wikidata|label|linked|Q356472}} <!-- Guinsiliban --> * {{wikidata|label|linked|Q176033}} <!-- Mahinog --> * {{wikidata|label|linked|Q356518}} <!-- Mambajao --> * {{wikidata|label|linked|Q356549}} <!-- Sagay --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Camiguin| ]] </noinclude> cbymsmdhcsq4ratuqzpc0ajatlmin4j Template:Davao de Oro 10 11586 79584 66605 2026-04-29T13:34:34Z Exec8 2783 79584 wikitext text/x-wiki {{Navbox |name = Davao de Oro |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Davao de Oro]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13789|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q315450}} <!-- Compostela --> * {{wikidata|label|linked|Q315468}} <!-- Laak --> * {{wikidata|label|linked|Q187225}} <!-- Mabini --> * {{wikidata|label|linked|Q315497}} <!-- Maco --> * {{wikidata|label|linked|Q315512}} <!-- Maragusan --> * {{wikidata|label|linked|Q315524}} <!-- Mawab --> * {{wikidata|label|linked|Q315543}} <!-- Monkayo --> * {{wikidata|label|linked|Q315557}} <!-- Montevista --> * {{wikidata|label|linked|Q315570}} <!-- Nabunturan --> * {{wikidata|label|linked|Q315582}} <!-- New Bataan --> * {{wikidata|label|linked|Q315598}} <!-- Pantukan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Davao de Oro| ]] </noinclude> 5tyq6ndupg8l059lywhm9ok71uuxmi0 Template:Cotabato 10 11587 79567 79433 2026-04-29T13:14:29Z Exec8 2783 79567 wikitext text/x-wiki {{Navbox |name = Cotabato |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na {{wikidata|label|linked|Q13791}} |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13791|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = {{Navbox|subgroup | group4 = | list4 = * {{wikidata|label|linked|Q315042}} <!-- Alamada --> * {{wikidata|label|linked|Q315061}} <!-- Aleosan --> * {{wikidata|label|linked|Q315081}} <!-- Antipas --> * {{wikidata|label|linked|Q315098}} <!-- Arakan --> * {{wikidata|label|linked|Q315121}} <!-- Banisilan --> * {{wikidata|label|linked|Q315144}} <!-- Carmen --> * {{wikidata|label|linked|Q315164}} <!-- Kabacan --> * {{wikidata|label|linked|Q315190}} <!-- Libungan --> * {{wikidata|label|linked|Q267975}} <!-- Magpet --> * {{wikidata|label|linked|Q315244}} <!-- Makilala --> * {{wikidata|label|linked|Q315267}} <!-- Matalam --> * {{wikidata|label|linked|Q315283}} <!-- Midsayap --> * {{wikidata|label|linked|Q315213}} <!-- M'lang --> * {{wikidata|label|linked|Q304654}} <!-- Pigkawayan --> * {{wikidata|label|linked|Q315314}} <!-- Pikit --> * {{wikidata|label|linked|Q315334}} <!-- President Roxas --> * {{wikidata|label|linked|Q315345}} <!-- Tulunan --> | group5 = Espisyal a geograpikon lugar <br>(kabiangan na [[Bangsamoro]]) | list5 = * {{wikidata|label|linked|Q31508396}} <!-- Kadayangan --> * {{wikidata|label|linked|Q31508433}} <!-- Kapalawan --> * {{wikidata|label|linked|Q31508452}} <!-- Ligawasan --> * {{wikidata|label|linked|Q31508472}} <!-- Malidegao --> * {{wikidata|label|linked|Q31508492}} <!-- Nabalawag --> * {{wikidata|label|linked|Q31508510}} <!-- Old Kaabakan --> * {{wikidata|label|linked|Q31508528}} <!-- Pahamuddin --> * {{wikidata|label|linked|Q31508546}} <!-- Tugunan --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q583137}} <!--Kidapawan --> }}<noinclude> [[Category:Saray baley na Cotabato| ]] </noinclude> ls3xzfgysw9benqnky3w7m4hnpwagro 79583 79567 2026-04-29T13:33:39Z Exec8 2783 . 79583 wikitext text/x-wiki {{Navbox |name = Cotabato |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na {{wikidata|label|linked|Q13791}} |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13791|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = {{Navbox|subgroup | group4 = | list4 = * {{wikidata|label|linked|Q315042}} <!-- Alamada --> * {{wikidata|label|linked|Q315061}} <!-- Aleosan --> * {{wikidata|label|linked|Q315081}} <!-- Antipas --> * {{wikidata|label|linked|Q315098}} <!-- Arakan --> * {{wikidata|label|linked|Q315121}} <!-- Banisilan --> * {{wikidata|label|linked|Q315144}} <!-- Carmen --> * {{wikidata|label|linked|Q315164}} <!-- Kabacan --> * {{wikidata|label|linked|Q315190}} <!-- Libungan --> * {{wikidata|label|linked|Q267975}} <!-- Magpet --> * {{wikidata|label|linked|Q315244}} <!-- Makilala --> * {{wikidata|label|linked|Q315267}} <!-- Matalam --> * {{wikidata|label|linked|Q315283}} <!-- Midsayap --> * {{wikidata|label|linked|Q315213}} <!-- M'lang --> * {{wikidata|label|linked|Q304654}} <!-- Pigkawayan --> * {{wikidata|label|linked|Q315314}} <!-- Pikit --> * {{wikidata|label|linked|Q315334}} <!-- President Roxas --> * {{wikidata|label|linked|Q315345}} <!-- Tulunan --> | group5 = Espisyal a geograpikon lugar <br>(kabiangan na [[Bangsamoro]]) | list5 = * {{wikidata|label|linked|Q31508396}} <!-- Kadayangan --> * {{wikidata|label|linked|Q31508433}} <!-- Kapalawan --> * {{wikidata|label|linked|Q31508452}} <!-- Ligawasan --> * {{wikidata|label|linked|Q31508472}} <!-- Malidegao --> * {{wikidata|label|linked|Q31508492}} <!-- Nabalawag --> * {{wikidata|label|linked|Q31508510}} <!-- Old Kaabakan --> * {{wikidata|label|linked|Q31508528}} <!-- Pahamuddin --> * {{wikidata|label|linked|Q31508546}} <!-- Tugunan --> }} |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q583137}} <!--Kidapawan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Cotabato| ]] </noinclude> d4uu9w2fckt1vtud7oyili3w5vgc8yl Template:Davao del Norte 10 11588 79585 65768 2026-04-29T13:35:42Z Exec8 2783 79585 wikitext text/x-wiki {{Navbox |name = Davao del Norte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Davao del Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13792|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q314393}} <!-- Asuncion --> * {{wikidata|label|linked|Q314410}} <!-- Braulio E. Dujali --> * {{wikidata|label|linked|Q314422}} <!-- Carmen --> * {{wikidata|label|linked|Q314438}} <!-- Kapalong --> * {{wikidata|label|linked|Q314452}} <!-- New Corella --> * {{wikidata|label|linked|Q314468}} <!-- San Isidro --> * {{wikidata|label|linked|Q314486}} <!-- Santo Tomas --> * {{wikidata|label|linked|Q314501}} <!-- Talaingod --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q967367}} <!--Panabo --> * {{wikidata|label|linked|Q1020674}} <!--Samal, Davao del Norte|Samal --> * {{wikidata|label|linked|Q725168}} <!--Tagum --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Davao del Norte| ]] </noinclude> jhojndxgzf32aqb4oafmladkqu44jei Template:Davao del Sur 10 11589 79586 62129 2026-04-29T13:36:55Z Exec8 2783 . 79586 wikitext text/x-wiki {{Navbox |name = Davao del Sur |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Davao del Sur]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13794|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q314778}} <!-- Bansalan --> * {{wikidata|label|linked|Q314808}} <!-- Hagonoy --> * {{wikidata|label|linked|Q314844}} <!-- Kiblawan --> * {{wikidata|label|linked|Q314864}} <!-- Magsaysay --> * {{wikidata|label|linked|Q314885}} <!-- Malalag --> * {{wikidata|label|linked|Q314923}} <!-- Matanao --> * {{wikidata|label|linked|Q314944}} <!-- Padada --> * {{wikidata|label|linked|Q314965}} <!-- Santa Cruz --> * {{wikidata|label|linked|Q315014}} <!-- Sulop --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1020939}} <!--Digos --> * {{wikidata|label|linked|Q1473}} <!--Davao City --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Davao del Sur| ]] </noinclude> oabhuquzn5ia9s8i75ltx0l9b63vosf Template:Davao Occidental 10 11590 79587 62130 2026-04-29T13:37:40Z Exec8 2783 79587 wikitext text/x-wiki {{Navbox |name = Davao Occidental |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Davao Occidental]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q3656379|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q314796}} <!-- Don Marcelino --> * {{wikidata|label|linked|Q314824}} <!-- Jose Abad Santos --> * {{wikidata|label|linked|Q314907}} <!-- Malita --> * {{wikidata|label|linked|Q314980}} <!-- Santa Maria --> * {{wikidata|label|linked|Q314999}} <!-- Sarangani --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Davao Occidental| ]] </noinclude> 75o2c4xkfaze3q9tzuz2amhumosnemy Template:Davao Oriental 10 11591 79588 62131 2026-04-29T13:38:39Z Exec8 2783 . 79588 wikitext text/x-wiki {{Navbox |name = Davao Oriental |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Davao Oriental]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13806|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q314522}} <!-- Baganga --> * {{wikidata|label|linked|Q314542}} <!-- Banaybanay --> * {{wikidata|label|linked|Q314574}} <!-- Boston --> * {{wikidata|label|linked|Q314593}} <!-- Caraga --> * {{wikidata|label|linked|Q314619}} <!-- Cateel --> * {{wikidata|label|linked|Q314632}} <!-- Governor Generoso --> * {{wikidata|label|linked|Q314653}} <!-- Lupon --> * {{wikidata|label|linked|Q314671}} <!-- Manay --> * {{wikidata|label|linked|Q314721}} <!-- San Isidro --> * {{wikidata|label|linked|Q314745}} <!-- Tarragona --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q314686}} <!--Mati --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Davao Oriental| ]] </noinclude> n2sxs2koaymaham2aq1u4d9afaushop Template:Dinagat Islands 10 11592 79589 66653 2026-04-29T13:39:19Z Exec8 2783 79589 wikitext text/x-wiki {{Navbox |name = Dinagat Islands |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Dinagat Islands]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13807|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q314298}} <!-- Basilisa --> * {{wikidata|label|linked|Q314318}} <!-- Cagdianao --> * {{wikidata|label|linked|Q314336}} <!-- Dinagat --> * {{wikidata|label|linked|Q314345}} <!-- Libjo --> * {{wikidata|label|linked|Q314356}} <!-- Loreto --> * {{wikidata|label|linked|Q251691}} <!-- San Jose --> * {{wikidata|label|linked|Q314374}} <!-- Tubajon --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Dinagat Islands| ]] </noinclude> jqnark1wkhow5488q93cs5r9czuajpb Template:Eastern Samar 10 11593 79590 79432 2026-04-29T13:40:11Z Exec8 2783 79590 wikitext text/x-wiki {{Navbox |name = Eastern Samar |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na {{wikidata|label|linked|Q13809}} |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13809|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q313880}} <!-- Arteche --> * {{wikidata|label|linked|Q313904}} <!-- Balangiga --> * {{wikidata|label|linked|Q313914}} <!-- Balangkayan --> * {{wikidata|label|linked|Q313926}} <!-- Can-avid --> * {{wikidata|label|linked|Q313939}} <!-- Dolores --> * {{wikidata|label|linked|Q313951}} <!-- General MacArthur --> * {{wikidata|label|linked|Q313967}} <!-- Giporlos --> * {{wikidata|label|linked|Q313984}} <!-- Guiuan --> * {{wikidata|label|linked|Q314002}} <!-- Hernani --> * {{wikidata|label|linked|Q314021}} <!-- Jipapad --> * {{wikidata|label|linked|Q314046}} <!-- Lawaan --> * {{wikidata|label|linked|Q314070}} <!-- Llorente --> * {{wikidata|label|linked|Q314096}} <!-- Maslog --> * {{wikidata|label|linked|Q314117}} <!-- Maydolong --> * {{wikidata|label|linked|Q314129}} <!-- Mercedes --> * {{wikidata|label|linked|Q314154}} <!-- Oras --> * {{wikidata|label|linked|Q314175}} <!-- Quinapondan --> * {{wikidata|label|linked|Q314197}} <!-- Salcedo --> * {{wikidata|label|linked|Q314220}} <!-- San Julian --> * {{wikidata|label|linked|Q314239}} <!-- San Policarpo --> * {{wikidata|label|linked|Q314257}} <!-- Sulat --> * {{wikidata|label|linked|Q205677}} <!-- Taft --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q894059}} <!--Borongan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Eastern Samar| ]] </noinclude> 1llexkbw48sx4xwzo67w9b4wzp0is33 Template:Lanao del Norte 10 11594 79600 62142 2026-04-29T13:50:28Z Exec8 2783 79600 wikitext text/x-wiki {{Navbox |name = Lanao del Norte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Lanao del Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13841|P36}}''' (kapital |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q274150}} <!-- Bacolod --> * {{wikidata|label|linked|Q274164}} <!-- Baloi --> * {{wikidata|label|linked|Q274173}} <!-- Baroy --> * {{wikidata|label|linked|Q274186}} <!-- Kapatagan --> * {{wikidata|label|linked|Q274197}} <!-- Kauswagan --> * {{wikidata|label|linked|Q274205}} <!-- Kolambugan --> * {{wikidata|label|linked|Q274215}} <!-- Lala --> * {{wikidata|label|linked|Q274230}} <!-- Linamon --> * {{wikidata|label|linked|Q274243}} <!-- Magsaysay --> * {{wikidata|label|linked|Q274260}} <!-- Maigo --> * {{wikidata|label|linked|Q274272}} <!-- Matungao --> * {{wikidata|label|linked|Q274287}} <!-- Munai --> * {{wikidata|label|linked|Q274299}} <!-- Nunungan --> * {{wikidata|label|linked|Q274313}} <!-- Pantao Ragat --> * {{wikidata|label|linked|Q274329}} <!-- Pantar --> * {{wikidata|label|linked|Q274343}} <!-- Poona Piagapo --> * {{wikidata|label|linked|Q274357}} <!-- Salvador --> * {{wikidata|label|linked|Q274369}} <!-- Sapad --> * {{wikidata|label|linked|Q274387}} <!-- Sultan Naga Dimaporo --> * {{wikidata|label|linked|Q274406}} <!-- Tagoloan --> * {{wikidata|label|linked|Q274427}} <!-- Tangcal --> * {{wikidata|label|linked|Q274439}} <!-- Tubod --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q285488}} <!--Iligan--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Lanao del Norte| ]] </noinclude> rsti5bc4pp4gps4kxvjajhkddnuvgrs Template:Lanao del Sur 10 11595 79601 66359 2026-04-29T13:51:37Z Exec8 2783 79601 wikitext text/x-wiki {{Navbox |name = Lanao del Sur |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Lanao del Sur]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13843|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q273775}} <!-- Amai Manabilang --> * {{wikidata|label|linked|Q273657}} <!-- Bacolod-Kalawi --> * {{wikidata|label|linked|Q273680}} <!-- Balabagan --> * {{wikidata|label|linked|Q273700}} <!-- Balindong --> * {{wikidata|label|linked|Q273718}} <!-- Bayang --> * {{wikidata|label|linked|Q273728}} <!-- Binidayan --> * {{wikidata|label|linked|Q273744}} <!-- Buadiposo-Buntong --> * {{wikidata|label|linked|Q273757}} <!-- Bubong --> * {{wikidata|label|linked|Q273796}} <!-- Butig --> * {{wikidata|label|linked|Q273813}} <!-- Calanogas --> * {{wikidata|label|linked|Q273828}} <!-- Ditsaan-Ramain --> * {{wikidata|label|linked|Q273851}} <!-- Ganassi --> * {{wikidata|label|linked|Q273864}} <!-- Kapai --> * {{wikidata|label|linked|Q273882}} <!-- Kapatagan --> * {{wikidata|label|linked|Q273895}} <!-- Lumba-Bayabao --> * {{wikidata|label|linked|Q273906}} <!-- Lumbaca-Unayan --> * {{wikidata|label|linked|Q273915}} <!-- Lumbatan --> * {{wikidata|label|linked|Q273928}} <!-- Lumbayanague --> * {{wikidata|label|linked|Q273939}} <!-- Madalum --> * {{wikidata|label|linked|Q273948}} <!-- Madamba --> * {{wikidata|label|linked|Q273960}} <!-- Maguing --> * {{wikidata|label|linked|Q273970}} <!-- Malabang --> * {{wikidata|label|linked|Q273982}} <!-- Marantao --> * {{wikidata|label|linked|Q273988}} <!-- Marogong --> * {{wikidata|label|linked|Q273998}} <!-- Masiu --> * {{wikidata|label|linked|Q177004}} <!-- Mulondo --> * {{wikidata|label|linked|Q274015}} <!-- Pagayawan --> * {{wikidata|label|linked|Q274022}} <!-- Piagapo --> * {{wikidata|label|linked|Q274031}} <!-- Picong --> * {{wikidata|label|linked|Q274037}} <!-- Poona Bayabao --> * {{wikidata|label|linked|Q274047}} <!-- Pualas --> * {{wikidata|label|linked|Q274057}} <!-- Saguiaran --> * {{wikidata|label|linked|Q126297}} <!-- Sultan Dumalondong --> * {{wikidata|label|linked|Q274077}} <!-- Tagoloan II --> * {{wikidata|label|linked|Q274087}} <!-- Tamparan --> * {{wikidata|label|linked|Q274097}} <!-- Taraka --> * {{wikidata|label|linked|Q274114}} <!-- Tubaran --> * {{wikidata|label|linked|Q274124}} <!-- Tugaya --> * {{wikidata|label|linked|Q274134}} <!-- Wao --> |group3 = Siyudad * {{wikidata|label|linked|Q592338}} <!--Marawi --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Lanao del Sur| ]] </noinclude> 90oiwmk2gp0nbbfkm2aet6nypz8itof Template:Misamis Occidental 10 11597 79608 62148 2026-04-29T13:57:01Z Exec8 2783 79608 wikitext text/x-wiki {{Navbox |name = Misamis Occidental |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Misamis Occidental]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13857|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q155502}} <!-- Aloran --> * {{wikidata|label|linked|Q196056}} <!-- Baliangao --> * {{wikidata|label|linked|Q196076}} <!-- Bonifacio --> * {{wikidata|label|linked|Q196097}} <!-- Calamba --> * {{wikidata|label|linked|Q196114}} <!-- Clarin --> * {{wikidata|label|linked|Q196129}} <!-- Concepcion --> * {{wikidata|label|linked|Q196145}} <!-- Don Victoriano Chiongbian --> * {{wikidata|label|linked|Q196158}} <!-- Jimenez --> * {{wikidata|label|linked|Q196173}} <!-- Lopez Jaena --> * {{wikidata|label|linked|Q196191}} <!-- Panaon --> * {{wikidata|label|linked|Q196207}} <!-- Plaridel --> * {{wikidata|label|linked|Q196222}} <!-- Sapang Dalaga --> * {{wikidata|label|linked|Q196233}} <!-- Sinacaban --> * {{wikidata|label|linked|Q196248}} <!-- Tudela --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1067897}} <!--Oroquieta --> * {{wikidata|label|linked|Q263837}} <!--Ozamiz --> * {{wikidata|label|linked|Q1026277}} <!--Tangub --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Misamis Occidental| ]] </noinclude> 27tagsrdjpiyjr78qcx2kipdok27h4c Template:Misamis Oriental 10 11598 79609 66236 2026-04-29T13:57:57Z Exec8 2783 79609 wikitext text/x-wiki {{Navbox |name = Misamis Oriental |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Misamis Oriental]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13860|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q195623}} <!-- Alubijid --> * {{wikidata|label|linked|Q195637}} <!-- Balingasag --> * {{wikidata|label|linked|Q195650}} <!-- Balingoan --> * {{wikidata|label|linked|Q195663}} <!-- Binuangan --> * {{wikidata|label|linked|Q195676}} <!-- Claveria --> * {{wikidata|label|linked|Q195696}} <!-- Gitagum --> * {{wikidata|label|linked|Q195709}} <!-- Initao --> * {{wikidata|label|linked|Q195717}} <!-- Jasaan --> * {{wikidata|label|linked|Q195726}} <!-- Kinoguitan --> * {{wikidata|label|linked|Q195740}} <!-- Lagonglong --> * {{wikidata|label|linked|Q195755}} <!-- Laguindingan --> * {{wikidata|label|linked|Q195767}} <!-- Libertad --> * {{wikidata|label|linked|Q195780}} <!-- Lugait --> * {{wikidata|label|linked|Q195799}} <!-- Magsaysay --> * {{wikidata|label|linked|Q195815}} <!-- Manticao --> * {{wikidata|label|linked|Q195834}} <!-- Medina --> * {{wikidata|label|linked|Q195855}} <!-- Naawan --> * {{wikidata|label|linked|Q195870}} <!-- Opol --> * {{wikidata|label|linked|Q195883}} <!-- Salay --> * {{wikidata|label|linked|Q195899}} <!-- Sugbongcogon --> * {{wikidata|label|linked|Q1026274}} <!-- Tagoloan --> * {{wikidata|label|linked|Q195917}} <!-- Talisayan --> * {{wikidata|label|linked|Q195937}} <!-- Villanueva --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1645}} <!--Cagayan de Oro-- * {{wikidata|label|linked|Q195686}} <!--El Salvador --> * {{wikidata|label|linked|Q1525029}} <!--Gingoog --> * [[Cagayan de Oro]] }}<noinclude> {{collapsible option}} [[Category:Saray baley na Misamis Oriental| ]] </noinclude> 0l517g5744d4fo930sm3cilqgsqby0k 79610 79609 2026-04-29T13:58:13Z Exec8 2783 79610 wikitext text/x-wiki {{Navbox |name = Misamis Oriental |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Misamis Oriental]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13860|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q195623}} <!-- Alubijid --> * {{wikidata|label|linked|Q195637}} <!-- Balingasag --> * {{wikidata|label|linked|Q195650}} <!-- Balingoan --> * {{wikidata|label|linked|Q195663}} <!-- Binuangan --> * {{wikidata|label|linked|Q195676}} <!-- Claveria --> * {{wikidata|label|linked|Q195696}} <!-- Gitagum --> * {{wikidata|label|linked|Q195709}} <!-- Initao --> * {{wikidata|label|linked|Q195717}} <!-- Jasaan --> * {{wikidata|label|linked|Q195726}} <!-- Kinoguitan --> * {{wikidata|label|linked|Q195740}} <!-- Lagonglong --> * {{wikidata|label|linked|Q195755}} <!-- Laguindingan --> * {{wikidata|label|linked|Q195767}} <!-- Libertad --> * {{wikidata|label|linked|Q195780}} <!-- Lugait --> * {{wikidata|label|linked|Q195799}} <!-- Magsaysay --> * {{wikidata|label|linked|Q195815}} <!-- Manticao --> * {{wikidata|label|linked|Q195834}} <!-- Medina --> * {{wikidata|label|linked|Q195855}} <!-- Naawan --> * {{wikidata|label|linked|Q195870}} <!-- Opol --> * {{wikidata|label|linked|Q195883}} <!-- Salay --> * {{wikidata|label|linked|Q195899}} <!-- Sugbongcogon --> * {{wikidata|label|linked|Q1026274}} <!-- Tagoloan --> * {{wikidata|label|linked|Q195917}} <!-- Talisayan --> * {{wikidata|label|linked|Q195937}} <!-- Villanueva --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1645}} <!--Cagayan de Oro-- * {{wikidata|label|linked|Q195686}} <!--El Salvador --> * {{wikidata|label|linked|Q1525029}} <!--Gingoog --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Misamis Oriental| ]] </noinclude> 9uyw9jbijtwnqjkmq90ey2djhrkbad5 79611 79610 2026-04-29T13:58:24Z Exec8 2783 79611 wikitext text/x-wiki {{Navbox |name = Misamis Oriental |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Misamis Oriental]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13860|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q195623}} <!-- Alubijid --> * {{wikidata|label|linked|Q195637}} <!-- Balingasag --> * {{wikidata|label|linked|Q195650}} <!-- Balingoan --> * {{wikidata|label|linked|Q195663}} <!-- Binuangan --> * {{wikidata|label|linked|Q195676}} <!-- Claveria --> * {{wikidata|label|linked|Q195696}} <!-- Gitagum --> * {{wikidata|label|linked|Q195709}} <!-- Initao --> * {{wikidata|label|linked|Q195717}} <!-- Jasaan --> * {{wikidata|label|linked|Q195726}} <!-- Kinoguitan --> * {{wikidata|label|linked|Q195740}} <!-- Lagonglong --> * {{wikidata|label|linked|Q195755}} <!-- Laguindingan --> * {{wikidata|label|linked|Q195767}} <!-- Libertad --> * {{wikidata|label|linked|Q195780}} <!-- Lugait --> * {{wikidata|label|linked|Q195799}} <!-- Magsaysay --> * {{wikidata|label|linked|Q195815}} <!-- Manticao --> * {{wikidata|label|linked|Q195834}} <!-- Medina --> * {{wikidata|label|linked|Q195855}} <!-- Naawan --> * {{wikidata|label|linked|Q195870}} <!-- Opol --> * {{wikidata|label|linked|Q195883}} <!-- Salay --> * {{wikidata|label|linked|Q195899}} <!-- Sugbongcogon --> * {{wikidata|label|linked|Q1026274}} <!-- Tagoloan --> * {{wikidata|label|linked|Q195917}} <!-- Talisayan --> * {{wikidata|label|linked|Q195937}} <!-- Villanueva --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1645}} <!--Cagayan de Oro--> * {{wikidata|label|linked|Q195686}} <!--El Salvador --> * {{wikidata|label|linked|Q1525029}} <!--Gingoog --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Misamis Oriental| ]] </noinclude> 33dbd6udby88jf70ukplbbzvey65qyf Template:Negros Oriental 10 11601 79614 66368 2026-04-29T14:01:34Z Exec8 2783 79614 wikitext text/x-wiki {{Navbox |name = Negros Oriental |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Negros Oriental]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13863|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q194822}} <!-- Amlan --> * {{wikidata|label|linked|Q194854}} <!-- Ayungon --> * {{wikidata|label|linked|Q194874}} <!-- Bacong --> * {{wikidata|label|linked|Q194900}} <!-- Basay --> * {{wikidata|label|linked|Q194916}} <!-- Bindoy --> * {{wikidata|label|linked|Q194940}} <!-- Dauin --> * {{wikidata|label|linked|Q194967}} <!-- Jimalalud --> * {{wikidata|label|linked|Q194983}} <!-- La Libertad --> * {{wikidata|label|linked|Q195004}} <!-- Mabinay --> * {{wikidata|label|linked|Q195018}} <!-- Manjuyod --> * {{wikidata|label|linked|Q195040}} <!-- Pamplona --> * {{wikidata|label|linked|Q195056}} <!-- San Jose --> * {{wikidata|label|linked|Q195074}} <!-- Santa Catalina --> * {{wikidata|label|linked|Q195090}} <!-- Siaton --> * {{wikidata|label|linked|Q195106}} <!-- Sibulan --> * {{wikidata|label|linked|Q195121}} <!-- Tayasan --> * {{wikidata|label|linked|Q195140}} <!-- Valencia --> * {{wikidata|label|linked|Q195164}} <!-- Vallehermoso --> * {{wikidata|label|linked|Q145673}} <!-- Zamboanguita --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q628590}} <!--Bais --> * {{wikidata|label|linked|Q812113}} <!--Bayawan --> * {{wikidata|label|linked|Q991602}} <!--Canlaon --> * {{wikidata|label|linked|Q873377}} <!--Dumaguete --> * {{wikidata|label|linked|Q195197}} <!--Guihulngan --> * {{wikidata|label|linked|Q1020705}} <!--Tanjay --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Negros Oriental| ]] </noinclude> 92cfuvme312lwpc5r777i4irhf9dlr2 Template:Northern Samar 10 11602 79615 79435 2026-04-29T14:02:38Z Exec8 2783 79615 wikitext text/x-wiki {{Navbox |name = Northern Samar |title = Saray [[:Category:Saray baley na Filipinas|baley]] na {{wikidata|label|linked|Q13864}} |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13864|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q174784}} <!-- Allen --> * {{wikidata|label|linked|Q174801}} <!-- Biri --> * {{wikidata|label|linked|Q174822}} <!-- Bobon --> * {{wikidata|label|linked|Q174871}} <!-- Capul --> * {{wikidata|label|linked|Q174886}} <!-- Catarman --> * {{wikidata|label|linked|Q174906}} <!-- Catubig --> * {{wikidata|label|linked|Q174919}} <!-- Gamay --> * {{wikidata|label|linked|Q174940}} <!-- Laoang --> * {{wikidata|label|linked|Q174962}} <!-- Lapinig --> * {{wikidata|label|linked|Q174987}} <!-- Las Navas --> * {{wikidata|label|linked|Q175008}} <!-- Lavezares --> * {{wikidata|label|linked|Q175031}} <!-- Lope de Vega --> * {{wikidata|label|linked|Q175054}} <!-- Mapanas --> * {{wikidata|label|linked|Q175082}} <!-- Mondragon --> * {{wikidata|label|linked|Q175100}} <!-- Palapag --> * {{wikidata|label|linked|Q175115}} <!-- Pambujan --> * {{wikidata|label|linked|Q175136}} <!-- Rosario --> * {{wikidata|label|linked|Q175163}} <!-- San Antonio --> * {{wikidata|label|linked|Q175183}} <!-- San Isidro --> * {{wikidata|label|linked|Q175203}} <!-- San Jose --> * {{wikidata|label|linked|Q175230}} <!-- San Roque --> * {{wikidata|label|linked|Q175247}} <!-- San Vicente --> * {{wikidata|label|linked|Q175267}} <!-- Silvino Lobos --> * {{wikidata|label|linked|Q175283}} <!-- Victoria --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Northern Samar| ]] </noinclude> pn70b9u8rvte7k4mmyx1liphyhsuvwo Template:Palawan 10 11607 79620 66371 2026-04-29T14:07:05Z Exec8 2783 79620 wikitext text/x-wiki {{Navbox |name = Palawan |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Palawan]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13869|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q111338}} <!-- Aborlan --> * {{wikidata|label|linked|Q111351}} <!-- Agutaya --> * {{wikidata|label|linked|Q111360}} <!-- Araceli --> * {{wikidata|label|linked|Q111372}} <!-- Balabac --> * {{wikidata|label|linked|Q111378}} <!-- Bataraza --> * {{wikidata|label|linked|Q111386}} <!-- Brooke's Point --> * {{wikidata|label|linked|Q111393}} <!-- Busuanga --> * {{wikidata|label|linked|Q111402}} <!-- Cagayancillo --> * {{wikidata|label|linked|Q111414}} <!-- Coron --> * {{wikidata|label|linked|Q111427}} <!-- Culion --> * {{wikidata|label|linked|Q111438}} <!-- Cuyo --> * {{wikidata|label|linked|Q111468}} <!-- Dumaran --> * {{wikidata|label|linked|Q111483}} <!-- El Nido --> * {{wikidata|label|linked|Q111495}} <!-- Kalayaan --> * {{wikidata|label|linked|Q111506}} <!-- Linapacan --> * {{wikidata|label|linked|Q111521}} <!-- Magsaysay --> * {{wikidata|label|linked|Q111535}} <!-- Narra --> * {{wikidata|label|linked|Q111662}} <!-- Quezon --> * {{wikidata|label|linked|Q111677}} <!-- Rizal --> * {{wikidata|label|linked|Q111689}} <!-- Roxas --> * {{wikidata|label|linked|Q111707}} <!-- San Vicente --> * {{wikidata|label|linked|Q111719}} <!-- Sofronio Española --> * {{wikidata|label|linked|Q111730}} <!-- Taytay --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q111739}} <!--Puerto Princesa--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Palawan| ]] </noinclude> gngus0yodu8tc7pjc725l2mw58xffuv Template:Samar 10 11608 79627 66707 2026-04-29T14:16:02Z Exec8 2783 79627 wikitext text/x-wiki {{Navbox |name = Samar |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Samar]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13876|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q816088}} <!-- Almagro --> * {{wikidata|label|linked|Q809957}} <!-- Basey --> * {{wikidata|label|linked|Q816128}} <!-- Calbiga --> * {{wikidata|label|linked|Q816142}} <!-- Daram --> * {{wikidata|label|linked|Q816160}} <!-- Gandara --> * {{wikidata|label|linked|Q816184}} <!-- Hinabangan --> * {{wikidata|label|linked|Q816207}} <!-- Jiabong --> * {{wikidata|label|linked|Q816240}} <!-- Marabut --> * {{wikidata|label|linked|Q816267}} <!-- Matuguinao --> * {{wikidata|label|linked|Q816296}} <!-- Motiong --> * {{wikidata|label|linked|Q816320}} <!-- Pagsanghan --> * {{wikidata|label|linked|Q816342}} <!-- Paranas --> * {{wikidata|label|linked|Q252184}} <!-- Pinabacdao --> * {{wikidata|label|linked|Q816396}} <!-- San Jorge --> * {{wikidata|label|linked|Q816413}} <!-- San Jose de Buan --> * {{wikidata|label|linked|Q816435}} <!-- San Sebastian --> * {{wikidata|label|linked|Q816454}} <!-- Santa Margarita --> * {{wikidata|label|linked|Q816471}} <!-- Santa Rita --> * {{wikidata|label|linked|Q608320}} <!-- Santo Niño --> * {{wikidata|label|linked|Q126346}} <!-- Tagapul-an --> * {{wikidata|label|linked|Q816519}} <!-- Talalora --> * {{wikidata|label|linked|Q816542}} <!-- Tarangnan --> * {{wikidata|label|linked|Q816564}} <!-- Villareal --> * {{wikidata|label|linked|Q229664}} <!-- Zumarraga --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q577336}} <!--Calbayog --> * {{wikidata|label|linked|Q1020709}} <!--Catbalogan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Samar| ]] </noinclude> gc1nkusp5bf02qmjm8jqtscu40hcdnu Template:Siquijor 10 11609 79629 62179 2026-04-29T14:17:37Z Exec8 2783 79629 wikitext text/x-wiki {{Navbox |name = Siquijor |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Siquijor]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13879|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q174305}} <!-- Enrique Villanueva --> * {{wikidata|label|linked|Q174317}} <!-- Larena --> * {{wikidata|label|linked|Q174332}} <!-- Lazi --> * {{wikidata|label|linked|Q174343}} <!-- Maria --> * {{wikidata|label|linked|Q174354}} <!-- San Juan --> * {{wikidata|label|linked|Q174373}} <!-- Siquijor --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Siquijor| ]] </noinclude> isharmxcjbulpekj3ou8fm95e8unpt5 Template:South Cotabato 10 11610 79631 79438 2026-04-29T14:20:21Z Exec8 2783 79631 wikitext text/x-wiki {{Navbox |name = South Cotabato |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na {{wikidata|label|linked|Q13882}} |state = {{{state|autocollapse}}} |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q173870}} <!-- Banga --> * {{wikidata|label|linked|Q173898}} <!-- Lake Sebu --> * {{wikidata|label|linked|Q173922}} <!-- Norala --> * {{wikidata|label|linked|Q173944}} <!-- Polomolok --> * {{wikidata|label|linked|Q173965}} <!-- Santo Niño --> * {{wikidata|label|linked|Q173986}} <!-- Surallah --> * {{wikidata|label|linked|Q174018}} <!-- Tampakan --> * {{wikidata|label|linked|Q174039}} <!-- Tantangan --> * {{wikidata|label|linked|Q174003}} <!-- T'boli --> * {{wikidata|label|linked|Q174055}} <!-- Tupi --> |group2 = Saray siudad |list2 = * {{wikidata|label|linked|Q594275}} <!--General Santos-- * {{wikidata|label|linked|Q542154}} <!--Koronadal --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na South Cotabato| ]] </noinclude> cg5xu7hh8imizyju4k4t0hn868pvu9k Template:Southern Leyte 10 11611 79632 79440 2026-04-29T14:21:10Z Exec8 2783 79632 wikitext text/x-wiki {{Navbox |name = Southern Leyte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na {{wikidata|label|linked|Q13884}} |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13884|P36}}''' (kapital) |listclass = hlist |image = |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q173608}} <!-- Anahawan --> * {{wikidata|label|linked|Q173622}} <!-- Bontoc --> * {{wikidata|label|linked|Q173632}} <!-- Hinunangan --> * {{wikidata|label|linked|Q173641}} <!-- Hinundayan --> * {{wikidata|label|linked|Q173655}} <!-- Libagon --> * {{wikidata|label|linked|Q173665}} <!-- Liloan --> * {{wikidata|label|linked|Q173678}} <!-- Limasawa --> * {{wikidata|label|linked|Q173688}} <!-- Macrohon --> * {{wikidata|label|linked|Q173701}} <!-- Malitbog --> * {{wikidata|label|linked|Q173713}} <!-- Padre Burgos --> * {{wikidata|label|linked|Q173723}} <!-- Pintuyan --> * {{wikidata|label|linked|Q173735}} <!-- Saint Bernard --> * {{wikidata|label|linked|Q173745}} <!-- San Francisco --> * {{wikidata|label|linked|Q173754}} <!-- San Juan --> * {{wikidata|label|linked|Q173763}} <!-- San Ricardo --> * {{wikidata|label|linked|Q173774}} <!-- Silago --> * {{wikidata|label|linked|Q173792}} <!-- Sogod --> * {{wikidata|label|linked|Q173811}} <!-- Tomas Oppus --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q1025387}} <!--Maasin --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Southern Leyte| ]] </noinclude> syfnu6mrtx2p9elnxxjg3jayievq1w3 Template:Sultan Kudarat 10 11612 79633 62183 2026-04-29T14:22:10Z Exec8 2783 79633 wikitext text/x-wiki {{Navbox |name = Sultan Kudarat |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Sultan Kudarat]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13885|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q173393}} <!-- Bagumbayan --> * {{wikidata|label|linked|Q173404}} <!-- Columbio --> * {{wikidata|label|linked|Q173414}} <!-- Esperanza --> * {{wikidata|label|linked|Q173428}} <!-- Isulan --> * {{wikidata|label|linked|Q173438}} <!-- Kalamansig --> * {{wikidata|label|linked|Q173449}} <!-- Lambayong --> * {{wikidata|label|linked|Q173460}} <!-- Lebak --> * {{wikidata|label|linked|Q173468}} <!-- Lutayan --> * {{wikidata|label|linked|Q173479}} <!-- Palimbang --> * {{wikidata|label|linked|Q137813}} <!-- President Quirino --> * {{wikidata|label|linked|Q173556}} <!-- Senator Ninoy Aquino --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q173575}} <!--Tacurong --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Sultan Kudarat| ]] </noinclude> f61cwh82ozu9vcgy5y1m5ajuhzgyfo8 Template:Surigao del Norte 10 11613 79635 62185 2026-04-29T14:24:24Z Exec8 2783 79635 wikitext text/x-wiki {{Navbox |name = Surigao del Norte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Surigao del Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13889|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q155706}} <!-- Alegria --> * {{wikidata|label|linked|Q155720}} <!-- Bacuag --> * {{wikidata|label|linked|Q155735}} <!-- Burgos --> * {{wikidata|label|linked|Q155748}} <!-- Claver --> * {{wikidata|label|linked|Q155763}} <!-- Dapa --> * {{wikidata|label|linked|Q28735}} <!-- Del Carmen --> * {{wikidata|label|linked|Q155784}} <!-- General Luna --> * {{wikidata|label|linked|Q155795}} <!-- Gigaquit --> * {{wikidata|label|linked|Q155808}} <!-- Mainit --> * {{wikidata|label|linked|Q155819}} <!-- Malimono --> * {{wikidata|label|linked|Q155830}} <!-- Pilar --> * {{wikidata|label|linked|Q155839}} <!-- Placer --> * {{wikidata|label|linked|Q155849}} <!-- San Benito --> * {{wikidata|label|linked|Q155864}} <!-- San Francisco --> * {{wikidata|label|linked|Q155876}} <!-- San Isidro --> * {{wikidata|label|linked|Q28958}} <!-- Santa Monica --> * {{wikidata|label|linked|Q155905}} <!-- Sison --> * {{wikidata|label|linked|Q155917}} <!-- Socorro --> * {{wikidata|label|linked|Q155934}} <!-- Tagana-an --> * {{wikidata|label|linked|Q155946}} <!-- Tubod --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q1019949}} <!--Surigao City --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Surigao del Norte| ]] </noinclude> 2sy9e25k0ys93a6etqd7x0sq61shu4b Template:Surigao del Sur 10 11614 79636 62186 2026-04-29T14:25:18Z Exec8 2783 79636 wikitext text/x-wiki {{Navbox |name = Surigao del Sur |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Surigao del Sur]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13891|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q155471}} <!-- Barobo --> * {{wikidata|label|linked|Q155499}} <!-- Bayabas --> * {{wikidata|label|linked|Q155524}} <!-- Cagwait --> * {{wikidata|label|linked|Q155536}} <!-- Cantilan --> * {{wikidata|label|linked|Q155548}} <!-- Carmen --> * {{wikidata|label|linked|Q155558}} <!-- Carrascal --> * {{wikidata|label|linked|Q155568}} <!-- Cortes --> * {{wikidata|label|linked|Q155576}} <!-- Hinatuan --> * {{wikidata|label|linked|Q155582}} <!-- Lanuza --> * {{wikidata|label|linked|Q155590}} <!-- Lianga --> * {{wikidata|label|linked|Q155598}} <!-- Lingig --> * {{wikidata|label|linked|Q155605}} <!-- Madrid --> * {{wikidata|label|linked|Q155611}} <!-- Marihatag --> * {{wikidata|label|linked|Q155618}} <!-- San Agustin --> * {{wikidata|label|linked|Q155625}} <!-- San Miguel --> * {{wikidata|label|linked|Q155633}} <!-- Tagbina --> * {{wikidata|label|linked|Q155648}} <!-- Tago --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q866414}} <!--Bislig --> * {{wikidata|label|linked|Q155674}} <!--Tandag --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Surigao del Sur| ]] </noinclude> 8c9kxfm1whkta0dekfglotl77scnzjm Template:Tawi-Tawi 10 11615 79638 62188 2026-04-29T14:27:16Z Exec8 2783 79638 wikitext text/x-wiki {{Navbox |name = Tawi-Tawi |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Tawi-Tawi]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13893|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q155195}} <!-- Bongao --> * {{wikidata|label|linked|Q155221}} <!-- Languyan --> * {{wikidata|label|linked|Q155241}} <!-- Mapun --> * {{wikidata|label|linked|Q155259}} <!-- Panglima Sugala --> * {{wikidata|label|linked|Q155274}} <!-- Sapa-Sapa --> * {{wikidata|label|linked|Q155288}} <!-- Sibutu --> * {{wikidata|label|linked|Q155318}} <!-- Simunul --> * {{wikidata|label|linked|Q155334}} <!-- Sitangkai --> * {{wikidata|label|linked|Q155355}} <!-- South Ubian --> * {{wikidata|label|linked|Q155377}} <!-- Tandubas --> * {{wikidata|label|linked|Q155396}} <!-- Turtle Islands --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Tawi-Tawi| ]] </noinclude> ryg61tobvlz9t93kivnixsxkudc7eau Template:Zamboanga del Norte 10 11616 79640 66847 2026-04-29T14:28:59Z Exec8 2783 79640 wikitext text/x-wiki {{Navbox |name = Zamboanga del Norte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Zamboanga del Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q13899|P36}}''' (kapital) |listclass = hlist |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q132482}} <!-- Baliguian --> * {{wikidata|label|linked|Q132496}} <!-- Godod --> * {{wikidata|label|linked|Q132507}} <!-- Gutalac --> * {{wikidata|label|linked|Q132520}} <!-- Jose Dalman --> * {{wikidata|label|linked|Q132523}} <!-- Kalawit --> * {{wikidata|label|linked|Q132527}} <!-- Katipunan --> * {{wikidata|label|linked|Q132532}} <!-- La Libertad --> * {{wikidata|label|linked|Q132535}} <!-- Labason --> * {{wikidata|label|linked|Q132540}} <!-- Leon B. Postigo --> * {{wikidata|label|linked|Q132553}} <!-- Liloy --> * {{wikidata|label|linked|Q132561}} <!-- Manukan --> * {{wikidata|label|linked|Q132566}} <!-- Mutia --> * {{wikidata|label|linked|Q132570}} <!-- Piñan --> * {{wikidata|label|linked|Q132574}} <!-- Polanco --> * {{wikidata|label|linked|Q132578}} <!-- President Manuel A. Roxas --> * {{wikidata|label|linked|Q132583}} <!-- Rizal --> * {{wikidata|label|linked|Q132586}} <!-- Salug --> * {{wikidata|label|linked|Q132591}} <!-- Sergio Osmeña Sr. --> * {{wikidata|label|linked|Q132594}} <!-- Siayan --> * {{wikidata|label|linked|Q132599}} <!-- Sibuco --> * {{wikidata|label|linked|Q132601}} <!-- Sibutad --> * {{wikidata|label|linked|Q132605}} <!-- Sindangan --> * {{wikidata|label|linked|Q132610}} <!-- Siocon --> * {{wikidata|label|linked|Q132613}} <!-- Sirawai --> * {{wikidata|label|linked|Q132617}} <!-- Tampilisan --> |group2 = Saray siyudad |list2 = * {{wikidata|label|linked|Q1014775}} <!--Dapitan --> * {{wikidata|label|linked|Q432169}} <!--Dipolog --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Zamboanga del Norte| ]] </noinclude> fe0sx3tu1o2p7f2ewav4jtywra3esvo Template:Zamboanga Sibugay 10 11617 79643 62192 2026-04-29T14:31:26Z Exec8 2783 79643 wikitext text/x-wiki {{Navbox |name = Zamboanga Sibugay |title = Saray [[:Category:Saray baley na Filipinas|baley]] na [[Zamboanga Sibugay]] |state = {{{state|autocollapse}}} |listclass = hlist |above = '''{{wikidata|property|linked|Q13902|P36}}''' (kapital) |group1 = Saray baley |list1 = * {{wikidata|label|linked|Q131797}} <!-- Alicia --> * {{wikidata|label|linked|Q131811}} <!-- Buug --> * {{wikidata|label|linked|Q131816}} <!-- Diplahan --> * {{wikidata|label|linked|Q131838}} <!-- Imelda --> * {{wikidata|label|linked|Q131850}} <!-- Ipil --> * {{wikidata|label|linked|Q131870}} <!-- Kabasalan --> * {{wikidata|label|linked|Q131892}} <!-- Mabuhay --> * {{wikidata|label|linked|Q131906}} <!-- Malangas --> * {{wikidata|label|linked|Q131917}} <!-- Naga --> * {{wikidata|label|linked|Q131926}} <!-- Olutanga --> * {{wikidata|label|linked|Q131941}} <!-- Payao --> * {{wikidata|label|linked|Q131954}} <!-- Roseller Lim --> * {{wikidata|label|linked|Q124780}} <!-- Siay --> * {{wikidata|label|linked|Q131968}} <!-- Talusan --> * {{wikidata|label|linked|Q131975}} <!-- Titay --> * {{wikidata|label|linked|Q131984}} <!-- Tungawan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Zamboanga Sibugay| ]] </noinclude> 1m2cobzv99xh11v80i0jipxzfdofr2c Template:Replace 10 12948 79572 71227 2026-04-29T13:20:58Z Exec8 2783 79572 wikitext text/x-wiki <includeonly>{{safesubst:#invoke:String|replace|source={{{1}}}|{{{2}}}|{{{3}}}|plain={{safesubst:#if:{{{plain|}}}|{{{plain}}}|true}}|count={{{count|}}}}}</includeonly><noinclude> {{documentation}} </noinclude> r178n7opmwh460jjikowaqng5m5fzrn User:James500 2 13263 79644 73541 2026-04-29T19:11:35Z James500 7761 Remove template 79644 wikitext text/x-wiki {{Babel|en}} [[en:User:James500]] b167mzfa599c51y3hjzn4f18lk01tb1 Template:Maguindanao del Norte 10 13839 79603 79396 2026-04-29T13:53:20Z Exec8 2783 79603 wikitext text/x-wiki {{Navbox |name = Maguindanao del Norte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Maguindanao del Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q114019739|P36}}''' (kapital) |listclass = hlist |group1 = Saray na baley |list1 = * {{wikidata|label|linked|Q212240}} <!-- Barira --> * {{wikidata|label|linked|Q212255}} <!-- Buldon --> * {{wikidata|label|linked|Q212366}} <!-- Datu Blah T. Sinsuat --> * {{wikidata|label|linked|Q212432}} <!-- Datu Odin Sinsuat --> * {{wikidata|label|linked|Q212603}} <!-- Kabuntalan --> * {{wikidata|label|linked|Q212662}} <!-- Matanog --> * {{wikidata|label|linked|Q212684}} <!-- Northern Kabuntalan --> * {{wikidata|label|linked|Q212748}} <!-- Parang --> * {{wikidata|label|linked|Q212791}} <!-- Sultan Kudarat --> * {{wikidata|label|linked|Q212802}} <!-- Sultan Mastura --> * {{wikidata|label|linked|Q212830}} <!-- Talitay --> * {{wikidata|label|linked|Q212843}} <!-- Upi --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q726993}} <!--Cotabato City--> }}<noinclude> [[Category:Saray baley na Maguindanao del Norte|*]] </noinclude> r6q19mkvhgcwrvk0pxw73heg8uct234 79605 79603 2026-04-29T13:54:36Z Exec8 2783 79605 wikitext text/x-wiki {{Navbox |name = Maguindanao del Norte |title = Saray [[:Category:Saray siyudad na Filipinas|siyudad]] san [[:Category:Saray baley na Filipinas|baley]] na [[Maguindanao del Norte]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q114019739|P36}}''' (kapital) |listclass = hlist |group1 = Saray na baley |list1 = * {{wikidata|label|linked|Q212240}} <!-- Barira --> * {{wikidata|label|linked|Q212255}} <!-- Buldon --> * {{wikidata|label|linked|Q212366}} <!-- Datu Blah T. Sinsuat --> * {{wikidata|label|linked|Q212432}} <!-- Datu Odin Sinsuat --> * {{wikidata|label|linked|Q212603}} <!-- Kabuntalan --> * {{wikidata|label|linked|Q212662}} <!-- Matanog --> * {{wikidata|label|linked|Q212684}} <!-- Northern Kabuntalan --> * {{wikidata|label|linked|Q212748}} <!-- Parang --> * {{wikidata|label|linked|Q212791}} <!-- Sultan Kudarat --> * {{wikidata|label|linked|Q212802}} <!-- Sultan Mastura --> * {{wikidata|label|linked|Q212830}} <!-- Talitay --> * {{wikidata|label|linked|Q212843}} <!-- Upi --> |group2 = Siyudad |list2 = * {{wikidata|label|linked|Q726993}} <!--Cotabato City--> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Maguindanao del Norte|*]] </noinclude> 8vixweh7e6k64zaoeltyg722bw93yxm Template:Maguindanao del Sur 10 13841 79604 79415 2026-04-29T13:53:59Z Exec8 2783 79604 wikitext text/x-wiki {{Navbox |name = Maguindanao del Sur |title = Saray [[:Category:Saray baley na Filipinas|baley]] san [[Maguindanao del Sur]] |state = {{{state|autocollapse}}} |above = '''{{wikidata|property|linked|Q114019748|P36}}''' (kapital) |listclass = hlist |group1 = Saray na baley |list1 = * {{wikidata|label|linked|Q212222}} <!-- Ampatuan --> * {{wikidata|label|linked|Q212280}} <!-- Buluan --> * {{wikidata|label|linked|Q212310}} <!-- Datu Abdullah Sangki --> * {{wikidata|label|linked|Q212336}} <!-- Datu Anggal Midtimbang --> * {{wikidata|label|linked|Q212389}} <!-- Datu Hoffer Ampatuan --> * {{wikidata|label|linked|Q212411}} <!-- Datu Montawal --> * {{wikidata|label|linked|Q212463}} <!-- Datu Paglas --> * {{wikidata|label|linked|Q212488}} <!-- Datu Piang --> * {{wikidata|label|linked|Q212503}} <!-- Datu Salibo --> * {{wikidata|label|linked|Q212519}} <!-- Datu Saudi Ampatuan --> * {{wikidata|label|linked|Q212537}} <!-- Datu Unsay --> * {{wikidata|label|linked|Q212557}} <!-- General Salipada K. Pendatun --> * {{wikidata|label|linked|Q212581}} <!-- Guindulungan --> * {{wikidata|label|linked|Q212623}} <!-- Mamasapano --> * {{wikidata|label|linked|Q212644}} <!-- Mangudadatu --> * {{wikidata|label|linked|Q212707}} <!-- Pagalungan --> * {{wikidata|label|linked|Q122827}} <!-- Paglat --> * {{wikidata|label|linked|Q212735}} <!-- Pandag --> * {{wikidata|label|linked|Q212759}} <!-- Rajah Buayan --> * {{wikidata|label|linked|Q212766}} <!-- Shariff Aguak --> * {{wikidata|label|linked|Q212778}} <!-- Shariff Saydona Mustapha --> * {{wikidata|label|linked|Q212784}} <!-- South Upi --> * {{wikidata|label|linked|Q212808}} <!-- Sultan sa Barongis --> * {{wikidata|label|linked|Q212823}} <!-- Talayan --> }}<noinclude> {{collapsible option}} [[Category:Saray baley na Maguindanao del Sur|*]] </noinclude> 9600u97mztiuemmow48e1jxzdkvxi36 Template:Param value 10 13876 79569 2026-04-29T13:15:49Z Exec8 2783 Balon bolong: <templatestyles src="Template:Param value/styles.css"/><span class="tpl-pval__wrapper"><code class="tpl-pval__code" style="{{#if:{{{border|{{{b|}}}}}}|border:{{{border|{{{b|}}}}}};}} {{#if:{{{bg-color|}}}|background-color: {{{bg-color}}}; color: {{Greater color contrast ratio|{{{bg-color}}}}};}} {{#if:{{{bg|}}}|color: {{Greater color contrast ratio|{{{bg}}}}};}} {{#ifexpr:{{str len|{{{1|}}}}} > 25|white-space: wrap;|}} {{{style|}}}">{{replace|{{replace|{{replace|{{replace|{{re... 79569 wikitext text/x-wiki <templatestyles src="Template:Param value/styles.css"/><span class="tpl-pval__wrapper"><code class="tpl-pval__code" style="{{#if:{{{border|{{{b|}}}}}}|border:{{{border|{{{b|}}}}}};}} {{#if:{{{bg-color|}}}|background-color: {{{bg-color}}}; color: {{Greater color contrast ratio|{{{bg-color}}}}};}} {{#if:{{{bg|}}}|color: {{Greater color contrast ratio|{{{bg}}}}};}} {{#ifexpr:{{str len|{{{1|}}}}} > 25|white-space: wrap;|}} {{{style|}}}">{{replace|{{replace|{{replace|{{replace|{{replace|<includeonly>⊗ϑ{{{1|}}}⊗ϑ</includeonly><noinclude>value</noinclude>| |{{{space|{{{sp|&nbsp;}}}}}}}}|#|&#35;}}|*|&#42;}}|:|&#58;}}|⊗ϑ|}}</code></span><noinclude> {{Documentation}} </noinclude> oyd3jpyy59x812wn9xbrqm63nh7f7d7 Template:Param value/styles.css 10 13877 79570 2026-04-29T13:16:08Z Exec8 2783 Balon bolong: /* {{pp-template}} */ .tpl-pval__code { border: thin solid var(--border-color-base, #a2a9b1); background-color: var(--color-inverted, #fff); color: inherit; white-space: nowrap; } 79570 sanitized-css text/css /* {{pp-template}} */ .tpl-pval__code { border: thin solid var(--border-color-base, #a2a9b1); background-color: var(--color-inverted, #fff); color: inherit; white-space: nowrap; } fqg9qh88nnemm62ynyo3np3cozsa2f2 Template:Parameter 10 13878 79571 2026-04-29T13:16:54Z Exec8 2783 Balon bolong: <code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">&#124;{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}&#61;}}{{{... 79571 wikitext text/x-wiki <code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">&#124;{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}&#61;}}{{{2|}}}</code><noinclude> {{Documentation}} <!-- Categories go near the bottom of the /doc subpage – interwikis go to Wikidata, thank you! --> </noinclude> 9bs2ftecq9eid2hliyadkmm2ks00w8w Template:Str len 10 13879 79573 2026-04-29T13:21:31Z Exec8 2783 Balon bolong: {{<includeonly>safesubst:</includeonly>#invoke:String|len|s={{{1|}}}}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 79573 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:String|len|s={{{1|}}}}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 2n0p928wu8hdh499dl0eaxtmt6t1tr4 Template:Pp 10 13880 79575 2026-04-29T13:25:55Z Exec8 2783 Balon bolong: {{#invoke:Protection banner|main}}<noinclude> {{documentation}} </noinclude> 79575 wikitext text/x-wiki {{#invoke:Protection banner|main}}<noinclude> {{documentation}} </noinclude> 8rt1snyv5yit3jnuzrbl00negaj27e5 Module:Protection banner 828 13881 79576 2026-04-29T13:26:23Z Exec8 2783 . 79576 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:Protection banner/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 o3ocs8c50hagthmsuho5s6y44o0rimz Module:Effective protection level 828 13882 79577 2026-04-29T13:26:51Z Exec8 2783 . 79577 Scribunto text/plain local p = {} -- Returns the permission required to perform a given action on a given title. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local level = mw.ext.FlaggedRevs.getStabilitySettings(title) level = level and level.autoreview if level == 'review' then return 'reviewer' elseif level ~= '' then return level else return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review end elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 ) end if title.namespace == 8 then -- MediaWiki namespace if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page return 'interfaceadmin' elseif title.baseText == "Gadgets-definition" then return 'interfaceadmin' else -- any non-JS/CSS MediaWiki page return 'sysop' end elseif title.namespace == 2 and title.isSubpage then if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page return 'interfaceadmin' elseif title.contentModel == 'json' then -- user JSON page return 'sysop' end end if action == 'undelete' then return 'sysop' end local level = title.protectionLevels[action] and title.protectionLevels[action][1] if level == 'sysop' or level == 'editprotected' then return 'sysop' elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page return 'sysop' elseif level == 'templateeditor' then return 'templateeditor' elseif action == 'move' then local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move. if blacklistentry and not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif title.namespace == 6 then return 'filemover' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end end local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename) if blacklistentry then if not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason return 'autoconfirmed' elseif level then return level elseif action == 'upload' then return 'autoconfirmed' elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts if title.namespace == 0 then return 'autoconfirmed' -- Per [[WP:ACPERM]], you need to be autoconfirmed to create pages in mainspace end return 'user' else return '*' end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p nacj9lsnya0896kpkyuy2onbc6mm6xw Module:Effective protection expiry 828 13883 79578 2026-04-29T13:27:31Z Exec8 2783 . 79578 Scribunto text/plain local p = {} -- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title) return stabilitySettings and stabilitySettings.expiry or 'unknown' elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 ) end local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename) if rawExpiry == 'infinity' then return 'infinity' elseif rawExpiry == '' then return 'unknown' else local year, month, day, hour, minute, second = rawExpiry:match( '^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$' ) if year then return string.format( '%s-%s-%sT%s:%s:%s', year, month, day, hour, minute, second ) else error('internal error in Module:Effective protection expiry; malformed expiry timestamp') end end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p i1wms02y1w048cq6uttka18a5pjzp63 Module:Protection banner/config 828 13884 79579 2026-04-29T13:28:03Z Exec8 2783 . 79579 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:Pp'] = {}, ['Template:Protection padlock'] = {}, ['Template:Pp-extended'] = {'ecp'}, ['Template:Pp-blp'] = {'blp'}, -- we don't need Template:Pp-create ['Template:Pp-dispute'] = {'dispute'}, ['Template:Pp-main-page'] = {'mainpage'}, ['Template:Pp-move'] = {action = 'move', catonly = 'yes'}, ['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'}, -- we don't need Template:Pp-move-indef ['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'}, ['Template:Pp-office'] = {'office'}, ['Template:Pp-office-dmca'] = {'dmca'}, ['Template:Pp-pc'] = {action = 'autoreview', small = true}, ['Template:Pp-pc1'] = {action = 'autoreview', small = true}, ['Template:Pp-reset'] = {'reset'}, ['Template:Pp-semi-indef'] = {small = true}, ['Template:Pp-sock'] = {'sock'}, ['Template:Pp-template'] = {'template', small = true}, ['Template:Pp-upload'] = {action = 'upload'}, ['Template:Pp-usertalk'] = {'usertalk'}, ['Template:Pp-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 -------------------------------------------------------------------------------- } g4f6dkimoikv05ulbf832zu7omkf2fc