Books edit

{{editprotected}} This should be updated to account for |class=book. Headbomb {ταλκκοντριβς – WP Physics} 06:15, 11 December 2009 (UTC)Reply

I'm not exactly sure what the behavior should be. Somewhat important when changing a template that is used 2.7 million times. —TheDJ (talkcontribs) 12:45, 11 December 2009 (UTC)Reply
I don't think "books" is a proper classification here. Either way, these changes need to be made in a sandbox like Template:pagetype/sandbox to avoid breaking things. --MZMcBride (talk) 18:44, 11 December 2009 (UTC)Reply

Needed edit

Should |class=needed be produce "page" or "article"? — Martin (MSGJ · talk) 07:27, 29 April 2010 (UTC)Reply

I thought we didn't support Needed-Class anymore. Happymelon 15:24, 29 April 2010 (UTC)Reply
But what about all the subcategories of Category:Needed-Class articles? — Martin (MSGJ · talk) 16:07, 29 April 2010 (UTC)Reply
And the subcategories of Current-Class articles, or Merge-Class articles, or any of the other custom classes?? Those classes which we said should be available for projects to use if they wish, but for which we should not bloat banner code for all projects. There are 74 Needed-Class categories, 63 of which are empty. I don't agree that we should make any move to better integrate these niche classes when that disadvantages 1,600 projects for the sake of less than a dozen. Happymelon 21:31, 29 April 2010 (UTC)Reply
Fair enough. I hadn't noticed that so many of them were empty. — Martin (MSGJ · talk) 10:32, 30 April 2010 (UTC)Reply

talkspace=yes edit

I think a talkspace=yes, similar to subjectspace=yes, would be useful to have as an optional parameter for this template. It should, if on a talk page, return "talk page" and otherwise return the default value. This would be useful for templates like {{Last edited by}} to be more accurate or {{In use}} so we can get rid of the switch function there. --The Evil IP address (talk) 18:08, 6 June 2010 (UTC)Reply

Sorry I can't understand what you mean. Can you describe the behaviour of the template with this new parameter? — Martin (MSGJ · talk) 18:46, 6 June 2010 (UTC)Reply
Currently, on a talk page, this template shows the subject namespace, for example on an article talk page, it shows "article", on a template talk page it shows "template", and so on. However, there are situations in which it would be good to return "talk page" instead, for example within {{Last edited by}}. I'd like to add this template to {{Db-meta}} in the next time (which already uses a similar hardcoded function of this template), but since db templates are also used on talk pages, showing "article" or "template" wouldn't make sense there. --The Evil IP address (talk) 13:10, 9 June 2010 (UTC)Reply
Ah now I understand. I would be open to such an addition if it can be coded cleanly without affecting the performance for the majority of uses (as this is a very widely used template!) Question: could you not just use {{NAMESPACE}} page in your case? — Martin (MSGJ · talk) 15:36, 9 June 2010 (UTC)Reply
Fixed by using Template:pp-meta/pagetype instead. Prodego talk 23:59, 12 January 2011 (UTC)Reply

Misleading documentation edit

According to the documentation there's a parameter "subjectspace - If set to yes then subjectspace pages will be treated the same as talkspace pages."

Without subjectspace: {{pagetype|page=Category:X1}} and {{pagetype|page=Category talk:X1}} produce "category" and "category".

With subjectspace: {{pagetype|page=Category:X1|subjectspace=yes}} and {{pagetype|page=Category talk:X1|subjectspace=yes}} produce "category" and "category".

There's an unnamed parameter, "class", but that's "optional" and the documentation suggests that it shouldn't affect the result in this case. Is the intention to require page name (which includes namespace) and namespace specified as separate parameters? Peter James (talk) 00:01, 22 September 2013 (UTC)Reply

I've updated the docs to match what the template does. -- WOSlinker (talk) 00:15, 22 September 2013 (UTC)Reply
It's still misleading. "This template is used to identify what kind of page it or its subject page is." - but when used with a page name, it returns "Article" for a template and "Template" for a template talk page. Is there something similar to Template:Pp-meta/pagetype (mentioned above) but allowing a parameter for page name? Peter James (talk) 08:02, 22 September 2013 (UTC)Reply
This template was designed for use by WikiProject banners so it was mainly just tested on talk pages and currently doesn't do very well with non-talk pages. I'll have alook at doing something better in the sandbox soon. -- WOSlinker (talk) 08:33, 22 September 2013 (UTC)Reply
I found it in use in Template:Edit protected and Template:Edit semi-protected, where parameter is needed because of a change to MediaWiki:Protectedpagetext. I've had to use TALKPAGENAME in those templates, which isn't ideal but produces the correct result (except in the unlikely event of a request for an edit to a redirected talk page). It may produce incorrect results if this template is changed, although it only affects the message and not the template's function. If improving or replacing this template, it may also be possible to use Module:Redirect to determine whether a page is a redirect, although it currently fails where "#REDIRECT:" (instead of just "#REDIRECT" is used. Peter James (talk) 10:12, 22 September 2013 (UTC)Reply
Right, I've made some changes in the sandbox and now {{pagetype/sandbox|page=Category:X1}} and {{pagetype/sandbox|page=Category talk:X1}} produce "category" and "category". I've also removed the subjectspace option from the sandbox since it's not needed with the changes that I've made. Can you give it a test yourself & if you are happy, we can make it live. -- WOSlinker (talk) 13:30, 22 September 2013 (UTC)Reply
It's an improvement for pages not in talk or article space, and does what the "output" section of the documentation says, with the exception of "portal" or "project" class in subjectspace - is that needed? Peter James (talk) 15:08, 22 September 2013 (UTC)Reply
I think that's fine. I've updated the template and the docs. -- WOSlinker (talk) 16:07, 22 September 2013 (UTC)Reply

