--[[ -- This module produces a "redirect" hatnote. It looks like this: -- '"X" redirects here. For other uses, see Y.' -- It implements the Error: missing redirect parameter (help). template. --]]

local mHatnote = require('Module:Hatnote') local mHatList = require('Module:Hatnote list') local mArguments --lazily initialize local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti

local p = {}


-- Helper functions


local function getTitle(...) --Calls mw.title.new and returns either a title object, or nil on error local success, titleObj = pcall(mw.title.new, ...) return success and titleObj or nil end


-- Main functions


function p.redirect(frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {parentOnly=true}) --Get number of redirects local numRedirects = tonumber(frame.args[1]) or 1 -- Create the options table. local options = {} options.selfref = args.selfref return p._redirect(args, numRedirects, options) end

function p._redirect(args, numRedirects, options, currentTitle, redirectTitle, targetTitle) -- Validate the input. Don't bother checking currentTitle, redirectTitle or -- targetTitle, as they are only used in testing. checkType('_redirect', 1, args, 'table') checkType('_redirect', 2, numRedirects, 'number', true) numRedirects = numRedirects or 1 checkType('_redirect', 3, options, 'table', true) options = options or {} currentTitle = currentTitle or mw.title.getCurrentTitle() -- Get the table of redirects local redirect = {} for i = 1, numRedirects do -- Return an error if a redirect parameter is missing. if not args[i] then return mHatnote.makeWikitextError( 'missing redirect parameter', 'Template:Redirect#Errors', args.category ) end redirect[i] = args[i] end -- Generate the text. local formattedRedirect = {} for k,v in pairs(redirect) do formattedRedirect[k] = mHatnote.quote(v) end local text = { mHatList.andList(formattedRedirect) .. ' ' .. (#redirect == 1 and 'redirects' or 'redirect') .. ' here.', mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text}) } text = table.concat(text, ' ') -- Functionality for adding categories local categoryTable = {} local function addCategory(cat) if cat and cat ~= then -- Add by index to avoid duplicates categoryTable[string.format(, cat)] = true end end --Generate tracking categories local mhOptions = {} local redirTitle for k,v in pairs(redirect) do -- We don't need a tracking category if the template invocation has been -- copied directly from the docs, or if we aren't in main- or category-space. if not v:find('^REDIRECT%d*$') and v ~= 'TERM' -- and currentTitle.namespace == 0 or currentTitle.namespace == 14 then redirTitle = redirectTitle or getTitle(v) if not redirTitle or not redirTitle.exists then addCategory('Missing redirects') elseif not redirTitle.isRedirect then if string.find(redirTitle:getContent(), '#invoke:RfD') then addCategory('Articles with redirect hatnotes impacted by RfD') else addCategory('Articles with redirect hatnotes needing review') end else local target = targetTitle or redirTitle.redirectTarget if target and target ~= currentTitle then addCategory('Articles with redirect hatnotes needing review') end end end

-- Generate the options to pass to Module:Hatnote. if currentTitle.namespace == 0 and not mhOptions.selfref and redirTitle and redirTitle.namespace ~= 0 then -- We are on a mainspace page, and the hatnote starts with something -- like "Wikipedia:Foo redirects here", so automatically label it as -- a self-reference. mhOptions.selfref = true else mhOptions.selfref = options.selfref end end --concatenate all the categories local category = for k,v in pairs(categoryTable) do category = category .. k end

return mHatnote._hatnote(text, mhOptions) .. category end

return p

This template is a wrapper that prompts {{Template shortcut}} to refer to "redirect/s" rather than "shortcut/s".

TemplateData

jhyuk
Template used to link to pages containing further information on a topic. Produces the output "Further information: page 1, page 2 and page 3".
Page 11
The name of the first page that you want to link to.
Page 22
The name of the second page that you want to link to.
Page 33
The name of the third page that you want to link to. More pages can be added using the parameters "4", "5", "6", etc.
Self referenceselfref
Set to "yes" if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site.
Categorycategory
Set to "no", "n", "false", or "0" to suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if no page names are specified.
Label 1label1
label 1
l1
The displayed label of the first page link
Label 2label2
label 2
l2
The displayed label of the second page link
Label 3label3
label 3
l3
The displayed label for the third page link. Labels for further pages can be added using the parameters "label4", "label5", "label6", etc.


