<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>http://wiki.regionet.org.ua/index.php?action=history&amp;feed=atom&amp;title=Module%3AElement</id>
	<title>Module:Element - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.regionet.org.ua/index.php?action=history&amp;feed=atom&amp;title=Module%3AElement"/>
	<link rel="alternate" type="text/html" href="http://wiki.regionet.org.ua/index.php?title=Module:Element&amp;action=history"/>
	<updated>2026-09-22T00:18:47Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>http://wiki.regionet.org.ua/index.php?title=Module:Element&amp;diff=656&amp;oldid=prev</id>
		<title>Regionet: Створена сторінка: -- Please remember to use the talk page before changing this template!  	 When the first Lua version was written this was used on more than 5000 pages, 	 now...</title>
		<link rel="alternate" type="text/html" href="http://wiki.regionet.org.ua/index.php?title=Module:Element&amp;diff=656&amp;oldid=prev"/>
		<updated>2021-10-05T07:03:41Z</updated>

		<summary type="html">&lt;p&gt;Створена сторінка: -- Please remember to use the talk page before changing this template!  	 When the first Lua version was written this was used on more than 5000 pages, 	 now...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[ Please remember to use the talk page before changing this template! &lt;br /&gt;
	 When the first Lua version was written this was used on more than 5000 pages,&lt;br /&gt;
	 now it is probably some 3000 more. &lt;br /&gt;
	 A change will cause a re-rendering of all pages. Keep that in mind! ]]--&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