Module:Pagetype edit

I've created a Lua implementation of this template at Module:Pagetype. It's much more customisable than this template, and can be used to create other pagetype-like templates with different namespace configurations and custom text values. Have a look at the module documentation for details. The default settings are almost the same as this template, with one important difference - redirects are now detected and displayed as "redirect", no matter what namespace they are in. If this is undesirable I can change it, but it won't be easy to change the redirect detection on a per-namespace basis, due to the way the module hooks into Module:Namespace detect. Please have a look at the module, test it a bit, and see if there are any bugs, or anything you would like to change. You might also want to take a look at the test cases (results). If everything is ok, I plan to update {{pagetype}} with this module some time this week. — Mr. Stradivarius ♪ talk ♪ 14:07, 4 November 2013 (UTC)Reply

Great! I notice that {{db-meta}} uses the following construction several times:
{{talk other|talk page|{{pagetype|subjectspace=yes}}}}
Does your version make this simpler to do? — Martin (MSGJ · talk) 11:23, 7 November 2013 (UTC)Reply
Seems as though {{#invoke:pagetype|main|talk=y}} would work here as a shorter replacement. -- WOSlinker (talk) 12:00, 7 November 2013 (UTC)Reply
Yes, that's right - you could also use {{#invoke:pagetype|main|defaultns=all}}, depending on how many namespaces you want to include by default. I also wasn't aware of the |subjectspace= parameter until now, as it was removed with this edit, so adding |subjectspace=yes to the module won't have any effect. — Mr. Stradivarius ♪ talk ♪ 14:13, 7 November 2013 (UTC)Reply
Ok, I've made the switch to the new module. Let me know if you spot any issues. — Mr. Stradivarius ♪ talk ♪ 07:50, 9 November 2013 (UTC)Reply

Misleading message about redirect edit

 – Jackmcbarn (talk) 19:16, 3 April 2014 (UTC)Reply

If you put {{Edit protected|MediaWiki talk:Spam-blacklist/log}} on MediaWiki talk:Spam-blacklist, the box begins with "It is requested that an edit be made to the fully protected redirect at MediaWiki talk:Spam-blacklist/log.". Why "redirect", when MediaWiki talk:Spam-blacklist/log isn't? See this permalink. --Redrose64 (talk) 18:54, 3 April 2014 (UTC)Reply

@Mr. Stradivarius: The issue is that when p._main{page='MediaWiki talk:Spam-blacklist/log'} is called, checkRedirects instead checks to see if MediaWiki:Spam-blacklist/log is a redirect (lines 208-211). I'm not sure what the logic behind doing that that way is. Thoughts? Jackmcbarn (talk) 19:16, 3 April 2014 (UTC)Reply
Yep, that's a bug in the module. It should use the current page rather than the subject page if talk pages are allowed, but at the moment it only checks args.talk, not args.defaultns. I'll have a think about how best to fix this. (Also, your ping didn't work - not sure why.) — Mr. Stradivarius ♪ talk ♪ 04:12, 4 April 2014 (UTC)Reply
Now fixed. I also uncovered a nasty bug that was introduced by the recent changes to Module:Namespace detect - this module was trying to use the # operator with the mappings table, which didn't work after it was switched to load using mw.loadData. I also split out the config data to Module:Pagetype/config, loaded using mw.loadData. And I made some beautification fixes too. — Mr. Stradivarius ♪ talk ♪ 06:01, 4 April 2014 (UTC)Reply
I didn't get a ping either. It might be because it was a page creation? --Redrose64 (talk) 10:18, 4 April 2014 (UTC)Reply
@Mr. Stradivarius: Broken in the opposite way now. [1] says talk page instead of module. Jackmcbarn (talk) 16:05, 5 April 2014 (UTC)Reply
Bleh. That was a bug I introduced to Module:Namespace detect this morning trying to fix an unrelated issue. That's now fixed as well. And with that, I think I shall call it a night. If you notice other similar problems, purging should fix it. — Mr. Stradivarius ♪ talk ♪ 17:13, 5 April 2014 (UTC)Reply

Drafts edit

I don't think this module identifies pages in the draft namespace. Please could this be added? — Martin (MSGJ · talk) 11:40, 3 October 2014 (UTC)Reply

You could either use {{pagetype|draft=true}} or you could edit the cfg.defaultNamespaces section of Module:Pagetype/config. -- WOSlinker (talk) 11:56, 3 October 2014 (UTC)Reply
@MSGJ: Drafts are detected fine - they are one of the extended namespaces. See Module:Pagetype#Default namespace sets for a quick look at what is in what set. And if you think drafts should be in the default set instead of just the extended set, we can make the change in the module config, as WOSlinker said. (We should probably get consensus for that first, though.) — Mr. Stradivarius ♪ talk ♪ 13:13, 3 October 2014 (UTC)Reply
Yes well, perhaps "draft" should be in that set. Also I'm surprised that "file" is not there. — Martin (MSGJ · talk) 13:51, 3 October 2014 (UTC)Reply
Hmm I see "file" is there, but not in the "media" row so I'm a bit confused by that. — Martin (MSGJ · talk) 13:53, 3 October 2014 (UTC)Reply
@MSGJ: That's because when you click a link to a media namespace page, you're not going to a wiki page, but you're viewing the file directly. For example: Media:Example.svg. — Mr. Stradivarius ♪ talk ♪ 14:00, 3 October 2014 (UTC)Reply
Interesting, I didn't know that! In the meantime I've used |draft=yes on Template:Importance mask so it works as intended. Cheers all — Martin (MSGJ · talk) 11:29, 4 October 2014 (UTC)Reply

Protected edit request on 28 September 2015 edit

Add the Gadget and Gadget definition namespaces and make the page type the same name, but with a lowercase "G". GeoffreyT2000 (talk) 02:50, 28 September 2015 (UTC)Reply

  DoneMr. Stradivarius ♪ talk ♪ 03:41, 28 September 2015 (UTC)Reply

Set index articles edit

@Mr. Stradivarius: Is there any way for the module to distinguish between disambiguation pages and set index articles? PC78 (talk) 00:06, 5 July 2016 (UTC)Reply

I asked about disambiguation pages somewhere before and was told that it is impossible ;( — Martin (MSGJ · talk) 11:28, 12 July 2016 (UTC)Reply
@PC78: see Module talk:Redirect#Query — Martin (MSGJ · talk) 11:32, 12 July 2016 (UTC)Reply
Hmm. The doc refers to disambiguation pages at Module:Pagetype/doc#Main namespace classes. Does this not do what I think it does? PC78 (talk) 17:02, 12 July 2016 (UTC)Reply
You have to tell the module that it is a disambiguation page using the class parameter. It won't detect it automatically, which I think it what you were asking about. — Martin (MSGJ · talk) 19:25, 12 July 2016 (UTC)Reply
Ah-ha. How does the Metadata gadget do it then, is that not something that can be applied to a template? PC78 (talk) 06:49, 13 July 2016 (UTC)Reply
The gadget also uses the class rating from the article's talk page, I believe! — Martin (MSGJ · talk) 09:36, 20 April 2023 (UTC)Reply

Detecting disambiguation pages edit

Would it be possible to detect disambiguation pages from this module? Disambiguation pages have the page property "disambiguation". Can you retrieve page properties from Lua modules? Kaldari (talk) 20:44, 31 October 2016 (UTC)Reply

Please see Module talk:Redirect#Query! — Martin (MSGJ · talk) 20:54, 31 October 2016 (UTC)Reply
Thanks for the pointer. After looking at the Phab ticket and the Scribunto code, I think I actually know how this could be implemented. Kaldari (talk) 21:19, 31 October 2016 (UTC)Reply

cross project calls edit

Should this work across wikiprojects? For example

  • {{#invoke:pagetype|main|page=Frankfurt}} gives: article
  • {{#invoke:pagetype|main|page=Wikipedia:Frankfurt}} gives: page
  • {{#invoke:pagetype|main|page=Wikivoyage:Frankfurt}} gives: article
  • {{#invoke:pagetype|main|page=Voy:Frankfurt}} gives: article
  • {{#invoke:pagetype|main|page=Frankfurt/Main}} gives: redirect
  • {{#invoke:pagetype|main|page=Wikipedia:Frankfurt/Main}} gives: page
  • {{#invoke:pagetype|main|page=W:Frankfurt/Main}} gives: redirect
  • {{#invoke:pagetype|main|page=Wikipedia:Frankfurt/Main123}} gives: page
  • {{#invoke:pagetype|main|page=Wikivoyage:Frankfurt/Main}} gives: article
  • {{#invoke:pagetype|main|page=FRA}} gives: page
  • {{#invoke:pagetype|main|page=Wikipedia:FRA}} gives: redirect
  • {{#invoke:pagetype|main|page=W:FRA}} gives: page
  • {{#invoke:pagetype|main|page=Wikivoyage:FRA}} gives: article
  • {{#invoke:pagetype|main|page=Voy:FRA}} gives: article

Does not appear to be giving correct results, or am I misunderstanding the syntax? --Traveler100 (talk) 12:21, 15 February 2018 (UTC)Reply

I don't believe this is possible and/or desirable — Martin (MSGJ · talk) 09:46, 20 April 2023 (UTC)Reply

Plurals edit

Following a request at Wikipedia talk:Short description #Category fix needed, which complained that the {{Short description}} naively pluralises 'category' as 'categoriescategorys', I looked for a fix. As the template calls Template:Pagetype in three places, it seemed hugely inefficient to use logic to test for irregular plurals at each call, so I've implemented a boolean |plural= parameter in Module:Pagetype/sandbox. That makes use of a couple of extra variables that I've added to Module:Pagetype/config/sandbox (to allow localisation for other Wikis). I've set each respective sandbox to call the relevant sandbox. So:

  • {{pagetype/sandbox}} → template
  • {{pagetype/sandbox |plural=y}} → templates
  • {{pagetype/sandbox |plural=n |page=Category:CS1 maint: archived copy as title}} → category
  • {{pagetype/sandbox |plural=y |page=Category:CS1 maint: archived copy as title}} → categories

It seems to work without problem on each type of page, including redirects where I've previewed the above code. It fails the same four testcases at Module talk:Pagetype/testcases that were failing before (pages that are now redirects).

As I'm not familiar with the uses of the less common parameters (although there should be no interaction as I've coded the changes at the output of the main function), I'm flagging this up for review and to seek consensus for the changes to be made. --RexxS (talk) 23:16, 24 May 2020 (UTC)Reply

Sorry, I should have pinged Mr. Stradivarius as the author of the module. --RexxS (talk) 23:19, 24 May 2020 (UTC)Reply

I support this change, with a minor note that for posterity, I think your original description of the error should read naively pluralises 'category' as 'categorys' (note the misspelled last word). I was going to strike it out for you, but I might be misunderstanding the situation entirely. – Jonesey95 (talk) 23:40, 24 May 2020 (UTC)Reply
Thanks for spotting that, Jonesey95 – my internal spell-checker clearly took over (either that or my senility is progressing faster than I thought). Cheers --RexxS (talk) 23:50, 24 May 2020 (UTC)Reply
@RexxS: thanks for coding this, and please do implement — Martin (MSGJ · talk) 15:25, 9 June 2020 (UTC)Reply
Apologies, I did that last week, but forgot to update this thread. This template now accepts the |plural= parameter:
  • {{pagetype}} → template
  • {{pagetype |plural=y}} → templates
  • {{pagetype |plural=n |page=Category:CS1 maint: archived copy as title}} → category
  • {{pagetype |plural=y |page=Category:CS1 maint: archived copy as title}} → categories
I've updated the documentation at Template:Pagetype/doc #Plurals. --RexxS (talk) 16:07, 9 June 2020 (UTC)Reply

Protected edit request on 18 June 2020 edit

Implement the change I've made at Module:Pagetype/sandbox; specifically, the addition of a |caps= parameter, that capitalises the first letter of the output. The change is very simple; below line 209, insert the following:

if yesno(args.caps, false) then
	pagetype = mw.ustring.upper(mw.ustring.sub(pagetype, 1, 1)) ..
		   mw.ustring.sub(pagetype, 2)
end

The indentation on the output above is... interesting... but the correct indentation is used in the wikitext.

You can see this working in the test cases, where I've written specific tests for it; it plays nicely with the |plural= parameter, as you'd expect. It is worthy of note that I've had to separately fix some of the other testcases, as the pages that they depended on have changed since the last time the testcases were used.

Please let me know once this is sorted so I can update the documentation for the new parameter.

Thanks! Naypta ☺ | ✉ talk page | 18:40, 18 June 2020 (UTC) Naypta ☺ | ✉ talk page | 18:40, 18 June 2020 (UTC)Reply

The code works fine, but is there a use case for it? As an aside, :gsub("^(%l)", string.upper) is a compact way of doing ucfirst (that's %'lower-case-L' in the pattern). --RexxS (talk) 20:27, 18 June 2020 (UTC)Reply
@RexxS: The intended use case would be to have templates that either categorise pages, or link to categories of pages, shown correctly with the capitalisation of the first letter of the category. In the first case, which was actually what prompted me to propose this change, there's not much practical difference, because MediaWiki doesn't care about first letter capitalisation, and categories are processed through it. In the second, however, there's a visible difference for people looking at the link. It's no big deal, but it's a nice thing to have, and for the few lines of code it takes to support it, I figured why not  
Thanks for the tip about ucfirst - I'd not thought of just using a gsub, good shout! Naypta ☺ | ✉ talk page | 21:06, 18 June 2020 (UTC)Reply
@Naypta: I've implemented your change and tidied the odd indent. Please check it over and update the documentation when you get a chance. Cheers. --RexxS (talk) 21:28, 18 June 2020 (UTC)Reply
@RexxS: Done and dusted - cheers! I've also added TemplateData for |plural=, and tidied up the documentation on the template to use examples of template code rather than of module code.   Naypta ☺ | ✉ talk page | 21:37, 18 June 2020 (UTC)Reply

Question regarding the use of the dab parameter edit

I'm not sure I understand how the |dab= parameter works. I have a usecase that I want to check if a page is an actual article or a dab or redirect. If I understand correctly from the docs I should do:

  • {{Pagetype|page=AC|dab}}, which produces: page
  • {{Pagetype|page=Air conditioning|dab}}, which produces: article

The first is a dab while the second is an article. What am I doing wrong? --Gonnym (talk) 10:42, 2 July 2020 (UTC)Reply

I don't think there is any way to check if a page is a disambig automatically, so what you are doing above is passing in the class value and because the class value you've passed is "dab", it outputs "page". If you have passed "start" for example then it would have output "article".
  • {{Pagetype|page=AC|start}}, which produces: page
You can see what's possible against the Title object in the LUA reference manual and you'll see that there are items to check for redirects but nothing for disambig. Also see phabricator T71441.-- WOSlinker (talk) 13:42, 2 July 2020 (UTC)Reply
Yeah I know there is no direct access, but I thought there was some backend manipulation the page content. So I'm not sure what the point is of the dab class. If I already know what the page type is, why would I send the page type, or even use this template in the first place? I feel like I'm missing something here. --Gonnym (talk) 13:51, 2 July 2020 (UTC)Reply
A couple of hacks come to mind that could determine whether a page is a dab page:
  • Using a call to a Scribunto module that fetches the content of the page, titleobject.getcontent(), and then looks for the {{disambiguation}} template in it. Heavy and expensive.
  • If you're checking from Wikidata from an entity, use the fact that titleobject.redirectTarget returns false if the page is not a redirect; and mw.wikibase.getSitelink(qid) returns nil if the page has no Wikidata sitelink. If an article page has no Wikidata sitelink and is not a redirect, it is almost certainly a dab.
There are possibly others, but I'm not aware of any 100% guaranteed way that doesn't depend on some assumptions. --RexxS (talk) 15:49, 2 July 2020 (UTC)Reply
@RexxS:, thanks. I've been looking into the page:content() before I came here. Can you explain to me what's the purpose of the dab parameter? --Gonnym (talk) 16:04, 2 July 2020 (UTC)Reply
There's more than just the disambiguation template to look for, there's some of the following templates that are also used for that purpose as well. -- WOSlinker (talk) 16:40, 2 July 2020 (UTC)Reply
The main purpose of the Pagetype template is to be used on the project banners to show either "article" or "page" in the banner text. -- WOSlinker (talk) 16:33, 2 July 2020 (UTC)Reply
@Gonnym: As an example, if this template is used inside a WikiProject template, it can read the |class= parameter (passed into the WikiProject template) like this: {{pagetype|{{{class|}}} }} and then might be used to create a category name that the article should belong to, given that if the class is given as dab or n/a, the template will then return "page" instead of "article". There is the ability to specify custom text for either dab or n/a, depending on the naming convention required for the category name. Does that make sense? --RexxS (talk) 20:42, 2 July 2020 (UTC)Reply
Yes, thanks! --Gonnym (talk) 22:25, 2 July 2020 (UTC)Reply

Erroneous entries in WhatLinksHere edit

Using this template on a file talk page causes Special:WhatLinksHere for the file page to report the talk page linking to the file page. If this is fixable, please do. See also Template talk:WPBannerMeta#Protected edit request on 29 July 2021. — Alexis Jazz (talk or ping me) 11:36, 29 July 2021 (UTC)Reply

Protected edit request on 2 May 2022 edit

Change page's main title Sterling Entertainment Group to United American Video and lock the page from further editing. The information on this page is wildly inaccurate and most of it has now been edited for accuracy except for the main title.

United American Video was never Sterling Entertainment Group. I should know I was a founder from 1984 to 2005. Jpettus1 (talk) 16:29, 2 May 2022 (UTC)Reply

  Not done this has nothing to do with editing Template:Pagetype; try the talk page attached to whichever article you want to change. — xaosflux Talk 18:31, 2 May 2022 (UTC)Reply

Use Module:Disambiguation edit

I propose using Module:Disambiguation to automatically detect disambiguation pages, as currently used on Module:Class mask — Martin (MSGJ · talk) 09:50, 20 April 2023 (UTC)Reply

@Mr. Stradivarius: any chance you could look at this, because I think you wrote this module initialy? — Martin (MSGJ · talk) 10:21, 10 May 2023 (UTC)Reply
@Mr. Stradivarius: if you do have time to look at this module, it would be appreciated. It does have a significant effect because importance is not being correctly autoclassified as NA on disambiguation talk pages. Thanks — Martin (MSGJ · talk) 09:47, 18 May 2023 (UTC)Reply
Time is one thing I don't have the luxury of right now... but perhaps I can take a look at some point in the next few weeks. — Mr. Stradivarius ♪ talk ♪ 00:25, 19 May 2023 (UTC)Reply
@Mr. Stradivarius just a little reminder if you have time to look at this :) Would it also be possible for |defaultns=extended to produce "disambiguation page" in this case? Thank you. — Martin (MSGJ · talk) 05:10, 19 August 2023 (UTC)Reply
@MSGJ: I have implemented disambiguation page detection at Module:Pagetype/sandbox. At the moment, this still outputs the default "page" for disambiguation pages. Disambiguation detection works like redirect detection - it is on by default, and is checked before looking at |defaultns= or explicit namespace arguments. This means that if we are going to change the module to produce "disambiguation page" for disambiguation pages, with the current implementation this would be independent of the value of |defaultns=. (It can be done by editing the cfg.dabDefault value in Module:Pagetype/config/sandbox.)

Using "disambiguation page" could be a breaking change for some users, as previously disambiguation pages specified by the first positional parameter have been output as "page". Before changing it, we should probably check to see whether anything is likely to break, and have a wider discussion. In the meantime, you can always change it on a per-template basis by using |dab=disambiguation page.

My edits to the sandbox have also removed the dependency on Module:Namespace detect, and I also changed Module:Pagetype/testcases to use Module:Mock title so that the test cases won't break if anyone edits any pages mentioned in them. Let me know if you spot any issues with any of this, and if not I'll go ahead and deploy the sandbox version to the main module. Best — Mr. Stradivarius ♪ talk ♪ 07:34, 27 August 2023 (UTC)Reply

I have gone ahead and deployed the changes to the main module. Please let me know if you spot any issues. Best — Mr. Stradivarius ♪ talk ♪ 13:39, 28 August 2023 (UTC)Reply
Thanks very much. I'll test it very soon when I get some time. I can use |dab=disambguation for now but it would be great if defaultns could be used later, if that is possible — Martin (MSGJ · talk) 20:56, 28 August 2023 (UTC)Reply
@MSGJ: I think changing the default would break too many things. Changing to automatic disambiguation page detection has already broken the categories used by Template:Short description, and it is difficult to tell what else might break by changing the default wording from "page" to "disambiguation page". — Mr. Stradivarius ♪ talk ♪ 13:19, 29 August 2023 (UTC)Reply
@Mr. Stradivarius and MSGJ: The WikiProject classification for some disambiguation pages such as Dragon Quest Heroes moved from being "NA-importance" by default to "Unknown-importance" as of today; since no change was made to Wikiproject banner shell, I think that this change may have affected that template/module. In looking at what moved and what didn't, it appears that "set index articles" are now no longer "NA" by default, while "normal" disambiguation articles are still handled correctly. I'm presuming that the fix needs to be applied to Wikiproject banner shell, not here, but replying here since there was an active discussion. --PresN 02:21, 30 August 2023 (UTC)Reply
@PresN: I tracked the problem down to Module:WikiProject banner. It uses Module:Pagetype here, and then compares the result to the string "article" here. This should probably be changed to a namespace check. — Mr. Stradivarius ♪ talk ♪ 02:55, 30 August 2023 (UTC)Reply
@Mr. Stradivarius: I think it's actually that Module:Disambiguation only looks for disambiguation templates, but set index pages have set index templates, so they don't get counted by the module as a disambiguation page, so Module:Pagetype is saying they're "article". Either Module:Disambiguation should treat those like disambig pages, or else Module:Pagetype should call a Module:Set index with its own regex patterns to handle set index pages. --PresN 11:48, 30 August 2023 (UTC)Reply
@PresN: Hm, you are right: {{pagetype|page=Dragon Quest Heroes}} produces "article". This means that the recent change to Module:Pagetype won't have affected it (unless it was passing "dab" as the first positional parameter, which not many pages do). So there must be another reason for the change from "NA-importance" to "Unknown-importance". By the way, I don't think that set index articles not being detected as disambiguation pages by Module:Disambiguation is an error. From WP:SETINDEX: A set index article (SIA) is a list article about a set of items of a specific type that also share the same (or similar) name (italics mine). Also, there's an entire section WP:SETNOTDAB explaining that set index articles are not disambiguation pages. — Mr. Stradivarius ♪ talk ♪ 13:26, 30 August 2023 (UTC)Reply
@Mr. Stradivarius: Hmm. Given the definition and examples at that page (e.g. List of peaks named Signal), I see the argument for pagetype treating them as "article" rather than "disambiguation". I also don't think the pages I was looking at are really SIAs by that definition, but should be disambiguation pages. I'll adjust in that direction, and we can leave pagetype as it is. Still not sure what caused banner shell to stop treating them as disambiguation (I don't see anything in the code change that would cause it), but if its more correct this way then that's fine. --PresN 13:52, 30 August 2023 (UTC)Reply
I must admit that the definition of set index articles confuses me, but the "article" in its name makes it clear that they are articles so I don't there is an error here. I also don't see how the recent change could have affected this — Martin (MSGJ · talk) 20:30, 30 August 2023 (UTC)Reply
I'm still confused how it did, but there were some SIAs where the talk page template said "|class=Disambiguation" with no importance listed, and yesterday they moved from defaulting as NA-importance to being Unknown-importance. It was consistent on the 1.0 Bot assessment logs. It appears that the current state of things is the correct and intended way, and whatever was treating SIAs as disambiguation pages instead of lists was wrong, so nothing further to do here. --PresN 21:41, 30 August 2023 (UTC)Reply
Lots of WP:Set index articles are marked as disambiguation at WikiData... (maybe this isn't about WikiData, but I think I saw another post about it) Christian75 (talk) 10:39, 18 May 2023 (UTC)Reply
No, we are not currently using wikidata. That was an option explored at Module:Disambiguation but it seems not worthwhile. — Martin (MSGJ · talk) 10:42, 18 May 2023 (UTC)Reply

Detecting pages with Template:Wiktionary redirect and other soft redirects edit

@PARAKANYAA suggested at Wikipedia talk:Content assessment that we should automatically detect pages using Template:Wiktionary redirect and its redirects, and automatically classify them as redirects. It seems we could the same with Template:Soft redirect and its redirects. Are there any other relevant templates? — Martin (MSGJ · talk) 22:16, 9 January 2024 (UTC)Reply

@MSGJ I think all the templates are listed at Wikipedia:Wikimedia sister projects#Specialized soft redirect templates. PARAKANYAA (talk) 22:22, 9 January 2024 (UTC)Reply
Wow okay, and you can bet that each template has about 10 redirects, so that's quite a lot of searching in the page text — Martin (MSGJ · talk) 22:23, 9 January 2024 (UTC)Reply
Sorry D: PARAKANYAA (talk) 22:37, 9 January 2024 (UTC)Reply
I have created Module:Pagetype/setindex and Module:Pagetype/softredirect in preparation. Are there any other types that we could auto-classify? — Martin (MSGJ · talk) 21:07, 17 January 2024 (UTC)Reply

Code now ready for testing in Module:Pagetype/sandbox. Some tests can be seen at the bottom of Template:Pagetype/testcases. If Mr. Stradivarius was more active, I might ask him to check my code. My intention is to remove the call to Module:Disambiguation altogether as the code is mostly duplicated — Martin (MSGJ · talk) 22:34, 19 January 2024 (UTC)Reply

@MSGJ: Could you also add test cases to Module:Pagetype/testcases? There should be test cases there as well so that future updates to the code don't break the functionality you are adding. I designed the test cases so that you can specify an arbitrary "group name" (just a short description of the general kind of thing the test is testing), the arguments to the template, and the expected result. If you add more tests like that to the tests table they should just work. Also, please add any titles you use in the tests to the mMockTitle.registerMockTitles call at the top of the test cases and mock any fields that you will use. This ensures that the tests won't break if someone edits the actual wiki page in the future. You can see Module:Mock title for the different options you can use, but probably I guess you just need to copy the entry for "Alien" (a disambiguation page) and change the content. — Mr. Stradivarius ♪ talk ♪ 00:26, 20 January 2024 (UTC)Reply
Sure, will look at that. Can I ask a question? I assume that lines 25-27 of Module:Disambiguation are not needed here because we are already checking for redirects in line 210. Also, why are you using mRedirect.getTargetFromText(content) ~= nil rather than just luaIsRedirect in there?
And if this works out well, can we get your bot to update these lists like it currently does for the dab pages? — Martin (MSGJ · talk) 12:30, 20 January 2024 (UTC)Reply
I assume that lines 25-27 of Module:Disambiguation are not needed here because we are already checking for redirects in line 210. Yes, that looks right to me. We shouldn't need a duplicate check. Also, why are you using mRedirect.getTargetFromText(content) ~= nil rather than just luaIsRedirect in there? I don't remember the reason I wrote it that way. Maybe something to do with double redirects? There was definitely something that you had to parse the content for, rather than just checking the title object, but I don't remember the details, and I'm not sure if it still applies today. And if this works out well, can we get your bot to update these lists like it currently does for the dab pages? Yes, it should be fairly easy to adapt (especially if we use the same format for all the data pages), and I would be willing to run it on the additional pages. Best — Mr. Stradivarius ♪ talk ♪ 16:24, 20 January 2024 (UTC)Reply
Also, one thing I noticed about the code - you can add a break statement after line 142, which will stop the algorithm checking all of the templates on a page if it finds a match. — Mr. Stradivarius ♪ talk ♪ 16:28, 20 January 2024 (UTC)Reply
@Mr. Stradivarius for some reason when I added Module:Pagetype/testcases#L-44 as a mock title, suddenly 7 unrelated tests failed. They seem to be all the tests which do not specify the page name. All my new tests are working correctly. — Martin (MSGJ · talk) 21:47, 21 January 2024 (UTC)Reply
@MSGJ: This indicates a bug somewhere, but I don't have time right now to look through the code to find out where it is. I might have another look tomorrow. — Mr. Stradivarius ♪ talk ♪ 16:15, 22 January 2024 (UTC)Reply
Okay thanks. I suspect a bug in Module:Mock title rather than this module — Martin (MSGJ · talk) 16:38, 22 January 2024 (UTC)Reply
@MSGJ: I found the issue. You added the string {{Soft redirect|meta:Wikipedia usage statistics}} to Module:Pagetype/testcases, and as the module treats Module talk:Pagetype/testcases as the current page, it looks through the content of Module:Pagetype/testcases, finds that string, and assumes that the module must be a soft redirect. This wasn't a problem with disambiguation templates as the check for those was limited to the main namespace, but soft redirect detection is done in every namespace.

I'm in two minds as to how to fix this. The obvious way would be to also check the page's content model before doing the template check, but checking the content model increments the expensive function count for pages other than the current page, which might cause problems in templates that depend on this module. The alternative is to exclude namespaces that typically have different content models, like module space, and userspace JS/CSS pages. This will be more of a pain to code and will be wrong for pages that have their content model changed manually, but it will avoid breaking dependent templates. I think the latter solution will be better, as I think there is a high probability of pages being broken by the increase in expensive function count if we choose the former. (This is just an assumption, however; I haven't checked in detail.)

While I am thinking about it, there is also a similar problem with <nowiki>...</nowiki> tags; it is possible to write <nowiki>{{soft redirect}}</nowiki> on a wiki page, and this will not be parsed as a soft redirect, but this module will treat it as one. To avoid false positives in discussions etc. where people are talking about soft redirects, we should also detect whether template invocations are contained in <nowiki>...</nowiki> blocks or not. — Mr. Stradivarius ♪ talk ♪ 07:15, 23 January 2024 (UTC)Reply

Actually, userspace CSS/JS pages should not be excluded, as they are actually categorised if you add a comment like /* {{soft redirect}} */ to them. If I remember correctly, this is behaviour from before content models were added to MediaWiki; the ability to categorise JS/CSS pages was briefly removed, but enabled again after users complained. — Mr. Stradivarius ♪ talk ♪ 07:29, 23 January 2024 (UTC)Reply
I added two new test cases and updated the rest of the tests to make it more obvious what is causing the test failures. — Mr. Stradivarius ♪ talk ♪ 08:14, 23 January 2024 (UTC)Reply
Thanks for looking into this. Alternatively we could just restrict the soft redirect detection to mainspace. I think we may be opening a can of worms by trying to ignore code like nowiki which deactivates the template. There are numerous other ways it can be done, e.g. with pre tags or HTML comments. Sounds like a coder's nightmare! — Martin (MSGJ · talk) 09:04, 23 January 2024 (UTC)Reply
I have another suggestion. We can use the size of the page to determine whether it is likely to be soft redirect. I would suspect anything greater than 1000 bytes is extremely unlikely to be a soft redirect. — Martin (MSGJ · talk) 21:51, 24 January 2024 (UTC)Reply
@MSGJ: I had a go at stripping out nowiki, pre, syntaxhighlight and source tags, as well as HTML comments. The code is in the sandbox, and the tests are all passing now. The parsing isn't perfect, but it should work for 99% of cases. Are there any other tags or markup that we should filter out? — Mr. Stradivarius ♪ talk ♪ 09:14, 25 January 2024 (UTC)Reply
Wow, okay. No I can't think of any others. Can I just check if <!--xxx-->{{soft redirect}}<!--xxx--> will be detected or will it be greedy and ignore everything between the first open and last close? — Martin (MSGJ · talk) 09:20, 25 January 2024 (UTC)Reply
To avoid reinventing the wheel, you might look at Module:Wikitext Parsing#PrepareText — Martin (MSGJ · talk) 09:31, 25 January 2024 (UTC)Reply
I've added this to the sandbox and the testcases seem to be working okay — Martin (MSGJ · talk) 15:17, 31 January 2024 (UTC)Reply
  Done — Martin (MSGJ · talk) 20:26, 31 January 2024 (UTC)Reply
@MSGJ On the initial example I used, 'Murica, it seems to have had a... strange result. The shell now says redirect, but still classifies as unassessed and the shell doesn't show the redirect icon. If I'm missing something, sorry. PARAKANYAA (talk) 22:22, 31 January 2024 (UTC)Reply
Yes I think I might need to update Module:Class mask and/or Module:Banner shell as well — Martin (MSGJ · talk) 22:27, 31 January 2024 (UTC)Reply
Working now I think @PARAKANYAA — Martin (MSGJ · talk) 12:48, 1 March 2024 (UTC)Reply
@MSGJ Thank you very much :) PARAKANYAA (talk) 21:16, 1 March 2024 (UTC)Reply

Mr. Stradivarius when you have a chance, can you get your bot working on Module:Pagetype/setindex, Module:Pagetype/softredirect and Module:Pagetype/disambiguation. Maybe look at moving Module:Disambiguation/templates over? Thanks — Martin (MSGJ · talk) 20:28, 31 January 2024 (UTC)Reply

Filed a BRFA here. — Mr. Stradivarius ♪ talk ♪ 03:24, 17 February 2024 (UTC)Reply
Also, I don't think moving Module:Disambiguation/templates is necessary, as it is also being used in Module:Disambiguation. The situation now seems fine to me. — Mr. Stradivarius ♪ talk ♪ 03:27, 17 February 2024 (UTC)Reply
I guess I was wondering if Module:Disambiguation was still needed, given how we have moved most of its functionality here? It might make sense to move the isDisambiguationPage function to Module:Pagetype to avoid duplication of code. — Martin (MSGJ · talk) 12:48, 1 March 2024 (UTC)Reply

Recent change causing some problems with reports and bot actions edit

I am unable to find the discussion that led to this change, but it may be causing problems with reports and bot actions. Plastikspork, do you have a link to the discussion? – Jonesey95 (talk) 04:07, 16 February 2024 (UTC)Reply

It's at User talk:MSGJ#Module:Pagetype — Martin (MSGJ · talk) 09:18, 16 February 2024 (UTC)Reply
Jonesey95, that change should have reduced transclusions, by eliminating some transclusions of non-existing pages. But, the change right before it may have increased transclusions. Thanks! Plastikspork ―Œ(talk) 15:04, 16 February 2024 (UTC)Reply
All I know is that the database report changed on the day after the second edit to this module. I know there are sometimes delays, but usually the simple explanation is the one to look at. – Jonesey95 (talk) 16:31, 16 February 2024 (UTC)Reply

Request update of Module:Pagetype/setindex (18 February 2024) edit

Bot comment: StradBot has detected that Module:Pagetype/setindex needs to be updated. This is due to a template being added or removed from Category:Set index article templates, or to a redirect to one of those templates being added or removed. The bot has saved the new page content in Module:Pagetype/setindex/sandbox (diff). Please review this and update the module if necessary. StradBot (talk) 16:07, 18 February 2024 (UTC)Reply

Note: the last sandbox edit should be easier to read than the diff between the sandbox and the main module. — Mr. Stradivarius ♪ talk ♪ 16:14, 18 February 2024 (UTC)Reply
@Mr. Stradivarius: This added Template:Infobox family name/doc to the list of templates, which is clearly wrong. It was previously a redirect with content, which may have caused confusion, and I've now replaced it with a bare redirect. * Pppery * it has begun... 16:58, 18 February 2024 (UTC)Reply
It also added Template:family name, a redirect to Template:infobox name, which is used on pages like Smith (surname) that are clearly not set indices. Those seem to be the only two additions, neither of which is useful IMO, so   Not done * Pppery * it has begun... 17:02, 18 February 2024 (UTC)Reply
@Pppery: Thanks for looking into this. I'll think of the best way to address this tomorrow. Could you also check if Module:Pagetype/softredirect/sandbox (diff) looks OK? There was a Pywikibot issue preventing me from saving the edit request for that page, but the module sandbox itself was saved successfully. — Mr. Stradivarius ♪ talk ♪ 17:11, 18 February 2024 (UTC)Reply
Sorry, no. I see nonsense like Template:Barcelona Metro line 10 and Template:Taxonomy/Olindiasidae. I would also weakly prefer to exclude templates like Template:Soft redirect with Wikidata item from the list, since they indicate the page is already a soft redirect because of another template rather than itself making the page a soft redirect, but if that's not possible to code up I would be fine with adding them. * Pppery * it has begun... 17:17, 18 February 2024 (UTC)Reply
I fixed the bot - the issue was that I was using Pywikibot's BasePage.backlinks method instead of the BasePage.redirects method. There are more details on GitHub. Module:Pagetype/softredirect/sandbox should also be improved, but the Pywikibot issue that prevented me from saving the second edit request is still occurring, so the bot failed to leave an edit request for it; I will also need to get that fixed before finishing the trial. — Mr. Stradivarius ♪ talk ♪ 16:04, 20 February 2024 (UTC)Reply

Request update of Module:Pagetype/setindex (20 February 2024) edit

Bot comment: StradBot has detected that Module:Pagetype/setindex needs to be updated. This is due to a template being added or removed from Category:Set index article templates, or to a redirect to one of those templates being added or removed. The bot has saved the new page content in Module:Pagetype/setindex/sandbox (diff). Please review this and update the module if necessary. StradBot (talk) 15:38, 20 February 2024 (UTC)Reply

This edit wouldn't change the content of the setindex module, only the order and the formatting. As it would only be a cosmetic edit, I am deactivating this edit request. Future bot runs will only leave an edit request if the sandbox version changes, so no other action is necessary. The bot will leave its next edit request when the sandbox needs updating (i.e. when any of the templates in Category:Set index article templates or their redirects change). — Mr. Stradivarius ♪ talk ♪ 15:57, 20 February 2024 (UTC)Reply

Protected edit request on 21 March 2024 - Improve execution time edit

Improves the execution time of this module by about 2 to 3 times by merging repeat calls to some intensive functions and calculating all templates once to avoid excessive calls to gmatch/ustring. Quite important for Module:WikiProject banner, which has started to rarely hit the lua timeout error from time to time on large pages like Talk:List of common misconceptions, with a significant amount of the execution time being this module. No change to any output or functionality (passes all testcases). Aidan9382 (talk) 21:58, 21 March 2024 (UTC)Reply

Temporarily disabled since I intend to make further changes. Aidan9382 (talk) 12:27, 22 March 2024 (UTC)Reply
Re-activated the edit request. Now has better performance in extremely specific circumstances and also fixes a bug in parseContent where explicitly not allowing soft redirect/sia/dab would not work and would revert to giving the default (this bug existed before my changes, there was just no testcase for that specific case). Aidan9382 (talk) 17:30, 22 March 2024 (UTC)Reply
  Done — Martin (MSGJ · talk) 19:28, 22 March 2024 (UTC)Reply