Module:Sandbox/Innesw/Infobox Australian place-upgrade
![]() | This module is rated as pre-alpha. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure. |
This module is the existing Infobox Australian place template (as of March 2024) transferred from normal template syntax to a Lua module, and then with a number of changes to its output.
The original transfer from template to module syntax is here. This had only a few very minor changes in behaviour from the original template.
This upgrade version of the module includes more substantive changes to the behaviour of the template, including some additional parameters. It is ready for wider testing, therefore further changes are still possible.
Some of the changes in behaviour actually involve changes to other modules that this one calls:
- Module:Australian_place_map, version called by this module upgrade at Australian place map-upgrade. Details of changes are mentioned below.
- Module:PopulationFromWikidata, version called by this module upgrade at PopulationFromWikidata-upgrade. These changes are mentioned here, but full details appear at that link.
All of the changes detailed here are subject to further discussion. There is a talk page specifically for that purpose. It should not be assumed these changes have to be implemented or rejected as a whole - discussion on any of the individual changes is welcome.
Testing
This module can be tested with a call to the template {{User:Innesw/sandbox/Template:Infobox_Australian_place-upgrade}}, in general with any of the same parameters as the existing template.
There is a testcases page, comparing the output of this module with the existing template.
There is also a draft documentation page with changes reflecting this upgrade.
New values for |type=
The following values for the |type=
parameter are now recognised:
Accepted value | Description | Effects | Background Colour |
---|---|---|---|
settlement
|
A settled place too small to be a town. |
|
|
locality
|
A rural locality, generally equivalent to |type=suburb .
|
|
|
townandlocality
|
Where the article is about a town, and a surrounding locality with the same name. |
|
New Parameters
The following additional parameters are implemented:
Parameter | Available for |type=
|
Description | Notes | Values |
---|---|---|---|---|
native_name_footnotes | all | A reference demonstrating the Indigenous name | Prerequisite parameters:
|
Wikitext (can contain links). Best when used with <ref></ref> tags and a citation template. |
local_map_caption | all | Caption for the local map | Prerequisite parameters:
|
Plain text or wikitext. |
logo_caption | all | Caption for the logo image | Prerequisite parameters:
|
Plain text or wikitext. |
Changes to Wikidata Population
If |pop=
<blank>, the latest population figures available in Wikidata are displayed.
In the released version of the template, this was almost always a single figure, for the single geography associated with the |type=
value.
In this upgrade version:
- populations for a number of ABS geographies may be shown if they are in the wikidata linked to the article. Which values may be shown depends on the
|type=
value. - the citation references for populations in the infobox now integrate with references created by other calls to PopulationFromWikidata
For details of these changes, see PopulationFromWikidata-upgrade
Also:
- a value for
|poprank=
is still shown - a value for
|pop2=
(with|pop2_year=
and|pop2_footnotes=
) is still shown - if
|type=cadastral
or|type=protected
, no population from Wikidata is ever shown - if any population from Wikidata is shown,
|density=
is not shown - because the area the population is for is not in the Wikidata
Other Changes
- if the module is called with no parameters, it returns an empty string
- the parameter
|short description=
is no longer supported - error messages for the non-existence of (or unsupported values for)
|type=
and|state=
appear in the heading of the infobox - removes the difference between
|type=protected
and other types in the call to {{coords}} - fixes the response to 'flag' parameters (local_map, force_national_map, use_lga_map, relief) so 'no' = <blank>, any other value = 'yes' (implemented in Australian place map-upgrade)
- the following values for
|map_type=
now have priority over the deprecated (but still implemented) parameters|force_national_map=
,|use_lga_map=
and|alternative_location_map=
(implemented in Australian place map-upgrade)|map_type=national
or|map_type=australia
- forces the location map to be a map of Australia|map_type=state
- forces the location map to be the state map|map_type=lga
- forces the location map to be the map of the lga (as specified in|lga=
)|map_type=nomap
- suppresses any location map|map_type=(any other value)
- assumes the provided value is the name of a specific map to use as the location map. Multiple map names separated by '#' will show multiple maps, selectable by the user.
- if both
|pop=
and|area=
are supplied and|density=
is not, but either |pop or |area are non-numeric, no density calculation is attempted and a density is not shown. The released version of the template produces an error in these circumstances. - the space between the density and its reference (
|density_footnotes=
) has been removed - the background colour of the headings for the climate and places-near sub-tables is now the same as the infobox header and the labels column
- the colon at the end of the heading for the places-near sub-table has been removed
Changes to Categories
- No categories are now output unless the page that calls the template is in the article namespace
Auto Categories
- fixes the response to
|_noautocat=no
so it means the same as <blank>, any other value = 'yes' - when adding to
Category:Populated places established in <year>
|established=
is now treated the same as|est=
- an article is placed in the category no matter what the
|type=
value (instead of only for|type=lga
)
- if
|type=locality
, the article is added toCategory:Localities in <lga>
(if it exists) - if
|type=townandlocality
, the article is added toCategory:Towns in <state>
, and toCategory:Localities in <lga>
(if it exists)
Tracking Categories
Unknown Parameters
Any use of a parameter unknown to the template will add the page to Category:Pages using infobox Australian place with unknown parameters. This includes the now obsolete parameters short description, alt, alt2, image_alt2, imagesize, image_size, imagesize2, image_size2, logo_alt, logosize and official_site.
Missing Parameters, and Similar Issues
Articles are added to a new category Category:Pages using infobox Australian place with parameter issues, according to the following table:
If this parameter is defined | But this is missing | use sort letter |
---|---|---|
(all) | type | T |
name | state | S |
native_name | native_name_footnotes | N |
pop | pop_year | Y |
pop2 | pop2_year | Y |
pop | pop_footnotes | P |
pop2 | pop2_footnotes | P |
established | established_footnotes | E |
elevation | elevation_footnotes | H |
area | area_footnotes | A |
visitation | visitation_footnotes | V |
maxtemp | maxtemp_footnotes | C |
mintemp | mintemp_footnotes | C |
rainfall | rainfall_footnotes | C |
timezone | utc | Z |
timezone-dst | utc-dst | Z |
_noautocat | (always) | Q |
pop and area exist but one or both are not numbers |
density | D |
args[1] exists, ie: there are missing equals signs or spurious pipes in the infobox call |
(always) | 1 |
- This category would replace the following current categories, which are proposed to be deleted:
Mapping Categories
Articles are added to a new category Category:Pages using infobox Australian place with location map issues, according to the following table (so long as |coordinates=
is defined):
If this circumstance | which means | use sort letter |
---|---|---|
|type=lga and any of|alternative_location_map or |force_national_map= or |use_lga_map are defined,or some value of |map_type= forces a location map
|
location map for LGA forced on
(The default for LGAs is not to have a location map.) |
L |
|type=<not lga> and |map_type=nomap |
location map explicitly suppressed | N |
- This category would replace the existing categories Category:Pages using infobox Australian place with an implicitly suppressed location map, Category:Pages using infobox Australian place with an explicitly suppressed location map and Category:Pages using infobox Australian place with lga type and location map, which are proposed to be deleted.
Issues for further discussion
- does a new parameter
|pop_geog=
needs to be added? It would specify an ABS geography for which a single population is shown (as opposed to the new default of possibly multiple populations, if they are in the Wikidata) - does a new parameter
|indigenouscommunity=
needs to be added? If so, uploading of ILOC populations to Wikidata will be required to make it useful. - what is the proper Wikidata population to show when
|type=region
? It is currently 'LGA', but maybe it should be 'SA3' or 'SA4'. - should showing a value for
|poprank=
be suppressed unless|type=city
?
-- This is Template:Infobox_Australian_place converted to Lua
local p = {}
local lframe
local shortDescription = require('Module:GetShortDescription').main
local plainText = require('Module:Plain text')._main
local infobox = require('Module:Infobox').infobox
local getArgs = require('Module:Arguments').getArgs
local infoboxImage = require('Module:InfoboxImage').InfoboxImage
-- [upgrade] Australian place map is now internal
-- local australianPlaceMap = require('Module:Australian place map').main
local coordinates = require('Module:Coordinates').coordinsert
local populationFromWikidata = require('Module:PopulationFromWikidata').ListForInfobox
local url = require('Module:URL')._url
local check = require('Module:Check for unknown parameters')._check
local lang = mw.language.getContentLanguage()
local function inb(s) -- is not blank
return s and s ~= ''
end
local function isnot_blankorno(s)
if s == 'no' then
return false
else
return inb(s)
end
end
local function backcolour(typ)
local colour
if typ == 'city' then
colour = '#f9f6d2'
elseif typ == 'town' then
colour = '#e9f9d2'
elseif typ == 'suburb' then
colour = '#f9e2d2'
elseif typ == 'lga' then
colour = '#d2d5f9'
elseif typ == 'region' then
colour = '#e6c4fb'
elseif typ == 'cadastral' then
colour = '#ffffe0'
elseif typ == 'protected' then
colour = 'transparent'
elseif typ == 'other' then
colour = 'transparent'
else
colour = '#ccc'
end
return colour
end
local function state_longname(state)
state = string.lower(state)
local longname
if state == 'sa' then
longname = '[[South Australia]]'
elseif state == 'vic' then
longname = '[[Victoria (state)|Victoria]]'
elseif state == 'nsw' then
longname = '[[New South Wales]]'
elseif state == 'qld' then
longname = '[[Queensland]]'
elseif state == 'nt' then
longname = '[[Northern Territory]]'
elseif state == 'wa' then
longname = '[[Western Australia]]'
elseif state == 'tas' then
longname = '[[Tasmania]]'
elseif state == 'act' then
longname = '[[Australian Capital Territory]]'
elseif state == 'jbt' then
longname = '[[Jervis Bay Territory]]'
elseif state == 'ni' then
longname = '[[Norfolk Island]]'
elseif state == 'au' then
longname = 'Australia'
elseif inb(state) then
-- state supplied, but with unrecognised value
-- [upgrade] error message for unrecognised or empty |state now at top of infobox
-- longname = lframe:expandTemplate{title = 'error', args = {'Error: unknown <code>|state=</code> value (=' .. state .. ') ([[Template:Infobox Australian place#state|help]])'} }
longname = 'unk'
else
-- state not supplied
-- [upgrade] error message for unrecognised or empty |state now at top of infobox
-- longname = lframe:expandTemplate{title = 'error', args = {'Error: <code>|state=</code> not defined ([[Template:Infobox Australian place#state|help]])'} }
longname = ''
end
return longname
end
local function coords_region(state)
state = string.lower(state)
local region
if state == 'sa' then
region = 'AU-SA'
elseif state == 'vic' then
region = 'AU-VIC'
elseif state == 'nsw' then
region = 'AU-NSW'
elseif state == 'qld' then
region = 'AU-QLD'
elseif state == 'nt' then
region = 'AU-NT'
elseif state == 'wa' then
region = 'AU-WA'
elseif state == 'tas' then
region = 'AU-TAS'
elseif state == 'act' then
region = 'AU-ACT'
elseif state == 'jbt' then
region = 'AU-JBT'
elseif state == 'ni' then
region = 'NF'
else
region = 'AU'
end
return region
end
local function location(loc, dir, dist, list)
if not (inb(loc) and inb(dist)) then
return ''
end
local sloc = {}
if list then
table.insert(sloc, '<li>')
end
table.insert(sloc, lframe:expandTemplate{title = 'convert', args = {dist, 'km', 'mi', 0, abbr='on'} })
if inb(dir) then
table.insert(sloc, ' ' .. dir .. ' of ')
else
table.insert(sloc, ' from ')
end
if inb(loc) then
table.insert(sloc, lframe:expandTemplate{title = 'auto link', args = {loc} })
end
if list then
table.insert(sloc, '</li>')
end
return table.concat(sloc)
end
local function lgas_article(state)
state = string.lower(state)
local art
if state == 'sa' then
art = '[[Local government areas of South Australia|LGA(s)]]'
elseif state == 'vic' then
art = '[[Local government in Victoria|LGA(s)]]'
elseif state == 'nsw' then
art = '[[Local government areas of New South Wales|LGA(s)]]'
elseif state == 'qld' then
art = '[[Local government areas of Queensland|LGA(s)]]'
elseif state == 'nt' then
art = '[[Local government areas of the Northern Territory|LGA(s)]]'
elseif state == 'wa' then
art = '[[Local government areas of Western Australia|LGA(s)]]'
elseif state == 'tas' then
art = '[[Local government areas of Tasmania|LGA(s)]]'
elseif state == 'act' then
art = 'District'
else
art = '[[Local government in Australia|LGA(s)]]'
end
return art
end
local function pageExists(pagename)
local pageTitle = mw.title.makeTitle("", pagename)
if pageTitle then
return pageTitle.exists
end
return false
end
local function state_protectedPage(state)
state = string.lower(state)
local prot
if state == 'sa' then
prot = '[[Protected areas of South Australia]]'
elseif state == 'vic' then
prot = '[[Protected areas of Victoria]]'
elseif state == 'nsw' then
prot = '[[Protected areas of New South Wales|Protected areas of<br />New South Wales]]'
elseif state == 'qld' then
prot = '[[Protected areas of Queensland]]'
elseif state == 'nt' then
prot = '[[Protected areas of the Northern Territory]]'
elseif state == 'wa' then
prot = '[[List of protected areas of Western Australia|List of protected areas of<br />Western Australia]]'
elseif state == 'tas' then
prot = '[[Protected areas of Tasmania]]'
elseif state == 'act' then
prot = '[[List of Australian Capital Territory protected areas|Australian Capital Territory<br />protected areas]]'
else
prot = nil
end
return prot
end
local function australianPlaceMap(args)
local statenames = {
sa = 'South Australia',
vic = 'Victoria',
nsw = 'New South Wales',
qld = 'Queensland',
nt = 'Northern Territory',
wa = 'Western Australia',
tas = 'Tasmania',
act = 'Australian Capital Territory',
jbt = 'Jervis Bay Territory',
ni = 'Norfolk Island'
}
local mapwidths = {
sa = 230,
qld = 190,
nt = 190,
wa = 180,
tas = 210,
act = 180
}
local place_type = (args.type or ''):lower()
local map_type = (args.map_type or 'auto'):lower()
local state_abbr = (args.state or ''):lower()
local map_width = 270
local coords = args.coordinates or ''
local map_name
if inb(coords) then
else
map_type = 'nomap'
end
-- [upgrade] map_type has priority over legacy parms, and for 'flag' parms 'no' means 'no'
-- the valid normal values for map_type are 'nomap', 'national', 'australia', 'state', 'lga' and 'auto'. <blank> and '' mean the same as 'auto'.
-- any other value is assumed to be a valid map name, or a series of valid map names separated by '#'
-- if map_type = 'auto' or equivalent:
-- alternative_location_map (if given) is assumed to be a valid map name (or names)
-- force_national_map (if given) substitutes for map_type = 'national'
-- use_lga_map (if given) substitutes for map_type = 'lga'
-- if none of the above:
-- if |type = 'lga', no map is shown
-- otherwise the state map is shown
if map_type == 'nomap' then
-- no map!
elseif map_type == 'national' or map_type == 'australia' then
map_name = 'Australia'
elseif map_type == 'state' then
map_name = 'Australia ' .. (statenames[state_abbr] or '')
map_width = mapwidths[state_abbr] or 270
elseif map_type == 'lga' then
map_name = 'Australia ' .. (statenames[state_abbr] or '') .. ' ' .. (args.lga or '')
map_width = mapwidths[state_abbr] or 270
elseif map_type == 'auto' or map_type == '' then
-- legacy parameters, or defaults
if isnot_blankorno(args.alternative_location_map) then
map_name = args.alternative_location_map
elseif isnot_blankorno(args.force_national_map) then
map_name = 'Australia'
elseif isnot_blankorno(args.use_lga_map) then
map_name = 'Australia ' .. (statenames[state_abbr] or '') .. ' ' .. (args.lga or '')
map_width = mapwidths[state_abbr] or 270
elseif place_type == 'lga' then
-- default for LGAs is no map
map_type = 'nomap'
else
-- default for all other place types is the state map
map_name = 'Australia ' .. (statenames[state_abbr] or '')
map_width = mapwidths[state_abbr] or 270
end
else
-- args.map_type assumed to be a valid map name, or a series of valid map names separated by '#'
map_name = args.map_type
map_type = 'altmap'
end
-- Build the map
if map_type ~= 'nomap' then
local caption = args.pushpin_map_caption or ''
if caption ~= '' then
caption = '<div style="font-size: smaller;">' .. caption .. '</div>'
end
-- [upgrade] for 'flag' parms: 'no' means 'no'
local relf = ''
if isnot_blankorno(args.relief) then
relf = args.relief
end
return lframe:expandTemplate{
title = 'Location map',
args = {
map_name,
label = args.name or '',
relief = relf,
coordinates = coords,
marksize = 6,
position = args.pushpin_label_position or '',
float = 'center',
caption = caption,
border = 'infobox',
width = map_width,
alt = args.map_alt or ''
}
}
end
return ''
end
local function shortDesc(args)
local sd = {}
-- only set short description in article namespace, and for articles where not already set
local title = mw.title.getCurrentTitle()
if title.namespace == 0 and shortDescription({name=title.text, only='explicit'}) == '' then
table.insert(sd, '{{short description|')
-- [upgrade] remove response to |short_description
--[=[ if inb(args['short description']) then
table.insert(sd, args['short description'])
else
]=]
local typ = (args.type or ''):lower()
if typ == 'city' then
table.insert(sd, 'City in')
elseif typ == 'town' then
table.insert(sd, 'Town in')
elseif typ == 'suburb' then
local subb
local city = args.city or ''
local lga = args.lga or ''
if city ~= '' then
subb = 'Suburb of ' .. city .. ','
elseif lga ~= '' then
subb = 'Suburb of ' .. lga .. ','
else
subb = 'Suburb in'
end
table.insert(sd, plainText(subb))
elseif typ == 'lga' then
table.insert(sd, 'Local government area in')
elseif typ == 'region' then
table.insert(sd, 'Region in')
elseif typ == 'cadastral' then
table.insert(sd, 'Cadastral in')
elseif typ == 'protected' then
table.insert(sd, 'Protected area in')
else
table.insert(sd, 'Place in')
end
local state = (args.state or ''):lower()
if state == 'sa' then
table.insert(sd, ' South Australia')
elseif state == 'vic' then
table.insert(sd, ' Victoria, Australia')
elseif state == 'nsw' then
table.insert(sd, ' New South Wales, Australia')
elseif state == 'qld' then
table.insert(sd, ' Queensland, Australia')
elseif state == 'nt' then
table.insert(sd, ' the Northern Territory, Australia')
elseif state == 'wa' then
table.insert(sd, ' Western Australia')
elseif state == 'tas' then
table.insert(sd, ' Tasmania, Australia')
elseif state == 'act' then
table.insert(sd, ' Australian Capital Territory')
elseif state == 'jbt' then
table.insert(sd, ' the Jervis Bay Territory, Australia')
elseif state == 'ni' then
table.insert(sd, ' Norfolk Island, Australia')
elseif state == 'au' then
table.insert(sd, ' Australia')
else
table.insert(sd, ' Australia')
end
--[=[ end ]=]
table.insert(sd, '|noreplace}}')
end
return table.concat(sd)
end
local function ibox(args)
local tmp
local InfoboxArgs = {}
local typ = (args.type or ''):lower()
local city = args.city or ''
local state = (args.state or ''):lower()
local state_long = state_longname(state)
local name = args.name or ''
InfoboxArgs.bodyclass = 'vcard'
InfoboxArgs.abovestyle = 'font-size: 125%; line-height: 1.3em; background-color:' .. backcolour(typ)
-- [upgrade] error messages for unrecognised or missing |type now at top of the infobox
tmp = ''
if typ == '' then
tmp = '<span style="font-weight:normal; font-size:70%;">' .. lframe:expandTemplate{ title = 'Error', args = {'Error: <code>|type=</code> not defined ([[Template:Infobox Australian place#type|help]])'} } .. '</span><br />'
elseif not (typ == 'city' or typ == 'town' or typ == 'suburb' or typ == 'lga' or typ == 'region' or typ == 'cadastral' or typ == 'protected' or typ == 'other') then
tmp = '<span style="font-weight:normal; font-size:70%;">' .. lframe:expandTemplate{ title = 'Error', args = {'Error: unknown <code>|type=</code> value (=' .. typ .. ') ([[Template:Infobox Australian place#type|help]])'} } .. '</span><br />'
end
if inb(name) then
-- [upgrade] error messages for unrecognised or missing |state now at top of the infobox
if state_long == '' then
tmp = tmp .. '<span style="font-weight:normal; font-size:70%;">' .. lframe:expandTemplate{ title = 'Error', args = {'Error: <code>|state=</code> not defined ([[Template:Infobox Australian place#type|help]])'} } .. '</span><br />'
elseif state_long == 'unk' then
tmp = tmp .. '<span style="font-weight:normal; font-size:70%;">' .. lframe:expandTemplate{ title = 'Error', args = {'Error: unknown <code>|state=</code> value (=' .. state .. ') ([[Template:Infobox Australian place#type|help]])'} } .. '</span><br />'
state_long = ''
end
tmp = tmp .. '<span class="fn org locality">' .. name .. '</span><br />'
if inb(args.native_name) then
tmp = tmp .. '<div style="font-weight:normal;font-size:88%;"'
if inb(args.native_name_lang) then
tmp = tmp .. ' lang="' .. args.native_name_lang .. '"'
end
tmp = tmp .. '>' .. args.native_name .. '</div>'
end
tmp = tmp .. '<span style="font-weight:normal; font-size:88%" class="region">'
if city ~= '' then
tmp = tmp .. lframe:expandTemplate{title = 'auto link', args = { city } } .. ', '
end
tmp = tmp .. state_long ..'</span>'
end
InfoboxArgs.above = tmp
InfoboxArgs.aboveclass = 'adr'
InfoboxArgs.subheaderstyle = 'font-size: 100%;'
if typ == 'protected' then
InfoboxArgs.subheader1 = lframe:expandTemplate{ title = 'IUCN banner', args = { (args.iucn_category or ''), (args.iucn_ref or '') } }
end
if inb(args.image) then
-- [upgrade] remove response to obsolete parameters image_size and imagesize
--[=[
local siz
if inb(args.image_size) then
siz = args.image_size
elseif inb(args.imagesize) then
siz = args.imagesize
end
]=]
local upr = '1.23'
if inb(args.image_upright) then
upr = args.image_upright
end
local ialt
if inb(args.image_alt) then
ialt = args.image_alt
-- [upgrade] remove response to obsolete parameter alt
--[=[
elseif inb(args.alt) then
ialt = args.alt
]=]
end
InfoboxArgs.image = infoboxImage{args = {image = args.image, sizedefault = 'frameless', upright = upr, alt = ialt} }
end
InfoboxArgs.imagestyle = nil
InfoboxArgs.caption = (args.caption or '')
InfoboxArgs.captionstyle = nil
if inb(args.image2) then
-- [upgrade] remove response to obsolete parameters image_size2 and imagesize2
--[=[
local siz
if inb(args.image_size2) then
siz = args.image_size2
elseif inb(args.imagesize2) then
siz = args.imagesize2
end
]=]
local upr = '1.23'
if inb(args.image2_upright) then
upr = args.image2_upright
end
local ialt
if inb(args.image2_alt) then
ialt = args.image2_alt
-- [upgrade] remove response to obsolete parameter alt2
--[=[
elseif inb(args.alt2) then
ialt = args.alt2
]=]
end
InfoboxArgs.image2 = infoboxImage{args = {image = args.image2, sizedefault = 'frameless', upright = upr, alt = ialt} }
end
InfoboxArgs.caption2 = (args.caption2 or '')
InfoboxArgs.headerstyle = 'background-color:#ddf;'
InfoboxArgs.labelstyle = 'width:40%; background-color:' .. backcolour(typ)
InfoboxArgs.datastyle = nil
-- [upgrade] allow local map to have a caption set
--[=[
InfoboxArgs.data1 = australianPlaceMap(lframe)
InfoboxArgs.data2 = nil
if inb(args.local_map) then
InfoboxArgs.data2 = lframe:expandTemplate{ title = 'Infobox mapframe', args = {zoom = (args.zoom or ''), id = (args.local_map_id or '')} }
end
]=]
-- [upgrade] use upgraded Australian place map (now an internal function)
-- InfoboxArgs.image3 = australianPlaceMap(lframe)
InfoboxArgs.image3 = australianPlaceMap(args)
InfoboxArgs.image4 = nil
if isnot_blankorno(args.local_map) then
InfoboxArgs.image4 = lframe:expandTemplate{ title = 'Infobox mapframe', args = {zoom = (args.zoom or ''), id = (args.local_map_id or '')} }
end
InfoboxArgs.caption4 = (args.local_map_caption or '')
InfoboxArgs.label3 = '<span style="white-space: nowrap">Nearest town or city</span>'
InfoboxArgs.data3 = nil
if typ == 'protected' then
InfoboxArgs.data3 = lframe:expandTemplate{ title = 'auto link', args = {(args.nearest_town_or_city or '') } }
end
InfoboxArgs.label4 = '[[Geographic coordinate system|Coordinates]]'
InfoboxArgs.data4 = nil
if inb(args.coordinates) then
-- the type: and region: parameters to Module:Coordinates seem to be over-ridden by this code, even though they could be in the {{coords}} call that produces the content of the coordinates parameter
local mtyp = ''
-- [upgrade] difference between |type=protected and other types removed
--[=[
if typ == 'protected' then
mtyp = 'landmark'
else
mtyp = 'city'
end
]=]
mtyp = 'city'
InfoboxArgs.data4 = coordinates{args = {args.coordinates, 'type:' .. mtyp, 'region:' .. coords_region(state)} } .. (args.coord_ref or '')
end
InfoboxArgs.label6 = 'Population'
tmp = ''
if inb(args.pop) then
-- [upgrade] |pop2 shown no matter how |pop is derived
--[=[
if inb(args.pop2) then
tmp = '<ul style="margin-top: 0px; margin-bottom: 0px;"><li>'
else
tmp = ''
end
]=]
if tonumber(args.pop) then
-- pop looks like a number
tmp = tmp .. lang:formatNum(tonumber(args.pop))
else
-- just show it
tmp = tmp .. args.pop
end
if inb(args.pop_year) then
tmp = tmp .. ' (' .. args.pop_year .. ')'
end
tmp = tmp .. (args.pop_footnotes or '')
if inb(args.poprank) then
tmp = tmp .. ' ([[List of cities in Australia by population|' .. args.poprank .. ']])'
end
-- [upgrade] |pop2 shown no matter how |pop is derived
--[=[
if inb(args.pop2) then
tmp = tmp .. '</li><li> '
if tonumber(args.pop2) then
-- pop2 looks like a number
tmp = tmp .. lang:formatNum(tonumber(args.pop2))
else
-- just show it
tmp = tmp .. args.pop2
end
if inb(args.pop2_year) then
tmp = tmp .. ' (' .. args.pop2_year .. ')'
end
tmp = tmp .. (args.pop2_footnotes or '')
tmp = tmp .. '</li></ul>'
end
]=]
else
local wdpop = populationFromWikidata{args = {type = typ, wikidata = (args.wikidata or '')} }
if inb(wdpop) then
-- [upgrade] show |poprank after wikidata derived pop info
if inb(args.poprank) then
wdpop = wdpop .. ' ([[List of cities in Australia by population|' .. args.poprank .. ']])'
end
-- [upgrade] make geography abbreviation tooltops more explanatory
wdpop = string.gsub(wdpop, 'urban centre and locality', 'urban area (Urban Centre and Locality)')
if typ == 'suburb' then
wdpop = string.gsub(wdpop, 'suburb and locality', 'suburb area (Suburb And Locality)')
else
wdpop = string.gsub(wdpop, 'suburb and locality', 'locality area (Suburb And Locality)')
end
-- The <div> here prevents the output from populationFromWikidata appearing above the infobox instead of within it.
-- I don't know why, but the output from {{#invoke:PopulationFromWikidata | ListForInfobox }} in the template version is treated properly,
-- but the output from calling require('Module:PopulationFromWikidata').ListForInfobox in this module is not, requiring this fix.
tmp = '<div>' .. wdpop .. '</div>'
end
end
-- [upgrade] |pop2 shown no matter how |pop is derived
if inb(args.pop2) then
local list = false
if inb(tmp) then
tmp = '<ul style="margin-top: 0px; margin-bottom: 0px;"><li>' .. tmp .. '</li><li> '
list = true
end
if tonumber(args.pop2) then
-- pop2 looks like a number
tmp = tmp .. lang:formatNum(tonumber(args.pop2))
else
-- just show it
tmp = tmp .. args.pop2
end
if inb(args.pop2_year) then
tmp = tmp .. ' (' .. args.pop2_year .. ')'
end
tmp = tmp .. (args.pop2_footnotes or '')
if list then
tmp = tmp .. '</li></ul>'
end
end
InfoboxArgs.data6 = tmp
InfoboxArgs.label7 = ' • Density'
tmp = nil
if inb(args.density) then
-- [upgrade] space between density and density_footnotes removed
-- tmp = lframe:expandTemplate{ title = 'convert', args = {args.density, '/km2', '/sqmi', abbr='on'} } .. ' ' .. (args.density_footnotes or '')
tmp = lframe:expandTemplate{ title = 'convert', args = {args.density, '/km2', '/sqmi', abbr='on'} } .. (args.density_footnotes or '')
else
if inb(args.pop) and lang:parseFormattedNumber(args.pop) and inb(args.area) then
-- tmp = lframe:expandTemplate{ title = 'Pop density', args = {lang:parseFormattedNumber(args.pop), args.area, 'km2', 'sqmi'} } .. ' ' .. (args.density_footnotes or '')
tmp = lframe:expandTemplate{ title = 'Pop density', args = {lang:parseFormattedNumber(args.pop), args.area, 'km2', 'sqmi'} } .. (args.density_footnotes or '')
end
end
InfoboxArgs.data7 = tmp
InfoboxArgs.label8 = 'Established'
tmp = nil
if inb(args.established) then
tmp = args.established .. (args.established_footnotes or '')
elseif inb(args.est) then
tmp = args.est .. (args.established_footnotes or '')
end
InfoboxArgs.data8 = tmp
InfoboxArgs.label9 = 'Abolished'
InfoboxArgs.data9 = args.abolished or ''
InfoboxArgs.label10 = '[[Gazetteer of Australia|Gazetted]]'
InfoboxArgs.data10 = args.gazetted or ''
InfoboxArgs.label11 = '[[Postcodes in Australia|Postcode(s)]]'
InfoboxArgs.data11 = args.postcode or ''
InfoboxArgs.label12 = 'Elevation'
if inb(args.elevation) then
InfoboxArgs.data12 = lframe:expandTemplate{ title = 'convert', args = {args.elevation, 'm', 'ft', 0, abbr='on'} } .. (args.elevation_footnotes or '')
end
InfoboxArgs.label13 = 'Area'
if inb(args.area) then
InfoboxArgs.data13 = lframe:expandTemplate{ title = 'convert', args = {args.area, 'km2', 'sqmi', 1, abbr='on'} } .. (args.area_footnotes or '')
end
InfoboxArgs.label14 = '[[Time in Australia|Time zone]]'
if inb(args.timezone) then
InfoboxArgs.data14 = args.timezone .. ' ' .. '([[UTC' .. (args.utc or '') .. ']])'
end
InfoboxArgs.label15 = ' • Summer ([[Daylight saving time|DST]])'
if inb(args['timezone-dst']) then
InfoboxArgs.data15 = args['timezone-dst'] .. ' ' .. '([[UTC' .. (args['utc-dst'] or '') .. ']])'
end
InfoboxArgs.label16 = (args.mayortitle or 'Mayor')
if typ == 'lga' and inb(args.mayor) then
InfoboxArgs.data16 = args.mayor
end
InfoboxArgs.label17 = 'Location'
tmp = ''
if inb(args.dist2) then
tmp = '<ul style="margin-top: 0px; margin-bottom: 0px;">'
tmp = tmp .. location(args.location1, args.dir1, args.dist1, true)
tmp = tmp .. location(args.location2, args.dir2, args.dist2, true)
tmp = tmp .. location(args.location3, args.dir3, args.dist3, true)
tmp = tmp .. location(args.location4, args.dir4, args.dist4, true)
tmp = tmp .. location(args.location5, args.dir5, args.dist5, true)
tmp = tmp .. '</ul>'
elseif inb(args.location1) then
tmp = location(args.location1, args.dir1, args.dist1, false)
end
InfoboxArgs.data17 = tmp
InfoboxArgs.label18 = lgas_article(state)
tmp = nil
if inb(args.lga) then
local lga2 = args.lga2 or ''
if lga2 ~= '' then
tmp = '<ul style="margin-top: 0px; margin-bottom: 0px;"><li>'
else
tmp = ''
end
tmp = tmp .. lframe:expandTemplate{title = 'auto link', args = {args.lga} }
if lga2 ~= '' then
tmp = tmp .. '</li><li>' .. lframe:expandTemplate{title = 'auto link', args = {lga2} } .. '</li>'
end
if inb(args.lga3) then
tmp = tmp .. '<li>' .. lframe:expandTemplate{title = 'auto link', args = {args.lga3} } .. '</li>'
end
if inb(args.lga4) then
tmp = tmp .. '<li>' .. lframe:expandTemplate{title = 'auto link', args = {args.lga4} } .. '</li>'
end
if inb(args.lga5) then
tmp = tmp .. '<li>' .. lframe:expandTemplate{title = 'auto link', args = {args.lga5} } .. '</li>'
end
if lga2 ~= '' then
tmp = tmp .. '</ul>'
end
end
InfoboxArgs.data18 = tmp
InfoboxArgs.label19 = 'Council seat'
InfoboxArgs.data19 = args.seat or ''
InfoboxArgs.label20 = '[[List of regions of Australia|Region]]'
if inb(args.region) then
InfoboxArgs.data20 = lframe:expandTemplate{title = 'auto link', args = {args.region} }
end
InfoboxArgs.label21 = '[[Lands administrative divisions of Australia|County]]'
if inb(args.county) then
InfoboxArgs.data21 = lframe:expandTemplate{title = 'auto link', args = {args.county} }
end
InfoboxArgs.label22 = '[[Parish (administrative division)|Parish]]'
InfoboxArgs.data22 = args.parish or ''
if typ == 'cadastral' then
InfoboxArgs.label23 = '[[Hundred (county division)|Hundred]]'
InfoboxArgs.data23 = args.hundred or ''
InfoboxArgs.label24 = '[[Hundred (county division)|Hundred (former)]]'
InfoboxArgs.data24 = args.former_hundred or ''
InfoboxArgs.label25 = '[[Lands administrative divisions of New South Wales|Division]]'
InfoboxArgs.data25 = args.division or ''
end
if state == 'act' or state == 'nt' or state == 'jbt' then
InfoboxArgs.label26 = '[[Electorates of the Australian states and territories|Territory electorates(s)]]'
else
InfoboxArgs.label26 = '[[Electorates of the Australian states and territories|State electorate(s)]]'
end
tmp = nil
if inb(args.stategov) then
local stategov2 = (args.stategov2 or '')
if stategov2 ~= '' then
tmp = '<ul style="margin-top: 0px; margin-bottom: 0px;"><li>'
else
tmp = ''
end
tmp = tmp .. args.stategov
if stategov2 ~= '' then
tmp = tmp .. '</li><li>' .. stategov2 .. '</li>'
end
if inb(args.stategov3) then
tmp = tmp .. '<li>' .. args.stategov3 .. '</li>'
end
if inb(args.stategov4) then
tmp = tmp .. '<li>' .. args.stategov4 .. '</li>'
end
if inb(args.stategov5) then
tmp = tmp .. '<li>' .. args.stategov5 .. '</li>'
end
if stategov2 ~= '' then
tmp = tmp .. '</ul>'
end
end
InfoboxArgs.data26 = tmp
InfoboxArgs.label27 = '[[Divisions of the Australian House of Representatives|Federal division(s)]]'
tmp = nil
if inb(args.fedgov) then
local fedgov2 = args.fedgov2 or ''
if fedgov2 ~= '' then
tmp = '<ul style="margin-top: 0px; margin-bottom: 0px;"><li>'
else
tmp = ''
end
tmp = tmp .. args.fedgov
if fedgov2 ~= '' then
tmp = tmp .. '</li><li>' .. fedgov2 .. '</li>'
end
if inb(args.fedgov3) then
tmp = tmp .. '<li>' .. args.fedgov3 .. '</li>'
end
if inb(args.fedgov4) then
tmp = tmp .. '<li>' .. args.fedgov4 .. '</li>'
end
if fedgov2 ~= '' then
tmp = tmp .. '</ul>'
end
end
InfoboxArgs.data27 = tmp
if inb(args.logo) then
local siz
-- [upgrade] remove response to obsolete parameter logosize
--[=[
if inb(args.logosize) then
siz = args.logosize
end
]=]
local upr = '0.8'
if inb(args.logo_upright) then
upr = args.logo_upright
end
-- [upgrade] remove response to obsolete parameter logoalt
--[=[
local lalt
if inb(args.logo_alt) then
lalt = args.logo_alt
end
]=]
InfoboxArgs.data28 = infoboxImage{args = {image = args.logo, sizedefault = 'frameless', upright = upr} }
end
-- [upgrade] allow a caption on the logo image
InfoboxArgs.data29 = args.logo_caption or ''
InfoboxArgs.label30 = 'Visitation'
if typ == 'protected' then
tmp = nil
if inb(args.visitation_num) then
if tonumber(args.visitation_num) then
-- visitation_num looks like a number
tmp = lang:formatNum(tonumber(args.visitation_num))
else
-- just show it
tmp = args.visitation_num
end
if inb(args.visitation_year) then
tmp = tmp .. ' (in ' .. args.visitation_year .. ')'
end
tmp = tmp .. (args.visitation_footnotes or '')
InfoboxArgs.data30 = tmp
end
InfoboxArgs.label31 = '<span style="white-space: nowrap">Managing authorities</span>'
if inb(args.managing_authorities) then
InfoboxArgs.data31 = lframe:expandTemplate{title = 'auto link', args = {args.managing_authorities} }
end
end
InfoboxArgs.label32 = 'Website'
if inb(args.url) then
InfoboxArgs.data32 = url(args.url, name) .. ' '
end
tmp = nil
if inb(args.maxtemp) or inb(args.mintemp) or inb(args.rainfall) then
tmp = '<table cellpadding=4 cellspacing=0 style="width:100%; border: 1px #ddd solid;">'
tmp = tmp .. '<tr class=mergedrow>'
-- [upgrade] headings for climate table have same back colour as labels
--[=[
tmp = tmp .. '<td style="background-color:#f0f0ff;border: 1px #FFF solid; text-align:center; width:33%;">' .. '\'\'\'Mean max temp\'\'\'' .. (args.maxtemp_footnotes or '') .. '</td>'
tmp = tmp .. '<td style="background-color:#f0f0ff;border: 1px #FFF solid; text-align:center; width:33%;">\'\'\'Mean min temp\'\'\'' .. (args.mintemp_footnotes or '') .. '</td>'
tmp = tmp .. '<td style="background-color:#f0f0ff;border: 1px #FFF solid; text-align:center; width:33%;">\'\'\'Annual rainfall\'\'\'' .. (args.rainfall_footnotes or '') .. '</td>'
]=]
tmp = tmp .. '<td style="background-color: ' .. backcolour(typ) .. '; border: 1px #FFF solid; text-align:center; width:33%;">' .. '\'\'\'Mean max temp\'\'\'' .. (args.maxtemp_footnotes or '') .. '</td>'
tmp = tmp .. '<td style="background-color: ' .. backcolour(typ) .. '; border: 1px #FFF solid; text-align:center; width:33%;">\'\'\'Mean min temp\'\'\'' .. (args.mintemp_footnotes or '') .. '</td>'
tmp = tmp .. '<td style="background-color: ' .. backcolour(typ) .. '; border: 1px #FFF solid; text-align:center; width:33%;">\'\'\'Annual rainfall\'\'\'' .. (args.rainfall_footnotes or '') .. '</td>'
tmp = tmp .. '</tr>'
tmp = tmp .. '<tr style="border: 1px #FFF solid" class=mergedrow>'
tmp = tmp .. '<td style="padding: 2px 0px; text-align:center; width:33%;">'
if inb(args.maxtemp) then
tmp = tmp .. lframe:expandTemplate{ title = 'convert', args = {args.maxtemp, 'C', 'F', 0, disp='br'} } .. '</td>'
else
tmp = tmp .. '?</td>'
end
tmp = tmp .. '<td style="padding: 2px 0px; text-align:center; width:33%;">'
if inb(args.mintemp) then
tmp = tmp .. lframe:expandTemplate{ title = 'convert', args = {args.mintemp, 'C', 'F', 0, disp='br'} } .. '</td>'
else
tmp = tmp .. '?</td>'
end
tmp = tmp .. '<td style="padding: 2px 0px; text-align:center; width:33%;">'
if inb(args.rainfall) then
tmp = tmp .. lframe:expandTemplate{ title = 'convert', args = {args.rainfall, 'mm', 'in', 1, disp='br', abbr='on'} } .. '</td>'
else
tmp = tmp .. '?</td>'
end
tmp = tmp .. '</tr></td></table>'
end
InfoboxArgs.data33 = tmp
tmp = nil
if inb(args['near'])
or inb(args['near-nw'])
or inb(args['near-n'])
or inb(args['near-ne'])
or inb(args['near-w'])
or inb(args['near-e'])
or inb(args['near-sw'])
or inb(args['near-s'])
or inb(args['near-se']) then
tmp = '<table cellpadding=4 cellspacing=3 style="width:100%; border: 1px #ddd solid;">'
-- [upgrade] heading for places-near has same back colour as labels
-- tmp = tmp .. '<tr class=mergedrow><td colspan=3 style="background-color:#f0f0ff;padding: 2px 0px; text-align:center;">\'\'\''
tmp = tmp .. '<tr class=mergedrow><td colspan=3 style="background-color:' .. backcolour(typ) .. '; padding: 2px 0px; text-align:center;">\'\'\''
if typ == 'cadastral' then
tmp = tmp .. '[[Lands administrative divisions of Australia|Lands administrative divisions]]'
elseif typ == 'lga' then
tmp = tmp .. '[[Local government in Australia|LGAs]]'
elseif typ == 'suburb' then
if city ~= '' then
if pageExists('List of ' .. city .. ' suburbs') then
tmp = tmp .. '[[List of ' .. city .. ' suburbs|Suburbs]]'
elseif pageExists('Category:Suburbs of the City of ' .. city) then
tmp = tmp .. '[[Category:Suburbs of the City of ' .. city .. '|Suburbs]]'
elseif pageExists('Category:Suburbs of ' .. city) then
tmp = tmp .. '[[Category:Suburbs of ' .. city .. '|Suburbs]]'
else
tmp = tmp .. 'Suburbs'
end
else
tmp = tmp .. 'Suburbs'
end
else
tmp = tmp .. 'Localities'
end
tmp = tmp .. ' around '
if name ~= '' then
tmp = tmp .. name
else
tmp = tmp .. lframe:expandTemplate{ title = 'PAGENAMEBASE'}
end
tmp = tmp .. '\'\'\'</td></tr>'
tmp = tmp .. '<tr class=mergedrow>'
tmp = tmp .. '<td style="text-align:center; padding:3px 0px; width:33%;">' .. (args['near-nw'] or '') .. '</td>'
tmp = tmp .. '<td style="text-align:center; padding:3px 0px; width:34%;">' .. (args['near-n'] or '') .. '</td>'
tmp = tmp .. '<td style="text-align:center; padding:3px 0px; width:33%;">' .. (args['near-ne'] or '') .. '</td>'
tmp = tmp .. '</tr><tr class=mergedrow>'
tmp = tmp .. '<td style="text-align:center; vertical-align:middle; padding:3px 0px; width:33%;">' .. (args['near-w'] or '') .. '</td>'
tmp = tmp .. '<td style="text-align:center; vertical-align:middle; padding:3px 0px; width:34%; font-weight:bold;">' .. (args['near'] or name) .. '</td>'
tmp = tmp .. '<td style="text-align:center; vertical-align:middle; padding:3px 0px; width:33%;">' .. (args['near-e'] or '') .. '</td>'
tmp = tmp .. '</tr><tr class=mergedrow>'
tmp = tmp .. '<td style="text-align:center; padding:3px 0px; width:33%;">' .. (args['near-sw'] or '') .. '</td>'
tmp = tmp .. '<td style="text-align:center; padding:3px 0px; width:34%;">' .. (args['near-s'] or '') .. '</td>'
tmp = tmp .. '<td style="text-align:center; padding:3px 0px; width:33%;">' .. (args['near-se'] or '') .. '</td>'
tmp = tmp .. '</tr></table>'
end
InfoboxArgs.data34 = tmp
InfoboxArgs.label35 = 'Footnotes'
InfoboxArgs.data35 = args.footnotes or ''
InfoboxArgs.label36 = 'See also'
if typ == 'protected' and inb(args.iucn_category) and state~= '' then
InfoboxArgs.data36 = state_protectedPage(state)
end
-- [upgrade] error message for unrecognised or empty |type now at top of infobox
--[=[
tmp = nil
if typ == '' then
tmp = lframe:expandTemplate{ title = 'Error', args = {'Error: <code>|type=</code> not defined ([[Template:Infobox Australian place#type|help]])'} }
elseif not (typ == 'city' or typ == 'town' or typ == 'suburb' or typ == 'lga' or typ == 'region' or typ == 'cadastral' or typ == 'protected' or typ == 'other') then
tmp = lframe:expandTemplate{ title = 'Error', args = {'Error: unknown <code>|type=</code> value (=' .. typ .. ') ([[Template:Infobox Australian place#type|help]])'} }
end
InfoboxArgs.data37 = tmp
]=]
return infobox(InfoboxArgs)
end
local function categories(args)
local cats = {}
local typ = string.lower(args.type or '')
local state = string.lower(args.state or '')
if mw.title.getCurrentTitle().namespace == 0 then
-- no categories are created except in article namespace
if inb(args._noautocat) then
-- suppress auto categories. Note: does not suppress the tracking categories
else
local name = (args.name or '')
if typ == 'town' then
if state == 'sa' then
table.insert(cats, '[[Category:Towns in South Australia|' .. name .. ']]')
elseif state == 'vic' then
table.insert(cats, '[[Category:Towns in Victoria (state)|' .. name .. ']]')
elseif state == 'nsw' then
table.insert(cats, '[[Category:Towns in New South Wales|' .. name .. ']]')
elseif state == 'qld' then
table.insert(cats, '[[Category:Towns in Queensland|' .. name .. ']]')
elseif state == 'nt' then
table.insert(cats, '[[Category:Towns in the Northern Territory|' .. name .. ']]')
elseif state == 'wa' then
table.insert(cats, '[[Category:Towns in Western Australia|' .. name .. ']]')
elseif state == 'tas' then
table.insert(cats, '[[Category:Towns in Tasmania|' .. name .. ']]')
elseif state == 'act' then
table.insert(cats, '[[Category:Towns in the Australian Capital Territory|' .. name .. ']]')
elseif state == 'ni' then
table.insert(cats, '[[Category:Populated places in Norfolk Island|' .. name .. ']]')
end
elseif typ == 'suburb' then
local city = args.city or ''
if pageExists('Category:Suburbs of the City of ' .. city) then
table.insert(cats, '[[Category:Suburbs of the City of ' .. city .. '|' .. name .. ']]')
elseif pageExists('Category:Suburbs of ' .. city) then
table.insert(cats, '[[Category:Suburbs of ' .. city .. '|' .. name .. ']]')
else
if state == 'sa' and pageExists('Category:Suburbs of ' .. city .. ', South Australia') then
table.insert(cats, '[[Category:Suburbs of ' .. city .. ', South Australia|' .. name .. ']]')
elseif state == 'vic' and pageExists('Category:Suburbs of ' .. city .. ', Victoria') then
table.insert(cats, '[[Category:Suburbs of ' .. city .. ', Victoria|' .. name .. ']]')
elseif state == 'nsw' and pageExists('Category:Suburbs of ' .. city .. ', New South Wales') then
table.insert(cats, '[[Category:Suburbs of ' .. city .. ', New South Wales|' .. name .. ']]')
elseif state == 'qld' and pageExists('Category:Suburbs of ' .. city .. ', Queensland') then
table.insert(cats, '[[Category:Suburbs of ' .. city .. ', Queensland|' .. name .. ']]')
elseif state == 'nt' and pageExists('Category:Suburbs of ' .. city .. ', Northern Territory') then
table.insert(cats, '[[Category:Suburbs of ' .. city .. ', Northern Territory|' .. name .. ']]')
elseif state == 'wa' and pageExists('Category:Suburbs of ' .. city .. ', Western Australi') then
table.insert(cats, '[[Category:Suburbs of ' .. city .. ', Western Australia|' .. name .. ']]')
elseif state == 'tas' and pageExists('Category:Suburbs of ' .. city .. ', Tasmania') then
table.insert(cats, '[[Category:Suburbs of ' .. city .. ', Tasmania|' .. name .. ']]')
elseif state == 'act' and pageExists('Category:Suburbs of ' .. city .. ', ACT') then
table.insert(cats, '[[Category:Suburbs of ' .. city .. ', ACT|' .. name .. ']]')
end
end
-- [upgrade] articles put in categories for |established and |est, and for all types
--[=[
elseif inb(args.est) and typ == 'lga' then
if pageExists('Category:Populated places established in ' .. (args.est or '')) then
table.insert(cats, '[[Category:Populated places established in ' .. (args.est or '') .. '|' .. name .. ']]')
elseif pageExists('Category:Populated places established in the ' .. (args.est or '')) then
table.insert(cats, '[[Category:Populated places established in the ' .. (args.est or '') .. '|' .. name .. ']]')
elseif pageExists('Category:' .. (args.est or '') .. ' establishments in Australia') then
table.insert(cats, '[[Category:' .. (args.est or '') .. ' establishments in Australia|' .. name .. ']]')
end
]=]
end
if inb(args.established) or inb(args.est) then
if pageExists('Category:Populated places established in ' .. (args.established or args.est or '')) then
table.insert(cats, '[[Category:Populated places established in ' .. (args.established or args.est or '') .. '|' .. name .. ']]')
elseif pageExists('Category:Populated places established in the ' .. (args.established or args.est or '')) then
table.insert(cats, '[[Category:Populated places established in the ' .. (args.established or args.est or '') .. '|' .. name .. ']]')
end
if pageExists('Category:' .. (args.established or args.est or '') .. ' establishments in Australia') then
table.insert(cats, '[[Category:' .. (args.established or args.est or '') .. ' establishments in Australia|' .. name .. ']]')
end
end
end
-- Tracking categories
if args['1'] then
-- The '1' parameter occurs when there is a missing equals sign, or spurious pipes. Usually harmless, but can mask other issues, so it is better to track them.
table.insert(cats, '[[Category:Australian place articles using missing parameters|1]]')
end
if (args.type or '') == '' then
table.insert(cats, '[[Category:Australian place articles using missing parameters|U]]')
end
if (args.state or '') == '' then
table.insert(cats, '[[Category:Australian place articles using missing parameters|S]]')
end
if inb(args.pop) then
if (args.pop_year or '') == '' then
table.insert(cats, '[[Category:Australian place articles with no population year]]')
end
if (args.pop_footnotes or '') == '' then
table.insert(cats, '[[Category:Australian place articles with no population footnotes]]')
end
end
if inb(args.pop2) then
if (args.pop2_year or '') == '' then
table.insert(cats, '[[Category:Australian place articles with no population year]]')
end
if (args.pop2_footnotes or '') == '' then
table.insert(cats, '[[Category:Australian place articles with no population footnotes]]')
end
end
if (args.density or '') == '' and inb(args.pop) and inb(args.area) then
if lang:parseFormattedNumber(args.pop) and type(args.area) == 'number' then
-- density calculation should be OK
else
table.insert(cats, '[[Category:Australian place articles with density errors]]')
end
end
-- [upgrade] remove special categories treatment of obsolete parameters
--[=[
if args.imagesize or args.image2size or args.imagesize2 or args.image_alt2 then
table.insert(cats, '[[Category:Australian place articles using missing parameters|I]]')
end
if args.logosize then
table.insert(cats, '[[Category:Australian place articles using missing parameters|L]]')
end
if args.official_site then
table.insert(cats, '[[Category:Australian place articles using missing parameters|O]]')
end
]=]
if args.coordinates then
if typ == 'lga' then
-- [upgrade] The circumstance of |type = lga and no location map is forced is no longer tracked.
-- [upgrade] It is the best circumstance - a state map showing the LGA should be in |image or |image2
if string.lower(args.map_type or '') == '' or string.lower(args.map_type or '') == 'auto' then
if inb(args.alternative_location_map) or inb(args.force_national_map) or inb(args.use_lga_map) then
table.insert(cats, '[[Category:Pages using infobox Australian place with lga type and location map]]')
-- [upgrade] remove category for normal behaviour for an lga
--[=[
else
table.insert(cats, '[[Category:Pages using infobox Australian place with an implicitly suppressed location map]]')
]=]
end
else
table.insert(cats, '[[Category:Pages using infobox Australian place with lga type and location map]]')
end
-- [upgrade] remove category for normal behaviour for an lga
--[=[
elseif string.lower(args.map_type or '') == 'nomap' then
table.insert(cats, '[[Category:Pages using infobox Australian place with an explicitly suppressed location map]]')
]=]
end
end
table.insert(cats, check({
unknown='[[Category:Pages using infobox Australian place with unknown parameters|_VALUE_' .. lframe:expandTemplate{title = 'PAGENAME'} .. ']]',
preview='Page using [[Template:Infobox Australian place]] with unknown parameter "_VALUE_"',
ignoreblank='y',
'_noautocat',
'abolished', 'alternative_location_map', 'area', 'area_footnotes',
'caption', 'caption2', 'city', 'coord_ref', 'coordinates ', 'county',
'density', 'density_footnotes', 'dir1', 'dir2', 'dir3', 'dir4', 'dir5', 'dist1', 'dist2', 'dist3', 'dist4', 'dist5', 'division',
'elevation', 'elevation_footnotes', 'est', 'established', 'established_footnotes',
'fedgov', 'fedgov2', 'fedgov3', 'fedgov4', 'footnotes', 'force_national_map', 'former_hundred',
'gazetted',
'hundred',
'image', 'image_alt', 'image_upright', 'image2', 'image2_alt', 'image2_upright', 'iucn_category', 'iucn_ref',
'lga', 'lga2', 'lga3', 'lga4', 'lga5', 'local_map', 'local_map_caption', 'local_map_id', 'location1', 'location2', 'location3', 'location4', 'location5', 'logo', 'logo_alt', 'logo_caption', 'logo_upright',
'managing_authorities', 'map_alt', 'map_type', 'maxtemp', 'maxtemp_footnotes', 'mayor', 'mayortitle', 'mintemp', 'mintemp_footnotes',
'name', 'native_name_lang', 'native_name', 'near', 'near-e', 'nearest_town_or_city', 'near-n', 'near-ne', 'near-nw', 'near-s', 'near-se', 'near-sw', 'near-w',
'parish', 'pop', 'pop_footnotes', 'pop_year', 'pop2', 'pop2_footnotes', 'pop2_year', 'poprank', 'postcode', 'pushpin_label_position', 'pushpin_map_caption',
'rainfall', 'rainfall_footnotes', 'region', 'relief',
'seat', 'state', 'stategov', 'stategov2', 'stategov3', 'stategov4', 'stategov5',
'timezone', 'timezone-dst', 'type',
'url', 'use_lga_map', 'utc', 'utc-dst',
'visitation_footnotes', 'visitation_num', 'visitation_year',
'wikidata',
'zoom'
}, args))
end
return table.concat(cats)
end
function p.main(frame)
lframe = frame
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
return shortDesc(args) .. ibox(args) .. categories(args)
end
return p