This template is used to link to articles containing further information on a topic. It looks like this:

It is typically used at the top of a section, when the topic of that section is covered in more detail by another page. It is useful for implementing summary style. The corresponding template for use on category pages is {{Cat more}}

Usage

jhyuk
One article
{{further|PAGE1}}
More than one article
{{further|PAGE1|PAGE2|PAGE3}}
With a topic
{{further|topic=TOPIC|PAGE1|PAGE2}}
All parameters
{{further|topic=TOPIC|PAGE1|PAGE2#SECTION|selfref=yes|category=no|label1=LABEL1}}

Parameters

jhyuk

This template accepts the following parameters:

  • 1, 2, 3, ... - the pages to link to. At least one page name is required. Categories and files are automatically escaped with the colon trick, and links to sections are automatically formatted as page § section, rather than the MediaWiki default of page#section.
  • label1, label2, label3 ... alternative output labels for the corresponding linked pages. Aliases "label N" (with a space) and "lN" (short) are also available.
  • topic - the name of the topic
  • selfref - if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references to Wikipedia. See Template:Selfref for more information.
  • category - if set to "no", "n", "false", or "0", suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if the first positional parameter (the page to link to) is omitted.
jhyuk

To link to articles on foreign language Wikipedias, use interwiki links, prefixing the page name in the foreign Wikipedia with the required interwiki language code:

Basic interwiki links to articles in Spanish and German
{{further|es:PÁGINA1|de:SEITE2}}
Multiple interwiki links with language names

Note that you can use the TOPIC and LABEL parameters in combination to produce this effect:

{{Further|topic=Eero Heinonen, in|de:Eero Heinonen|es:Eero Heinonen|fi:Eero Heinonen|l1=German|l2=Spanish|l3=Finnish}}

Template {{Further ill}} can produce similar links, but in a format more like that of {{interlanguage link}}.

Errors

jhyuk

If no page names are supplied, the template will output the following message:

  • Error: no page names specified (help).

If you see this error message, it is for one of four reasons:

  1. No parameters were specified (the template code was {{further}}). Please use {{further|page}} instead.
  2. Some parameters were specified, but no page names were included. For example, the template text {{further|selfref=yes}} will produce this error. Please use (for example) {{further|page|selfref=yes}} instead.
  3. A page name was specified, but it contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code {{further|1+1=2|2+2=4}} will produce this error. To work around this, you can specify the parameter name explicitly by using 1=, 2, etc., before the page name, like this: {{further|1=1+1=2|2=2+2=4}}.
  4. You tried to access the module directly by using {{#invoke:(module name)|further|text}}. Use of #invoke in this way has been disabled for performance reasons. Please use {{(module name)|text}} instead.

If you see this error message and are unsure of what to do, please post a message on the help desk, and someone should be able to help you.

Pages that contain this error message are tracked in Category:Hatnote templates with errors.

See also

jhyuk
TemplateData documentation used by VisualEditor and other tools
Click here to see a monthly parameter usage report for this template based on this TemplateData.

TemplateData for Further

Template used to link to pages containing further information on a topic. Produces the output "Further information: page 1, page 2 and page 3".

Template parameters

ParameterDescriptionTypeStatus
Page 11

The name of the first page that you want to link to.

Page namerequired
Page 22

The name of the second page that you want to link to.

Page nameoptional
Page 33

The name of the third page that you want to link to. More pages can be added using the parameters "4", "5", "6", etc.

Page nameoptional
Self referenceselfref

Set to "yes" if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site.

Lineoptional
Categorycategory

Set to "no", "n", "false", or "0" to suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if no page names are specified.

Unknownoptional
Label 1label1 label 1 l1

The displayed label of the first page link

Stringoptional
Label 2label2 label 2 l2

The displayed label of the second page link

Stringoptional
Label 3label3 label 3 l3

The displayed label for the third page link. Labels for further pages can be added using the parameters "label4", "label5", "label6", etc.

Stringoptional


Usage

jhyuk
One article
{{further|PAGE1}}
More than one article
{{further|PAGE1|PAGE2|PAGE3}}
With a topic
{{further|topic=TOPIC|PAGE1|PAGE2}}
All parameters
{{further|topic=TOPIC|PAGE1|PAGE2#SECTION|selfref=yes|category=no|label1=LABEL1}}

Parameters

jhyuk

This template accepts the following parameters:

  • 1, 2, 3, ... - the pages to link to. At least one page name is required. Categories and files are automatically escaped with the colon trick, and links to sections are automatically formatted as page § section, rather than the MediaWiki default of page#section.
  • label1, label2, label3 ... alternative output labels for the corresponding linked pages. Aliases "label N" (with a space) and "lN" (short) are also available.
  • topic - the name of the topic
  • selfref - if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references to Wikipedia. See Template:Selfref for more information.
  • category - if set to "no", "n", "false", or "0", suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if the first positional parameter (the page to link to) is omitted.
jhyuk

To link to articles on foreign language Wikipedias, use interwiki links, prefixing the page name in the foreign Wikipedia with the required interwiki language code:

Basic interwiki links to articles in Spanish and German
{{further|es:PÁGINA1|de:SEITE2}}
Multiple interwiki links with language names

Note that you can use the TOPIC and LABEL parameters in combination to produce this effect:

{{Further|topic=Eero Heinonen, in|de:Eero Heinonen|es:Eero Heinonen|fi:Eero Heinonen|l1=German|l2=Spanish|l3=Finnish}}

Template {{Further ill}} can produce similar links, but in a format more like that of {{interlanguage link}}.

Errors

jhyuk

If no page names are supplied, the template will output the following message:

  • Error: no page names specified (help).

If you see this error message, it is for one of four reasons:

  1. No parameters were specified (the template code was {{further}}). Please use {{further|page}} instead.
  2. Some parameters were specified, but no page names were included. For example, the template text {{further|selfref=yes}} will produce this error. Please use (for example) {{further|page|selfref=yes}} instead.
  3. A page name was specified, but it contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code {{further|1+1=2|2+2=4}} will produce this error. To work around this, you can specify the parameter name explicitly by using 1=, 2, etc., before the page name, like this: {{further|1=1+1=2|2=2+2=4}}.
  4. You tried to access the module directly by using {{#invoke:(module name)|further|text}}. Use of #invoke in this way has been disabled for performance reasons. Please use {{(module name)|text}} instead.

If you see this error message and are unsure of what to do, please post a message on the help desk, and someone should be able to help you.

Pages that contain this error message are tracked in Category:Hatnote templates with errors.

See also

jhyuk
TemplateData documentation used by VisualEditor and other tools
Click here to see a monthly parameter usage report for this template based on this TemplateData.

TemplateData for Further

Template used to link to pages containing further information on a topic. Produces the output "Further information: page 1, page 2 and page 3".

Template parameters

ParameterDescriptionTypeStatus
Page 11

The name of the first page that you want to link to.

Page namerequired
Page 22

The name of the second page that you want to link to.

Page nameoptional
Page 33

The name of the third page that you want to link to. More pages can be added using the parameters "4", "5", "6", etc.

Page nameoptional
Self referenceselfref

Set to "yes" if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site.

Lineoptional
Categorycategory

Set to "no", "n", "false", or "0" to suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if no page names are specified.

Unknownoptional
Label 1label1 label 1 l1

The displayed label of the first page link

Stringoptional
Label 2label2 label 2 l2

The displayed label of the second page link

Stringoptional
Label 3label3 label 3 l3

The displayed label for the third page link. Labels for further pages can be added using the parameters "label4", "label5", "label6", etc.

Stringoptional