<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nl">
	<id>https://wikitest.nl/index.php?action=history&amp;feed=atom&amp;title=Module%3AArtwork%2Fcore</id>
	<title>Module:Artwork/core - Bewerkingsoverzicht</title>
	<link rel="self" type="application/atom+xml" href="https://wikitest.nl/index.php?action=history&amp;feed=atom&amp;title=Module%3AArtwork%2Fcore"/>
	<link rel="alternate" type="text/html" href="https://wikitest.nl/index.php?title=Module:Artwork/core&amp;action=history"/>
	<updated>2026-04-22T12:52:32Z</updated>
	<subtitle>Bewerkingsoverzicht voor deze pagina op de wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wikitest.nl/index.php?title=Module:Artwork/core&amp;diff=74113&amp;oldid=prev</id>
		<title>Colani: 1 versie geïmporteerd</title>
		<link rel="alternate" type="text/html" href="https://wikitest.nl/index.php?title=Module:Artwork/core&amp;diff=74113&amp;oldid=prev"/>
		<updated>2024-03-22T20:17:04Z</updated>

		<summary type="html">&lt;p&gt;1 versie geïmporteerd&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nieuwe pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[  &lt;br /&gt;
  __  __           _       _           _         _                      _        __                 &lt;br /&gt;
 |  \/  | ___   __| |_   _| | ___ _   / \   _ __| |___      _____  _ __| | __   / /__ ___  _ __ ___ &lt;br /&gt;
 | |\/| |/ _ \ / _` | | | | |/ _ (_) / _ \ | &amp;#039;__| __\ \ /\ / / _ \| &amp;#039;__| |/ /  / / __/ _ \| &amp;#039;__/ _ \&lt;br /&gt;
 | |  | | (_) | (_| | |_| | |  __/_ / ___ \| |  | |_ \ V  V / (_) | |  |   &amp;lt;  / / (_| (_) | | |  __/&lt;br /&gt;
 |_|  |_|\___/ \__,_|\__,_|_|\___(_)_/   \_\_|   \__| \_/\_/ \___/|_|  |_|\_\/_/ \___\___/|_|  \___|&lt;br /&gt;
                                                                                                                                                                               &lt;br /&gt;
This submodule is intended for converting inputs into html.&lt;br /&gt;
&lt;br /&gt;
Please do not modify this code without applying the changes first at &lt;br /&gt;
&amp;quot;Module:Artwork/sandbox&amp;quot; and testing at &amp;quot;Template:&lt;br /&gt;
/testcases&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Authors and maintainers:&lt;br /&gt;
* User:Jarekt - original version &lt;br /&gt;
]]&lt;br /&gt;
require(&amp;#039;strict&amp;#039;) -- used for debugging purposes as it detects cases of unintended global variables&lt;br /&gt;
local getLabel = require(&amp;quot;Module:Wikidata label&amp;quot;)._getLabel            -- used for creation of name based on Wikidata&lt;br /&gt;
local core     = require(&amp;quot;Module:Core&amp;quot;)&lt;br /&gt;
local labels   = require(&amp;quot;Module:I18n/artwork&amp;quot;)                        -- internationalization of labels&lt;br /&gt;
local bit32    = require(&amp;quot;bit32&amp;quot;)&lt;br /&gt;
local TagQS    = require(&amp;#039;Module:TagQS&amp;#039;)&lt;br /&gt;
local City     = require(&amp;quot;Module:City&amp;quot;)                                -- used to add Wikidata based links to names of places&lt;br /&gt;
local ISOdate  = require(&amp;#039;Module:ISOdate&amp;#039;)                             -- used for simple date formating&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Lazy loading function: load them only if they are needed&lt;br /&gt;
local function ObjectLocation_label()&lt;br /&gt;
	return mw.loadData(&amp;#039;Module:i18n/coordinates&amp;#039;).ObjectLocation&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function Creator(args)&lt;br /&gt;
	return require(&amp;quot;Module:Creator&amp;quot;)._creator(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function Institution(args)&lt;br /&gt;
	return require(&amp;quot;Module:Institution&amp;quot;)._institution(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ==================================================&lt;br /&gt;
-- === Internal functions ===========================&lt;br /&gt;
-- ==================================================&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local function isodate2timestamp(dateStr)&lt;br /&gt;
-- convert isodate to timestamp used by quick statements&lt;br /&gt;
	local tStamp = nil&lt;br /&gt;
	if string.match(dateStr,&amp;quot;^[0-1]%d%d%d$&amp;quot;) then               -- if YYYY  format &lt;br /&gt;
		tStamp = &amp;#039;+&amp;#039; .. dateStr .. &amp;#039;-00-00T00:00:00Z/9&amp;#039;&lt;br /&gt;
	elseif string.match(dateStr,&amp;quot;^[0-1]%d%d%d%-[0-1]%d$&amp;quot;) then      -- if YYYY-MM format &lt;br /&gt;
		tStamp = &amp;#039;+&amp;#039; .. dateStr .. &amp;#039;-00T00:00:00Z/10&amp;#039;&lt;br /&gt;
	elseif string.match(dateStr,&amp;quot;^[0-1]%d%d%d%-[0-1]%d%-[0-3]%d$&amp;quot;) then  -- if YYYY-MM-DD format &lt;br /&gt;
		tStamp = &amp;#039;+&amp;#039; .. dateStr .. &amp;#039;T00:00:00Z/11&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return tStamp&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local function if_else(Boolean, TrueStatement, FalseStatement)&lt;br /&gt;
	if Boolean then&lt;br /&gt;
		return TrueStatement&lt;br /&gt;
	else&lt;br /&gt;
		return FalseStatement&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local function empty2nil(str)&lt;br /&gt;
	if str==&amp;#039;&amp;#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	else &lt;br /&gt;
		return str&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ====================================================================&lt;br /&gt;
-- This function is responsible for producing HTML of a single row of the template&lt;br /&gt;
-- At this stage all the fields are already filed. There is either one or two fields&lt;br /&gt;
-- INPUTS:&lt;br /&gt;
-- * param1 and param2 - structures for 2 fields containing fields:&lt;br /&gt;
--    - tag      - I18n tag used for localization of the field name. Usually name of page in MediaWiki &lt;br /&gt;
--                 namespace which was imported from translatewiki.org. &lt;br /&gt;
--                 Alternative is to pass already translated field name.&lt;br /&gt;
--    - field    - field content&lt;br /&gt;
--    - id       - ID tag added to HTML&amp;#039;s &amp;lt;td&amp;gt; cell. if IDs of 2 fields are the same than we ignore the second one&lt;br /&gt;
--    - wrapper  - some fields need a &amp;lt;span class=...&amp;gt; wrapper around the field content &lt;br /&gt;
-- ====================================================================&lt;br /&gt;
local function Build_html_row(param, args)&lt;br /&gt;
	local LUT = {artwork=0, photograph=1, book=2}&lt;br /&gt;
    local demo = args.demo and bit32.extract( param.demo or 0, LUT[args.infobox])==1&lt;br /&gt;
	local field = args[param.field]&lt;br /&gt;
	if field==&amp;#039;&amp;#039; then field=nil; end&lt;br /&gt;
	if not (field or demo) then &lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if not param.id then -- &amp;quot;other fields&amp;quot; parameter&lt;br /&gt;
		return field&lt;br /&gt;
	end&lt;br /&gt;
	local tag = param.tag or &amp;#039;bad&amp;#039;&lt;br /&gt;
	if string.sub(tag,1,10) == &amp;#039;wm-license&amp;#039; then&lt;br /&gt;
		tag = mw.message.new( tag ):inLanguage(args.lang):plain() -- label message in args.lang language&lt;br /&gt;
	elseif string.match(tag, &amp;quot;^[QP]%d+$&amp;quot;) then&lt;br /&gt;
		tag = getLabel(tag, args.lang, &amp;quot;-&amp;quot;, &amp;quot;ucfirst&amp;quot;)&lt;br /&gt;
	elseif labels[tag] then&lt;br /&gt;
		tag = core.langSwitch(labels[tag], args.lang)&lt;br /&gt;
	end&lt;br /&gt;
	local cell1 = string.format(&amp;#039;&amp;lt;td id=&amp;quot;%s&amp;quot; class=&amp;quot;fileinfo-paramfield&amp;quot; lang=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;\n&amp;#039;, param.id, args.lang, tag)&lt;br /&gt;
	local cell2 = string.format(&amp;#039;&amp;lt;td&amp;gt;\n&amp;#039;.. param.wrapper ..&amp;#039;&amp;lt;/td&amp;gt;&amp;#039;, field or &amp;#039;&amp;#039;)&lt;br /&gt;
	return string.format(&amp;#039;&amp;lt;tr&amp;gt;\n%s%s\n&amp;lt;/tr&amp;gt;\n\n&amp;#039;, cell1, cell2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ====================================================================&lt;br /&gt;
-- === This function is just responsible for producing HTML of the  ===&lt;br /&gt;
-- === template. At this stage all the fields are already filled    ===&lt;br /&gt;
-- ====================================================================&lt;br /&gt;
function p.build_html(args)&lt;br /&gt;
	-- get text direction&lt;br /&gt;
	local dir = if_else(mw.language.new( args.lang ):isRTL(),&amp;#039;rtl&amp;#039;,&amp;#039;ltr&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- original_description row has a different look than other rows&lt;br /&gt;
	if args.original_description and (args.original_description_info or args.biased) then&lt;br /&gt;
		local tag1, tag2 = &amp;quot;&amp;quot;, &amp;quot;&amp;quot;&lt;br /&gt;
		if args.original_description_info then&lt;br /&gt;
			tag1 = string.format(&amp;#039;&amp;lt;div style=&amp;quot;background:#dde; font-size:86%%; direction:%s;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&amp;#039;, dir, args.original_description_info)&lt;br /&gt;
		end&lt;br /&gt;
		if args.biased then&lt;br /&gt;
			tag2 = core.langSwitch(labels.inaccurate_description, args.lang)&lt;br /&gt;
			tag2 = string.format(&amp;#039;&amp;lt;div style=&amp;quot;padding:0.5ex; margin:0 0 0.5ex 0; border: 1px solid red;&amp;quot;&amp;gt;%s: %s&amp;lt;/div&amp;gt;&amp;#039;, tag2, args.biased)&lt;br /&gt;
		end&lt;br /&gt;
		args.original_description = tag1 .. tag2 .. args.original_description&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- files with no source will be flagged&lt;br /&gt;
	if (not args.source) and (not args.source_) and (args.strict==true) and (args.namespace==6) then&lt;br /&gt;
		args.nosource = mw.getCurrentFrame():expandTemplate{ title = &amp;#039;Source missing&amp;#039; }&lt;br /&gt;
	end&lt;br /&gt;
	if args.demo or args.coordinates then&lt;br /&gt;
		labels.ObjectLocation = ObjectLocation_label()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local nCol = 2&lt;br /&gt;
	if not args.image and args.demo then&lt;br /&gt;
		args.image = args.demo_image&lt;br /&gt;
	end&lt;br /&gt;
	if args.image  then&lt;br /&gt;
		nCol = 3&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Top line &lt;br /&gt;
	local top, results = {}, {}&lt;br /&gt;
	if args.name then&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;&amp;lt;span class=&amp;quot;fn&amp;quot; id=&amp;quot;artwork&amp;quot;&amp;gt;&amp;lt;bdi&amp;gt;%s\n&amp;lt;/bdi&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;, args.name ) )&lt;br /&gt;
	end&lt;br /&gt;
	if args.linkback then -- Wikidata Link&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;[[File:Blue pencil.svg|15px|%s|link=%s]]&amp;#039;, args.linkback, args.linkback) )&lt;br /&gt;
	end	&lt;br /&gt;
	if args.wikidata then -- Wikidata Link&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;[[File:Wikidata-logo.svg|20px|wikidata:%s|link=wikidata:%s]]&amp;#039;, args.wikidata, args.wikidata) )&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;[[File:Wikidata-Reasonator_small_logo.svg|5px|reasonator:%s|link=https://reasonator.toolforge.org/test/?q=%s]]&amp;#039;, args.wikidata, args.wikidata) )&lt;br /&gt;
	end&lt;br /&gt;
	if args.wikisource then --Wikisource link&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;[[File:Wikisource-logo.svg|15px|%s|link=%s]]&amp;#039;, args.wikisource, args.wikisource) )&lt;br /&gt;
	end&lt;br /&gt;
	if args.wikiquote then --Wikiquote link&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;[[File:Wikiquote-logo.svg|15px|%s|link=%s]]&amp;#039;, args.wikiquote, args.wikiquote) )&lt;br /&gt;
	end&lt;br /&gt;
	if #top&amp;gt;0 and args.QS then -- quick_statement link to upload missing info to Wikidata (add if the row is not empty)&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;%s&amp;#039;, args.QS) )&lt;br /&gt;
	end&lt;br /&gt;
	if #top&amp;gt;0 then&lt;br /&gt;
		local line = string.format(&amp;#039;&amp;lt;th colspan=&amp;quot;%i&amp;quot; style=&amp;quot;background-color:#ccf; font-weight:bold; border:1px solid #aaa&amp;quot; text-align=&amp;quot;left&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&amp;#039;, nCol, table.concat(top, &amp;#039;&amp;amp;nbsp;&amp;#039;)) &lt;br /&gt;
		table.insert(results, string.format(&amp;#039;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;\n%s\n&amp;lt;/tr&amp;gt;\n&amp;#039;, line))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Permissions tag&lt;br /&gt;
	local tag1 = mw.message.new( &amp;quot;wm-license-information-permission&amp;quot; ):inLanguage(args.lang):plain()&lt;br /&gt;
	local tag2 = mw.message.new( &amp;quot;wm-license-information-permission-reusing-link&amp;quot; ):inLanguage(args.lang):plain()&lt;br /&gt;
	local tag3 = mw.message.new( &amp;quot;wm-license-information-permission-reusing-text&amp;quot; ):inLanguage(args.lang):plain()&lt;br /&gt;
	local permission_tag = string.format(&amp;quot;%s&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;([[%s|%s]])&amp;lt;/small&amp;gt;&amp;quot;, tag1, tag2, tag3)&lt;br /&gt;
	&lt;br /&gt;
	-- define constants for readability&lt;br /&gt;
	-- demo=art+photo+book will show that row in demo mode in {{artwork}, {{Photograph}} and {{Book}} templates&lt;br /&gt;
	local none, art, photo, book  = 0, 1, 2, 4&lt;br /&gt;
	&lt;br /&gt;
	-- add other fields &amp;#039;author_of_foreword&amp;#039;, &amp;#039;author_of_afterword&amp;#039;&lt;br /&gt;
	local param = {&lt;br /&gt;
		-- field name                   machine readable tag                         field name i18n approach                     show in demo mode?   field value wrapper&lt;br /&gt;
		{field=&amp;#039;artist&amp;#039;               , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;wm-license-artwork-artist&amp;#039;,             demo=art,            wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;author&amp;#039;               , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;wm-license-information-author&amp;#039;,         demo=          book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;editor&amp;#039;               , id=&amp;#039;fileinfotpl_book_editor&amp;#039;               , tag=&amp;#039;wm-license-book-editor&amp;#039;,                demo=          book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;translator&amp;#039;           , id=&amp;#039;fileinfotpl_book_translator&amp;#039;           , tag=&amp;#039;wm-license-book-translator&amp;#039;,            demo=          book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;illustrator&amp;#039;          , id=&amp;#039;fileinfotpl_book_illustrator&amp;#039;          , tag=&amp;#039;wm-license-book-illustrator&amp;#039;,           demo=          book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;author_of_foreword&amp;#039;   , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;P2679&amp;#039;,                                 demo=          book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;author_of_afterword&amp;#039;  , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;P2680&amp;#039;,                                 demo=          book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;architect&amp;#039;            , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;Q42973&amp;#039;,                                demo=none,           wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;designer&amp;#039;             , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;Q5322166&amp;#039;,                              demo=none,           wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;photographer&amp;#039;         , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;Q33231&amp;#039;,                                demo=    photo,      wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_fields_1&amp;#039;},&lt;br /&gt;
		-- title &amp;amp; desctiption block&lt;br /&gt;
		{field=&amp;#039;title&amp;#039;                , id=&amp;#039;fileinfotpl_art_title&amp;#039;                 , tag=&amp;#039;wm-license-artwork-title&amp;#039;,              demo=art+photo+book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;subtitle&amp;#039;             , id=&amp;#039;fileinfotpl_book_subtitle&amp;#039;             , tag=&amp;#039;wm-license-book-subtitle&amp;#039;,              demo=          book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;part_of&amp;#039;              , id=&amp;#039;fileinfotpl_art_part_of&amp;#039;               , tag=&amp;#039;P361&amp;#039;,                                  demo=art+photo+book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;series_title&amp;#039;         , id=&amp;#039;fileinfotpl_book_series-title&amp;#039;         , tag=&amp;#039;wm-license-book-series-title&amp;#039;,          demo=          book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;volume&amp;#039;               , id=&amp;#039;fileinfotpl_book_volume&amp;#039;               , tag=&amp;#039;wm-license-book-volume&amp;#039;,                demo=          book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;edition&amp;#039;              , id=&amp;#039;fileinfotpl_edition&amp;#039;                   , tag=&amp;#039;wm-license-book-edition&amp;#039;,               demo=          book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;publisher&amp;#039;            , id=&amp;#039;fileinfotpl_book_publisher&amp;#039;            , tag=&amp;#039;wm-license-book-publisher&amp;#039;,             demo=          book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;printer&amp;#039;              , id=&amp;#039;fileinfotpl_book_printer&amp;#039;              , tag=&amp;#039;wm-license-book-printer&amp;#039;,               demo=          book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;object_type&amp;#039;          , id=&amp;#039;fileinfotpl_art_object_type&amp;#039;           , tag=&amp;#039;object_type&amp;#039;,                           demo=art,            wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;genre&amp;#039;                , id=&amp;#039;fileinfotpl_art_genre&amp;#039;                 , tag=&amp;#039;Q483394&amp;#039;,                               demo=          book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;original_description&amp;#039; , id=&amp;#039;fileinfotpl_desc&amp;#039;                      , tag=&amp;#039;original_description&amp;#039;,                  demo=    photo,      wrapper=&amp;#039;&amp;lt;div class=&amp;quot;description&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;description&amp;#039;          , id=&amp;#039;fileinfotpl_desc&amp;#039;                      , tag=&amp;#039;wm-license-information-description&amp;#039;,    demo=art+photo+book, wrapper=&amp;#039;&amp;lt;div class=&amp;quot;description&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;pageoverview&amp;#039;         , id=&amp;#039;fileinfotpl_book-page-overview&amp;#039;        , tag=&amp;#039;wm-license-book-page-overview&amp;#039;,         demo=none,           wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;depicted_people&amp;#039;      , id=&amp;#039;fileinfotpl_art_depicted_people&amp;#039;       , tag=&amp;#039;depicted_people&amp;#039;,                       demo=art+photo,      wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;depicted_place&amp;#039;       , id=&amp;#039;fileinfotpl_art_depicted_place&amp;#039;        , tag=&amp;#039;depicted_place&amp;#039;,                        demo=art+photo,      wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;depicted_part&amp;#039;        , id=&amp;#039;fileinfotpl_art_depicted_part&amp;#039;         , tag=&amp;#039;P5961&amp;#039;,                                 demo=art+photo+book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;language&amp;#039;             , id=&amp;#039;fileinfotpl_book_language&amp;#039;             , tag=&amp;#039;wm-license-book-language&amp;#039;,              demo=          book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_fields_2&amp;#039;},&lt;br /&gt;
		-- date, object outside description, history, etc.&lt;br /&gt;
		{field=&amp;#039;date&amp;#039;                 , id=&amp;#039;fileinfotpl_date&amp;#039;                      , tag=&amp;#039;wm-license-information-date&amp;#039;,           demo=art+photo,      wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;publication_date&amp;#039;     , id=&amp;#039;fileinfotpl_publication_date&amp;#039;          , tag=&amp;#039;P577&amp;#039;,                                  demo=          book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;medium&amp;#039;               , id=&amp;#039;fileinfotpl_art_medium&amp;#039;                , tag=&amp;#039;wm-license-artwork-medium&amp;#039;,             demo=art+photo,      wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;dimensions&amp;#039;           , id=&amp;#039;fileinfotpl_art_dimensions&amp;#039;            , tag=&amp;#039;wm-license-artwork-dimensions&amp;#039;,         demo=art+photo,      wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;institution&amp;#039;          , id=&amp;#039;fileinfotpl_art_gallery&amp;#039;               , tag=&amp;#039;Q2668072&amp;#039;,                              demo=art+photo,      wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;department&amp;#039;           , id=&amp;#039;fileinfotpl_art_location&amp;#039;              , tag=&amp;#039;wm-license-artwork-current-location&amp;#039;,   demo=art+photo     , wrapper=&amp;#039;&amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;id&amp;#039;                   , id=&amp;#039;fileinfotpl_art_id&amp;#039;                    , tag=&amp;#039;wm-license-artwork-id&amp;#039;,                 demo=art+photo,      wrapper=&amp;#039;&amp;lt;div class=&amp;quot;identifier&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;coordinates&amp;#039;          , id=&amp;#039;fileinfo-paramfield&amp;#039;                   , tag=&amp;#039;ObjectLocation&amp;#039;,                        demo=art+photo,      wrapper=&amp;#039;%s&amp;#039;}, &lt;br /&gt;
		{field=&amp;#039;place_of_publication&amp;#039; , id=&amp;#039;fileinfotpl_book_place-of-publication&amp;#039; , tag=&amp;#039;wm-license-book-place-of-publication&amp;#039;,  demo=          book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;place_of_creation&amp;#039;    , id=&amp;#039;fileinfotpl_art_creation_place&amp;#039;        , tag=&amp;#039;place_of_creation&amp;#039;,                     demo=art,            wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;place_of_discovery&amp;#039;   , id=&amp;#039;fileinfotpl_art_discovery_place&amp;#039;       , tag=&amp;#039;place_of_discovery&amp;#039;,                    demo=art,            wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;object_history&amp;#039;       , id=&amp;#039;fileinfotpl_art_object_history&amp;#039;        , tag=&amp;#039;wm-license-artwork-object-history&amp;#039;,     demo=art,            wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;exhibition_history&amp;#039;   , id=&amp;#039;fileinfotpl_art_exhibition_history&amp;#039;    , tag=&amp;#039;exhibition_history&amp;#039;,                    demo=art+photo,      wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;credit_line&amp;#039;          , id=&amp;#039;fileinfotpl_art_credit_line&amp;#039;           , tag=&amp;#039;wm-license-artwork-credit-line&amp;#039;,        demo=art,            wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;inscriptions&amp;#039;         , id=&amp;#039;fileinfotpl_art_inscriptions&amp;#039;          , tag=&amp;#039;wm-license-artwork-inscriptions&amp;#039;,       demo=art,            wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;notes&amp;#039;                , id=&amp;#039;fileinfotpl_art_notes&amp;#039;                 , tag=&amp;#039;wm-license-artwork-notes&amp;#039;,              demo=art+photo,      wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_fields_3&amp;#039;},&lt;br /&gt;
		-- references, and sources&lt;br /&gt;
		{field=&amp;#039;references&amp;#039;           , id=&amp;#039;fileinfotpl_art_references&amp;#039;            , tag=&amp;#039;wm-license-artwork-references&amp;#039;,         demo=art+photo+book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;authority&amp;#039;            , id=&amp;#039;fileinfotpl_art_authority&amp;#039;             , tag=&amp;#039;Q36524&amp;#039;,                                demo=none,           wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;source&amp;#039;               , id=&amp;#039;fileinfotpl_src&amp;#039;                       , tag=&amp;#039;wm-license-artwork-source&amp;#039;,             demo=art,            wrapper=&amp;#039;%s&amp;#039;}, -- source/photographer&lt;br /&gt;
		{field=&amp;#039;source_&amp;#039;              , id=&amp;#039;fileinfotpl_src&amp;#039;                       , tag=&amp;#039;wm-license-information-source&amp;#039;,         demo=    photo+book, wrapper=&amp;#039;%s&amp;#039;}, -- source&lt;br /&gt;
		{field=&amp;#039;nosource&amp;#039;             , id=&amp;#039;fileinfotpl_nosrc&amp;#039;                     , tag=&amp;#039;wm-license-information-source&amp;#039;,         demo=none,           wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;permission&amp;#039;           , id=&amp;#039;fileinfotpl_perm&amp;#039;                      , tag=permission_tag,                          demo=art+photo+book, wrapper=&amp;#039;%s&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_versions&amp;#039;       , id=&amp;#039;fileinfotpl_ver&amp;#039;                       , tag=&amp;#039;wm-license-information-other-versions&amp;#039;, demo=art+photo+book, wrapper=&amp;#039;%s&amp;#039;}, &lt;br /&gt;
		{field=&amp;#039;other_fields&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;camera_coord&amp;#039;},&lt;br /&gt;
	}&lt;br /&gt;
	for i=1,#param do&lt;br /&gt;
		table.insert(results, Build_html_row(param[i], args))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- add material on the right: image, wikisource icon, etc.&lt;br /&gt;
	if args.image then &lt;br /&gt;
		if args.image_page and args.image  then -- page parameter for DjVu and PDF files&lt;br /&gt;
			args.image = string.format(&amp;#039;%s|page=%i&amp;#039;, args.image, args.image_page)&lt;br /&gt;
		end&lt;br /&gt;
		if args.infobox==&amp;#039;book&amp;#039; then -- page parameter for DjVu and PDF files&lt;br /&gt;
			tag1 = mw.message.new( &amp;#039;wm-license-book-start-this-book&amp;#039; ):inLanguage(args.lang):plain()&lt;br /&gt;
			tag2 = string.format(&amp;#039;|thumb|[[:File:%s|%s]]&amp;#039;, args.image, tag1)&lt;br /&gt;
		else&lt;br /&gt;
			tag2 = &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		local field = string.format(&amp;#039;[[File:%s|250x250px|alt=image of artwork listed in title parameter on this page|class=photo%s]]&amp;#039;, args.image, args.name or &amp;#039;&amp;#039;, tag2) &lt;br /&gt;
		local nRow = #results -- number of rows below &lt;br /&gt;
		local line = string.format(&amp;#039;&amp;lt;td rowspan=&amp;quot;%i&amp;quot; style=&amp;quot;width:200px; text-align: right;&amp;quot; id=&amp;quot;fileinfotpl_creator_image&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;wpImageAnnotatorControl wpImageAnnotatorOff&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;\n\n&amp;#039;, nRow, field) &lt;br /&gt;
		results[2] = mw.ustring.gsub(results[2], &amp;quot;&amp;lt;/tr&amp;gt;%s*$&amp;quot;, line); -- attach image section to the right side of the table, by attaching to row #2&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local templatestyles = mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;, args = { src = &amp;#039;Module:Information/styles.css&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	-- add table and outer layers&lt;br /&gt;
	local style = string.format(&amp;#039;class=&amp;quot;fileinfotpl-type-artwork vevent mw-content-%s&amp;quot; dir=&amp;quot;%s&amp;quot;&amp;#039;, dir, dir)&lt;br /&gt;
	results = string.format(&amp;#039;&amp;lt;table %s&amp;gt;\n%s\n&amp;lt;/table&amp;gt;\n&amp;#039;, style, table.concat(results)) -- combine &amp;quot;results&amp;quot;, an array of strings into a single string&lt;br /&gt;
	results = string.format(&amp;#039;&amp;lt;div class=&amp;quot;hproduct commons-file-information-table&amp;quot;&amp;gt;\n%s\n%s\n&amp;lt;/div&amp;gt;&amp;#039;, templatestyles, results)&lt;br /&gt;
	return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- === Read input &amp;quot;frame&amp;quot;, normalize input parameters (lower case, etc.)   ===&lt;br /&gt;
-- === and resolve potential aliases                                       ===&lt;br /&gt;
-- === INPUTS:                                                             ===&lt;br /&gt;
-- ===  * frame - contains input parameters passed from the template       ===&lt;br /&gt;
-- === OUTPUTS:                                                            ===&lt;br /&gt;
-- ===  * args - cleaned up inputs                                         ===&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
function p.read_input_parameters(frame)&lt;br /&gt;
	-- switch to lowercase parameters to make them case independent&lt;br /&gt;
	local args = core.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	-- resolve aliases&lt;br /&gt;
	args.permission        = args.permission       or args.license&lt;br /&gt;
	args.medium            = args.medium           or args.technique&lt;br /&gt;
	args.date              = args.date             or args.year&lt;br /&gt;
	args.department        = args.department       or args.location&lt;br /&gt;
	args.id                = args.accession_number or args.id&lt;br /&gt;
	args.object_type       = args.object_type      or args.type&lt;br /&gt;
	args.dimensions        = args.dimensions       or args.size&lt;br /&gt;
	args.object_history    = args.object_history   or args.history&lt;br /&gt;
	args.coordinates       = args.coordinates      or args.object_location&lt;br /&gt;
	args.institution       = args.institution or args.gallery or args.museum&lt;br /&gt;
	args.place_of_creation = args.place_of_creation or args.place_of_origin or args.country&lt;br /&gt;
	args.original_description = args.original_description or args.original_caption&lt;br /&gt;
	&lt;br /&gt;
	-- remove unneeded parameters&lt;br /&gt;
	args.technique, args.year, args.size,   args.gallery           = nil, nil, nil, nil&lt;br /&gt;
	args.location,  args.type, args.museum, args.accession_number  = nil, nil, nil, nil&lt;br /&gt;
	args.place_of_origin, args.country, args.history, args.license = nil, nil, nil, nil&lt;br /&gt;
	args.object_location, args.original_caption = nil, nil&lt;br /&gt;
	&lt;br /&gt;
	-- ensure the right format&lt;br /&gt;
	args.wikidata_cat = core.yesno(args.wikidata_cat, true)&lt;br /&gt;
	args.strict       = core.yesno(args.strict, true)&lt;br /&gt;
	args.noimage      = core.yesno(args.noimage, false)&lt;br /&gt;
	args.no_qs        = core.yesno(args.no_qs, false)&lt;br /&gt;
	args.no_sdc       = core.yesno(args.no_sdc, false)&lt;br /&gt;
	args.image_page   = tonumber(args.image_page)&lt;br /&gt;
	if args.language and #args.language==2 then &lt;br /&gt;
		args.language = frame:callParserFunction( &amp;quot;#language&amp;quot;, { args.language, args.lang } ) -- get  language of the written work&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
function p.verify_input_parameters(args)&lt;br /&gt;
	local cats = &amp;#039;&amp;#039; -- categories &lt;br /&gt;
	&lt;br /&gt;
	-- add [[Category:Creator templates with unknown parameter]] category, if some parameter not on the following list is used&lt;br /&gt;
	local fields = { &amp;#039;title&amp;#039;, &amp;#039;object_type&amp;#039;, &amp;#039;description&amp;#039;, &amp;#039;date&amp;#039;, &amp;#039;medium&amp;#039;, &amp;#039;permission&amp;#039;, &lt;br /&gt;
		&amp;#039;artist&amp;#039;, &amp;#039;author&amp;#039;, &amp;#039;architect&amp;#039;, &amp;#039;designer&amp;#039;, &amp;#039;illustrator&amp;#039;, &amp;#039;publisher&amp;#039;, &amp;#039;editor&amp;#039;, &amp;#039;translator&amp;#039;, &amp;#039;printer&amp;#039;, &amp;#039;photographer&amp;#039;, &lt;br /&gt;
		&amp;#039;dimensions&amp;#039;,  &amp;#039;institution&amp;#039;, &amp;#039;department&amp;#039;,  &amp;#039;references&amp;#039;, &amp;#039;object_history&amp;#039;, &amp;#039;genre&amp;#039;,&lt;br /&gt;
		&amp;#039;exhibition_history&amp;#039;, &amp;#039;credit_line&amp;#039;, &amp;#039;other_versions&amp;#039;, &amp;#039;source&amp;#039;, &amp;#039;strict&amp;#039;, &amp;#039;inscriptions&amp;#039;, &amp;#039;notes&amp;#039;, &amp;#039;linkback&amp;#039;, &amp;#039;camera_coord&amp;#039;,&lt;br /&gt;
		&amp;#039;other_fields&amp;#039;, &amp;#039;other_fields_1&amp;#039;, &amp;#039;other_fields_2&amp;#039;, &amp;#039;other_fields_3&amp;#039;,  &amp;#039;demo&amp;#039;, &amp;#039;id&amp;#039;, &amp;#039;wikidata&amp;#039;, &amp;#039;year&amp;#039;, &amp;#039;homecat&amp;#039;, &amp;#039;authority&amp;#039;,&lt;br /&gt;
		&amp;#039;place_of_creation&amp;#039;, &amp;#039;place_of_discovery&amp;#039;, &amp;#039;source_&amp;#039;, &amp;#039;wikidata_cat&amp;#039;, &amp;#039;namespace&amp;#039;, &amp;#039;lang&amp;#039;, &amp;#039;image&amp;#039;, &amp;#039;noimage&amp;#039;, &lt;br /&gt;
		&amp;#039;depicted_people&amp;#039;, &amp;#039;depicted_place&amp;#039;, &amp;#039;original_description_info&amp;#039;, &amp;#039;original_description&amp;#039;, &amp;#039;biased&amp;#039;, &amp;#039;photo_date&amp;#039;, &amp;#039;infobox&amp;#039;,&lt;br /&gt;
		&amp;#039;place_of_publication&amp;#039;, &amp;#039;publication_date&amp;#039;, &amp;#039;language&amp;#039;, &amp;#039;subtitle&amp;#039;, &amp;#039;series_title&amp;#039;, &amp;#039;volume&amp;#039;, &amp;#039;edition&amp;#039;, &amp;#039;edition_of&amp;#039;, &lt;br /&gt;
		&amp;#039;pageoverview&amp;#039;, &amp;#039;wikisource&amp;#039;, &amp;#039;wikiquote&amp;#039;, &amp;#039;demo_image&amp;#039;, &amp;#039;image_page&amp;#039;, &amp;#039;depicted_part&amp;#039;, &amp;#039;mimeType&amp;#039;, &amp;#039;num_pages&amp;#039;, &lt;br /&gt;
		&amp;#039;author_of_foreword&amp;#039;, &amp;#039;author_of_afterword&amp;#039;, &amp;#039;infobox&amp;#039;, &amp;#039;no_qs&amp;#039;, &amp;#039;no_sdc&amp;#039;, &amp;#039;part_of&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	local set = {}&lt;br /&gt;
	for _, field in ipairs(fields) do set[field] = true end&lt;br /&gt;
	for field, _ in pairs( args ) do &lt;br /&gt;
		if not set[field] then&lt;br /&gt;
			local LUT = {artwork=&amp;#039;Artwork&amp;#039;, photograph=&amp;#039;Photograph&amp;#039;, book=&amp;#039;Book&amp;#039;}&lt;br /&gt;
			local infobox = LUT[args.infobox]&lt;br /&gt;
			cats = cats .. &amp;#039;[[Category:Pages using &amp;#039; .. infobox .. &amp;#039; template with incorrect parameter]]&amp;#039;&lt;br /&gt;
			cats = cats .. string.format(&amp;#039;\n;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Error in [[Template:%s|{{%s}} template]]: unknown parameter &amp;quot;%s&amp;quot;.&amp;lt;/span&amp;gt;&amp;#039;, infobox, infobox, field)&lt;br /&gt;
		end&lt;br /&gt;
	end &lt;br /&gt;
	return cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
function p.clean_input_parameters(args)&lt;br /&gt;
	local lang = args.lang  -- user&amp;#039;s language&lt;br /&gt;
	&lt;br /&gt;
	-- === Step 1: clean up of template arguments &amp;quot;args&amp;quot;&lt;br /&gt;
	local page = mw.title.getCurrentTitle()&lt;br /&gt;
	args.namespace   = page.namespace   -- get page namespace&lt;br /&gt;
	args.url         = page:canonicalUrl()&lt;br /&gt;
	args.pagename    = page.text&lt;br /&gt;
	if args.namespace==6 then -- file namespace&lt;br /&gt;
		args.mimeType  = page.file.mimeType&lt;br /&gt;
		args.num_pages = 1&lt;br /&gt;
		if page.file.pages then&lt;br /&gt;
			args.num_pages = #page.file.pages -- in case of DjVu or PDF files count pages&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if args.date then &lt;br /&gt;
		args.year = empty2nil(ISOdate._ISOyear(args.date)) -- get year&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- for places run them through {{City}} template&lt;br /&gt;
	local fields = { &amp;#039;depicted_people&amp;#039;, &amp;#039;depicted_place&amp;#039;, &amp;#039;place_of_discovery&amp;#039;, &amp;#039;part_of&amp;#039;	}&lt;br /&gt;
	for _, field in ipairs( fields ) do &lt;br /&gt;
		if args[field] and not string.find(args[field], &amp;#039; &amp;#039;) then&lt;br /&gt;
			args[field] = City._city(args[field], lang) -- single word depicted_people will get a link&lt;br /&gt;
		end	&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	-- for dates run them through {{ISOdate}} template and add invisible QS tag if possible&lt;br /&gt;
	local fields = { &amp;#039;date&amp;#039;, &amp;#039;publication_date&amp;#039;}&lt;br /&gt;
	for _, field in ipairs( fields ) do &lt;br /&gt;
		if args[field] then &lt;br /&gt;
			local val  = isodate2timestamp(args[field])        -- if date is in YYYY, YYYY-MM or YYYY-MM-DD formats than it will be saved&lt;br /&gt;
			args[field] = ISOdate._ISOdate(args[field], lang) -- apply ISODate to function to date string to convert date in ISO format to translated date string &lt;br /&gt;
			if val then                                         -- if date is in ISO format than add an invisible tag which will be used to potentially add this date to QS used to move it to Wikidata&lt;br /&gt;
				args[field] = args[field] .. TagQS.createTag(&amp;#039;date&amp;#039;, nil, val)&lt;br /&gt;
			end		&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- collapse local {{Creator}} and {{Institution}} templates and extract item ID from them &lt;br /&gt;
	local fields = {author=&amp;#039;creator&amp;#039;, artist=&amp;#039;creator&amp;#039;, photographer=&amp;#039;creator&amp;#039;, architect=&amp;#039;creator&amp;#039;, printer=&amp;#039;creator&amp;#039;, &lt;br /&gt;
		designer=&amp;#039;creator&amp;#039;, editor=&amp;#039;creator&amp;#039;, translator=&amp;#039;creator&amp;#039;, illustrator=&amp;#039;creator&amp;#039;, institution=&amp;#039;institution&amp;#039;}&lt;br /&gt;
	for field, keyword in pairs( fields ) do &lt;br /&gt;
		if args[field] then &lt;br /&gt;
			if string.match(args[field], &amp;quot;^Q%d+$&amp;quot;) and keyword==&amp;#039;creator&amp;#039; then -- this is wikidata item&lt;br /&gt;
				args[field..&amp;#039;_id&amp;#039;] = args[field]&lt;br /&gt;
				if keyword==&amp;#039;creator&amp;#039; then&lt;br /&gt;
					args[field] = Creator({wikidata=args[field], lang=lang, collapse=1})-- create creator based on item id &lt;br /&gt;
				elseif keyword==&amp;#039;institution&amp;#039; then&lt;br /&gt;
					args[field] = Institution({wikidata=args[field], lang=lang, collapse=1})-- create institution based on item id &lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				-- collapse local {{Creator}} and {{Institution}} templates&lt;br /&gt;
				args[field] = mw.ustring.gsub (args[field], &amp;#039;table class=&amp;quot;toccolours collapsible%s*&amp;quot;&amp;#039;, &amp;#039;table class=&amp;quot;toccolours collapsible collapsed&amp;quot;&amp;#039;)&lt;br /&gt;
				-- extract item ID: retrieve the tag and grab the second component&lt;br /&gt;
				local v = mw.text.split(  TagQS.readTag(args[field], keyword) or &amp;#039;&amp;#039;, &amp;#039;|&amp;#039;, true )&lt;br /&gt;
				if v and #v&amp;gt;=2 then &lt;br /&gt;
					args[field..&amp;#039;_id&amp;#039;] = v[2]&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- in case of invisible QS tags add correct property based on which field and infobox it come from &lt;br /&gt;
	local repList = { {&amp;#039;author&amp;#039;, &amp;#039;book&amp;#039;,   &amp;#039;creator&amp;#039;, &amp;#039;P170&amp;#039;, &amp;#039;P50&amp;#039; }, &lt;br /&gt;
		{&amp;#039;artist&amp;#039;,           &amp;#039;artwork&amp;#039;,    &amp;#039;creator&amp;#039;, &amp;#039;P170&amp;#039;, &amp;#039;P170&amp;#039; },&lt;br /&gt;
		{&amp;#039;illustrator&amp;#039;,      &amp;#039;book&amp;#039;,       &amp;#039;creator&amp;#039;, &amp;#039;P170&amp;#039;, &amp;#039;P110&amp;#039;}, &lt;br /&gt;
		{&amp;#039;editor&amp;#039;,           &amp;#039;book&amp;#039;,       &amp;#039;creator&amp;#039;, &amp;#039;P170&amp;#039;, &amp;#039;P98&amp;#039; }, &lt;br /&gt;
		{&amp;#039;translator&amp;#039;,       &amp;#039;book&amp;#039;,       &amp;#039;creator&amp;#039;, &amp;#039;P170&amp;#039;, &amp;#039;P655&amp;#039;}, &lt;br /&gt;
		{&amp;#039;printer&amp;#039;,          &amp;#039;book&amp;#039;,       &amp;#039;creator&amp;#039;, &amp;#039;P170&amp;#039;, &amp;#039;P872&amp;#039;}, &lt;br /&gt;
		{&amp;#039;publication_date&amp;#039;, &amp;#039;book&amp;#039;,       &amp;#039;date&amp;#039;,     nil,   &amp;#039;P577&amp;#039;}, &lt;br /&gt;
		{&amp;#039;date&amp;#039;,             &amp;#039;photograph&amp;#039;, &amp;#039;date&amp;#039;,     nil,   &amp;#039;P571&amp;#039;}, &lt;br /&gt;
		{&amp;#039;date&amp;#039;,             &amp;#039;artwork&amp;#039;,    &amp;#039;date&amp;#039;,     nil,   &amp;#039;P571&amp;#039;}}   &lt;br /&gt;
	for _, repItem in ipairs( repList ) do&lt;br /&gt;
		local field, infobox, tag, oldP, newP = unpack(repItem)&lt;br /&gt;
		if args[field] and args.infobox==infobox then 	&lt;br /&gt;
			args[field] = TagQS.changeProperty(args[field], tag, oldP, newP) &lt;br /&gt;
			args[field] = TagQS.changeField(args[field], tag, field) &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if args.source and mw.ustring.find( args.source, &amp;#039;www%.wga%.hu&amp;#039; ) then&lt;br /&gt;
		-- code to help copy links to www.wga.hu to Wikidata&lt;br /&gt;
		args.reference_wga = string.gsub(args.source, &amp;#039;http://www%.wga%.hu&amp;#039;, &amp;#039;https://www.wga.hu&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
	local args  = p.read_input_parameters(frame)&lt;br /&gt;
	args.infobox = &amp;#039;artwork&amp;#039;&lt;br /&gt;
	local cats0 = p.verify_input_parameters(args)&lt;br /&gt;
	args  = p.clean_input_parameters(args)&lt;br /&gt;
	return p.build_html(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Colani</name></author>
	</entry>
</feed>