local translations = mw.loadData('Module:Element/translation')&lt;br /&gt;
&lt;br /&gt;
-- start for Template:Area&lt;br /&gt;
function p.area(frame)&lt;br /&gt;
	-- extracting arguments&lt;br /&gt;
	local areaId = frame.args[1]&lt;br /&gt;
	local areaName = frame.args[2]&lt;br /&gt;
	local toolbarSetting = frame.args[&amp;quot;tools&amp;quot;]&lt;br /&gt;
	local langcodeInput = frame.args[&amp;quot;lang&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	-- checking for correct parameters&lt;br /&gt;
	assert(tonumber(areaId), &amp;quot;Given way id parameter is not a number&amp;quot;)&lt;br /&gt;
	if areaName == &amp;quot;&amp;quot; then&lt;br /&gt;
		areaName = nil&lt;br /&gt;
	elseif areaName ~= nil then&lt;br /&gt;
		areaName = mw.text.trim(areaName)&lt;br /&gt;
	end&lt;br /&gt;
	areaId = mw.text.trim(areaId)&lt;br /&gt;
	if langcodeInput ~= nil then langcodeInput = string.lower(langcodeInput) end&lt;br /&gt;
	&lt;br /&gt;
	return elementText(&amp;quot;area&amp;quot;, areaId, areaName, toolbarSetting, langcodeInput)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- start for Template:Node&lt;br /&gt;
function p.node(frame)&lt;br /&gt;
	-- extracting arguments&lt;br /&gt;
	local nodeId = frame.args[1]&lt;br /&gt;
	local nodeName = frame.args[2]&lt;br /&gt;
	local toolbarSetting = frame.args[&amp;quot;tools&amp;quot;]&lt;br /&gt;
	local langcodeInput = frame.args[&amp;quot;lang&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	-- checking for correct parameters&lt;br /&gt;
	assert(tonumber(nodeId), &amp;quot;Given node id parameter is not a number&amp;quot;)&lt;br /&gt;
	if nodeName == &amp;quot;&amp;quot; then&lt;br /&gt;
		nodeName = nil &lt;br /&gt;
	elseif nodeName ~= nil then&lt;br /&gt;
		nodeName = mw.text.trim(nodeName)&lt;br /&gt;
	end&lt;br /&gt;
	nodeId = mw.text.trim(nodeId)&lt;br /&gt;
	if langcodeInput ~= nil then langcodeInput = string.lower(langcodeInput) end&lt;br /&gt;
	&lt;br /&gt;
	return elementText(&amp;quot;node&amp;quot;, nodeId, nodeName, toolbarSetting, langcodeInput)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- start for Template:Relation&lt;br /&gt;
function p.relation(frame)&lt;br /&gt;
	-- extracting arguments&lt;br /&gt;
	local relationId = frame.args[1]&lt;br /&gt;
	local relationName = frame.args[2]&lt;br /&gt;
	local toolbarSetting = frame.args[&amp;quot;tools&amp;quot;]&lt;br /&gt;
	local langcodeInput = frame.args[&amp;quot;lang&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	-- checking for correct parameters&lt;br /&gt;
	assert(tonumber(relationId), &amp;quot;Given relation id parameter is not a number&amp;quot;)&lt;br /&gt;
	if relationName == &amp;quot;&amp;quot; then&lt;br /&gt;
		relationName = nil &lt;br /&gt;
	elseif relationName ~= nil then&lt;br /&gt;
		relationName = mw.text.trim(relationName)&lt;br /&gt;
	end&lt;br /&gt;
	relationId = mw.text.trim(relationId)&lt;br /&gt;
	if langcodeInput ~= nil then langcodeInput = string.lower(langcodeInput) end&lt;br /&gt;
	&lt;br /&gt;
	return elementText(&amp;quot;relation&amp;quot;, relationId, relationName, toolbarSetting, langcodeInput)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- start for Template:Way&lt;br /&gt;
function p.way(frame)&lt;br /&gt;
	-- extracting arguments&lt;br /&gt;
	local wayId = frame.args[1]&lt;br /&gt;
	local wayName = frame.args[2]&lt;br /&gt;
	local toolbarSetting = frame.args[&amp;quot;tools&amp;quot;]&lt;br /&gt;
	local langcodeInput = frame.args[&amp;quot;lang&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	-- checking for correct parameters&lt;br /&gt;
	assert(tonumber(wayId), &amp;quot;Given way id parameter is not a number&amp;quot;)&lt;br /&gt;
	if wayName == &amp;quot;&amp;quot; then&lt;br /&gt;
		wayName = nil &lt;br /&gt;
	elseif wayName ~= nil then&lt;br /&gt;
		wayName = mw.text.trim(wayName)&lt;br /&gt;
	end&lt;br /&gt;
	wayId = mw.text.trim(wayId)&lt;br /&gt;
	if langcodeInput ~= nil then langcodeInput = string.lower(langcodeInput) end&lt;br /&gt;
	&lt;br /&gt;
	return elementText(&amp;quot;way&amp;quot;, wayId, wayName, toolbarSetting, langcodeInput)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Main function compiling the wiki text&lt;br /&gt;
function elementText(elementType, elementId, elementName, toolbarSetting, langcodeInput)&lt;br /&gt;
	local output = {}&lt;br /&gt;
	local elementDescription = elementType&lt;br /&gt;
	if elementType == &amp;quot;area&amp;quot; then elementType = &amp;quot;way&amp;quot; end -- non-existing area type&lt;br /&gt;
	&lt;br /&gt;
	output[1] = '&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;&amp;lt;bdi class=&amp;quot;sortkey&amp;quot; style=&amp;quot;display:none;speak:none&amp;quot;&amp;gt;'&lt;br /&gt;
    if elementName == nil then&lt;br /&gt;
        output[2] = elementId&lt;br /&gt;
    else&lt;br /&gt;
        output[2] = elementName&lt;br /&gt;
    end&lt;br /&gt;
	output[3] = '&amp;lt;/bdi&amp;gt;'&lt;br /&gt;
	&lt;br /&gt;
	if(toolbarSetting == &amp;quot;mini&amp;quot;) then &lt;br /&gt;
		output[4] = '[//osm.org/' .. elementType ..'/' .. elementId&lt;br /&gt;
		if elementName == nil then&lt;br /&gt;
			output[5] = '&amp;lt;span title=&amp;quot;browse ' .. elementDescription .. '&amp;quot;&amp;gt;' .. elementId&lt;br /&gt;
		else&lt;br /&gt;
			output[5] = '&amp;lt;span title=&amp;quot;browse ' .. elementDescription .. ' ' .. elementId&lt;br /&gt;
			 .. '&amp;quot;&amp;gt;' .. elementName&lt;br /&gt;
		end&lt;br /&gt;
		output[6] = '&amp;lt;/span&amp;gt;]'&lt;br /&gt;
	&lt;br /&gt;
	elseif (toolbarSetting == &amp;quot;short&amp;quot;) then&lt;br /&gt;
		output[4] = '&amp;lt;small&amp;gt;[//osm.org/' .. elementType .. '/' .. elementId&lt;br /&gt;
		if elementName == nil then&lt;br /&gt;
			output[5] = '&amp;lt;span title=&amp;quot;browse ' .. elementDescription .. '&amp;quot;&amp;gt;' .. elementId&lt;br /&gt;
		else&lt;br /&gt;
			output[5] = '&amp;lt;span title=&amp;quot;browse ' .. elementDescription .. ' ' .. elementId&lt;br /&gt;
			 .. '&amp;quot;&amp;gt;' .. elementName&lt;br /&gt;
		end&lt;br /&gt;
		output[6] = '&amp;lt;/span&amp;gt;]&amp;amp;nbsp;&amp;lt;tt class=&amp;quot;noprint&amp;quot; style=&amp;quot;background:#EEF&amp;quot;&amp;gt;(' ..&lt;br /&gt;
			'[//osm.org/edit?editor=id&amp;amp;' .. elementType .. '=' .. elementId .. &lt;br /&gt;
			'&amp;lt;span title=&amp;quot;iD&amp;quot;&amp;gt;i&amp;lt;/span&amp;gt;]&amp;amp;nbsp;'&lt;br /&gt;
		output[7] = '[http://localhost:8111/import?url=https://api.osm.org/api/0.6/'&lt;br /&gt;
			 .. elementType .. '/' .. elementId .. '/full &amp;lt;span title=&amp;quot;JOSM&amp;quot;&amp;gt;J&amp;lt;/span&amp;gt;]&amp;amp;nbsp;'&lt;br /&gt;
		output[8] = '[//osm.org/edit?editor=potlatch2&amp;amp;zoom=11&amp;amp;' .. elementType .. '='&lt;br /&gt;
			 .. elementId .. ' &amp;lt;span title=&amp;quot;Potlatch2&amp;quot;&amp;gt;P2&amp;lt;/span&amp;gt;]'&lt;br /&gt;
		output[9] = ')&amp;lt;/tt&amp;gt;&amp;lt;/small&amp;gt;'&lt;br /&gt;
	&lt;br /&gt;
	else&lt;br /&gt;
		output[4] = '[[File:Osm element ' .. elementDescription .. '.svg|20px|link='&lt;br /&gt;
		if langcodeInput ~= nil and langcodeInput ~= 'en' then&lt;br /&gt;
			output[5] = langcodeInput .. ':' .. string.upper(string.sub(elementDescription, 1, 1))&lt;br /&gt;
				 .. string.sub(elementDescription, 2, -1)&lt;br /&gt;
			--[[ no case distinction in page namespaces, &lt;br /&gt;
				no check for page existance for the sake of faster processing ]]--&lt;br /&gt;
		else&lt;br /&gt;
			output[5] = elementDescription&lt;br /&gt;
		end&lt;br /&gt;
		output[6] = '|' .. elementDescription .. ']]&amp;amp;nbsp;'&lt;br /&gt;
		output[7] = '[//osm.org/' .. elementType .. '/' .. elementId&lt;br /&gt;
			.. ' &amp;lt;span title=&amp;quot;browse '.. elementDescription&lt;br /&gt;
		if elementName == nil then&lt;br /&gt;
			output[8] = '&amp;quot;&amp;gt;' .. elementId&lt;br /&gt;
		else&lt;br /&gt;
			output[8] = ' ' .. elementId .. '&amp;quot;&amp;gt;' .. elementName&lt;br /&gt;
		end&lt;br /&gt;
		output[9] = '&amp;lt;/span&amp;gt;]'&lt;br /&gt;
		&lt;br /&gt;
		if toolbarSetting == &amp;quot;all&amp;quot; then&lt;br /&gt;
			local pageLanguage = langcode(langcodeInput)&lt;br /&gt;
			local translationComplete = true&lt;br /&gt;
			local transHistory = translations.translateHistory[pageLanguage]&lt;br /&gt;
			if not transHistory then&lt;br /&gt;
				translationComplete = false&lt;br /&gt;
				transHistory = translations.translateHistory['en']&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			output[10] = ' &amp;lt;small&amp;gt;([//osm.org/edit?editor=id&amp;amp;' &lt;br /&gt;
				 .. elementType .. '=' .. elementId .. ' iD] '&lt;br /&gt;
			output[11] = '[http://localhost:8111/import?url=https://api.osm.org/api/0.6/'&lt;br /&gt;
				 .. elementType .. '/' .. elementId .. '/full JOSM] '&lt;br /&gt;
			output[12] = '[//osm.org/edit?editor=potlatch2&amp;amp;zoom=11&amp;amp;'&lt;br /&gt;
				 .. elementType .. '=' .. elementId .. ' Potlatch2] '&lt;br /&gt;
			output[13] = '[http://osm.virtuelle-loipe.de/history/?type='&lt;br /&gt;
				 .. elementType .. '&amp;amp;ref=' .. elementId .. ' ' .. transHistory .. ']'&lt;br /&gt;
			if elementType == 'relation' then -- relation analysis&lt;br /&gt;
				local transAnalyse = translations.translateAnalyse[pageLanguage]&lt;br /&gt;
				if not transAnalyse then&lt;br /&gt;
					translationComplete = false&lt;br /&gt;
					transAnalyse = translations.translateAnalyse['en']&lt;br /&gt;
				end&lt;br /&gt;
				output[14] = ' [http://ra.osmsurround.org/analyze.jsp?relationId='&lt;br /&gt;
					.. elementId .. ' ' .. transAnalyse ..']'&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(output, ')&amp;lt;/small&amp;gt;')&lt;br /&gt;
			if not translationComplete then&lt;br /&gt;
				local fullEnglishName = languageName(pageLanguage)&lt;br /&gt;
				if string.len(fullEnglishName) ~= 0 then&lt;br /&gt;
					table.insert(output, '[[Category:Pages unavailable in '&lt;br /&gt;
						.. fullEnglishName .. ']] [[File:Translate.svg|x10px|link='&lt;br /&gt;
						.. 'Module:Element#Adding_a_Language|Help translate this to '&lt;br /&gt;
						.. fullEnglishName .. ']]')&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif toolbarSetting == &amp;quot;josm&amp;quot; then&lt;br /&gt;
			output[10] = ' &amp;lt;small&amp;gt;([http://localhost:8111/import?url='&lt;br /&gt;
				 .. 'https://api.openstreetmap.org/api/0.6/' .. elementType&lt;br /&gt;
			output[11] = '/' .. elementId .. '/full JOSM])&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(output, &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;) -- ends class plainlinks&lt;br /&gt;
	return tostring(table.concat(output))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- this uses the external module 'OsmPageTitleParser': &lt;br /&gt;
function langcode(langcodeInput)&lt;br /&gt;
	--[[ Priorities:&lt;br /&gt;
		1 user input&lt;br /&gt;
		2 dedicated language namespace&lt;br /&gt;
		3 language title prefix&lt;br /&gt;
		4 'en' as default&lt;br /&gt;
	]]--&lt;br /&gt;
&lt;br /&gt;
	if langcodeInput then&lt;br /&gt;
		return string.lower(langcodeInput)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local langModule = require('Module:OsmPageTitleParser')&lt;br /&gt;
	return tostring((langModule.parseTitle(mw.title.getCurrentTitle()).language):getCode())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function languageName(code)&lt;br /&gt;
	local constantsModule = mw.loadData('Module:OSM Constants')&lt;br /&gt;
	-- should be already loaded (needed by OsmPageTitleParser as well)&lt;br /&gt;
	local customLangName = constantsModule.customLangCodes[code]&lt;br /&gt;
	&lt;br /&gt;
	if customLangName ~= nil then&lt;br /&gt;
		return customLangName&lt;br /&gt;
	else&lt;br /&gt;
		return mw.language.fetchLanguageName(code, 'en')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Regionet</name></author>
	</entry>
</feed>