{"id":579,"date":"2009-12-12T21:42:10","date_gmt":"2009-12-12T20:42:10","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=579"},"modified":"2009-12-12T21:42:10","modified_gmt":"2009-12-12T20:42:10","slug":"you-will-be-validated-resistance-is-futile","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/","title":{"rendered":"You will be validated. Resistance is futile."},"content":{"rendered":"<p>It has been over a week since I posted about any MediaWiki stuff, which can very well be a record since I started my blog. The reason for this is cause I&#8217;ve been busy with a lot of projects. You&#8217;ll hear about them all later on, but now I just want to provide an overview of the work I&#8217;ve been doing on my new MediaWiki extension: <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator\" target=\"_blank\">Validator<\/a>.<\/p>\n<p>Validator is an extension that makes parameter validation functionality available to other extensions. This enables other extensions to validate parameters, set them to their defaults, and generate error messages, while only defining the parameters and their criteria. The goal of this extension is to facilitate the handling of parameters in other extension, and generalize the error output. By itself, it does not add any functionality to the user end.<\/p>\n<p>The main functionality is:<\/p>\n<ul>\n<li><strong>Parameter validation<\/strong>: Parameters that are provided in an array where the keys represent their name, and the values their value, can easily be validated against a set of criteria. During this validation, errors and their types will be stored, and invalid parameters will be separated from valid ones. The only thing an other extension needs to do is define the criteria to validate against. A set of criteria types (which include check to see if something is a number, is within a range, or in an array) is provided by Validator, and can be used without any extra coding. When a criteria type that is not supported is required, you can hook into the Validator criteria types and add your own validation functions.<\/li>\n<\/ul>\n<ul>\n<li><strong>Default value handling<\/strong>: Parameters that are invalid, or simply not provided, can be set to their default values. These default values need to be specified by the extension the parameters belong to.<\/li>\n<\/ul>\n<ul>\n<li><strong>Error handling<\/strong>: Since the errors and their types are stored during validation, you can create error messages by retrieving this data and parsing it. Validator also provides a manager class that can provide you with a list of internationalized and specific errors. Via a validation level setting Validator provides, you can determine how the errors should be reflected on your wiki page. This can go from completely ignoring any errors to showing a complete list of all errors underneath the regular output, or even hiding the regular output and only showing the errors.<\/li>\n<\/ul>\n<p>Validator has not yet been released, but will be soon. Although not all documentation is ready yet, most of the information needed to use it can already be found in the <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Validator#Implementation\" target=\"_blank\">implementation section<\/a> of the documentation. Both the development versions of <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Maps\" target=\"_blank\">Maps<\/a> and <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Semantic_Maps\" target=\"_blank\">Semantic Maps<\/a> are currently using Validator for their parameter handling. The next release of those extensions, 0.5, will therefore feature <a href=\"https:\/\/www.entropywins.wtf\/blog\/2009\/11\/28\/strict-parameter-validation\/\">strict parameter validation<\/a>, and be dependent on Validator.<\/p>\n<p>Oh, and I got <a href=\"http:\/\/svn.wikimedia.org\/viewvc\/mediawiki?view=rev&amp;revision=60000\" target=\"_blank\">the 60000th MediaWiki commit<\/a> with the changes I made to Maps to work with <a href=\"http:\/\/svn.wikimedia.org\/viewvc\/mediawiki?view=rev&amp;revision=60002\" target=\"_blank\">the last alpha of Validator<\/a> &#8211; wooot! \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It has been over a week since I posted about any MediaWiki stuff, which can very well be a record&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[25,155,156,181,195,227,271,272,285],"class_list":["post-579","post","type-post","status-publish","format-standard","hentry","category-programming","tag-api","tag-maps","tag-mediawiki","tag-open-source","tag-php","tag-semantic-maps","tag-validation","tag-validator","tag-wikimedia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>You will be validated. Resistance is futile. - Blog of Jeroen De Dauw<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"You will be validated. Resistance is futile. - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"It has been over a week since I posted about any MediaWiki stuff, which can very well be a record&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2009-12-12T20:42:10+00:00\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/12\\\/12\\\/you-will-be-validated-resistance-is-futile\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/12\\\/12\\\/you-will-be-validated-resistance-is-futile\\\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"You will be validated. Resistance is futile.\",\"datePublished\":\"2009-12-12T20:42:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/12\\\/12\\\/you-will-be-validated-resistance-is-futile\\\/\"},\"wordCount\":493,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"keywords\":[\"API\",\"Maps\",\"MediaWiki\",\"Open Source\",\"PHP\",\"Semantic Maps\",\"Validation\",\"Validator\",\"Wikimedia\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/12\\\/12\\\/you-will-be-validated-resistance-is-futile\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/12\\\/12\\\/you-will-be-validated-resistance-is-futile\\\/\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/12\\\/12\\\/you-will-be-validated-resistance-is-futile\\\/\",\"name\":\"You will be validated. Resistance is futile. - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\"},\"datePublished\":\"2009-12-12T20:42:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/12\\\/12\\\/you-will-be-validated-resistance-is-futile\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/12\\\/12\\\/you-will-be-validated-resistance-is-futile\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/12\\\/12\\\/you-will-be-validated-resistance-is-futile\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"You will be validated. Resistance is futile.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/jeroendedauw\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"You will be validated. Resistance is futile. - Blog of Jeroen De Dauw","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/","og_locale":"en_US","og_type":"article","og_title":"You will be validated. Resistance is futile. - Blog of Jeroen De Dauw","og_description":"It has been over a week since I posted about any MediaWiki stuff, which can very well be a record&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2009-12-12T20:42:10+00:00","author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"You will be validated. Resistance is futile.","datePublished":"2009-12-12T20:42:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/"},"wordCount":493,"commentCount":1,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"keywords":["API","Maps","MediaWiki","Open Source","PHP","Semantic Maps","Validation","Validator","Wikimedia"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/","url":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/","name":"You will be validated. Resistance is futile. - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"datePublished":"2009-12-12T20:42:10+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/12\/you-will-be-validated-resistance-is-futile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"You will be validated. Resistance is futile."}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-9l","jetpack-related-posts":[{"id":625,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/12\/26\/validator-0-2-released\/","url_meta":{"origin":579,"position":0},"title":"Validator 0.2 released","author":"Jeroen","date":"2009-12-26","format":false,"excerpt":"Today I released Validator version 0.2, on which I've been working the last 2 days. It features massive rewriting to make it more flexible, and has some added functionality. Let's have a look at what changed. The most important change is, without any doubt, the new list support. Validator 0.1\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Error feedback in the form of a list for Validator_ERRORS_SHOW or Validator_ERRORS_STRICT.","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/12\/validator-0.2-error-list.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1056,"url":"https:\/\/www.entropywins.wtf\/blog\/2011\/01\/11\/validator-0-4-3introducing-auto-documentation\/","url_meta":{"origin":579,"position":1},"title":"Validator 0.4.3:introducing auto-documentation","author":"Jeroen","date":"2011-01-11","format":false,"excerpt":"It's been a while since the previous release of Validator, but this minor update includes some cool new functionality. As I was creating the SubPageList extension and it's documentation (at 27c3!), it occurred to me that to document the usage of the <subpages \/> parser hook, all the info I\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Some documentation (for the coordinates parser function) generated using the describe parser hook","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/describe-coordinates-table.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/describe-coordinates-table.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/describe-coordinates-table.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/describe-coordinates-table.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":572,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/11\/28\/strict-parameter-validation\/","url_meta":{"origin":579,"position":2},"title":"Strict parameter validation","author":"Jeroen","date":"2009-11-28","format":false,"excerpt":"One of the big new features in Maps 0.5 will be strict parameter validation. This means Maps will allow you to get specific errors or warnings when entering invalid values or parameters. The setting determining the strictness of the validation, which can be changes in your LocalSettings file, currently accepts\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Maps displaying error feedback","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/11\/mapsErrorFeedback.gif?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1158,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/11\/24\/upgrading-an-extension-that-now-uses-composer\/","url_meta":{"origin":579,"position":3},"title":"Upgrading an extension that now uses Composer","author":"Jeroen","date":"2013-11-24","format":false,"excerpt":"This blog post is aimed at users of the MediaWiki software that have extensions installed, and want to upgrade one or more to a version that makes use of Composer. At present this is of particular relevance for those upgrading to SMW 1.9 beta or Maps 3.0 alpha. If you\u2026","rel":"","context":"In \"composer\"","block_context":{"text":"composer","link":"https:\/\/www.entropywins.wtf\/blog\/tag\/composer\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1149,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/11\/22\/paramprocessor-1-0-released\/","url_meta":{"origin":579,"position":4},"title":"ParamProcessor 1.0 released","author":"Jeroen","date":"2013-11-22","format":false,"excerpt":"I\u2019m happy to announce the first release of the ParamProcessor library. ParamProcessor is a parameter processing library that provides a way to decoratively define a set of parameters and how they should be processed. It can take such declarations together with a list of raw parameters and provide the processed\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1052,"url":"https:\/\/www.entropywins.wtf\/blog\/2011\/01\/01\/new-mediawiki-extension-subpagelist\/","url_meta":{"origin":579,"position":5},"title":"New MediaWiki extension: SubPageList","author":"Jeroen","date":"2011-01-01","format":false,"excerpt":"During 27c3 someone asked me to install an extension to list subpages onto the hackerspace.be wiki. I picked SubPageList3, as it seemed to most decent one. I did a simple test to see if it was working, and immediately found a namespace bug. So I decided to quickly rewrite it\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"SubPageList extension","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/01\/Splist_1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=579"}],"version-history":[{"count":0,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/579\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}