<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://130.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AInformation</id>
	<title>Module:Information - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://130.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AInformation"/>
	<link rel="alternate" type="text/html" href="https://130.wiki/index.php?title=Module:Information&amp;action=history"/>
	<updated>2026-10-15T19:34:54Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://130.wiki/index.php?title=Module:Information&amp;diff=3485&amp;oldid=prev</id>
		<title>闲敲棋子落灯花：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://130.wiki/index.php?title=Module:Information&amp;diff=3485&amp;oldid=prev"/>
		<updated>2026-08-03T10:23:25Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年8月3日 (一) 10:23的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key 130.wiki::diff:1.41:old-3484:rev-3485 --&gt;
&lt;/table&gt;</summary>
		<author><name>闲敲棋子落灯花</name></author>
	</entry>
	<entry>
		<id>https://130.wiki/index.php?title=Module:Information&amp;diff=3484&amp;oldid=prev</id>
		<title>2025年6月29日 (日) 14:07 Qiuwen&gt;待春</title>
		<link rel="alternate" type="text/html" href="https://130.wiki/index.php?title=Module:Information&amp;diff=3484&amp;oldid=prev"/>
		<updated>2025-06-29T14:07:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[  &lt;br /&gt;
  __  __           _       _        ___        __                            _   _             &lt;br /&gt;
 |  \/  | ___   __| |_   _| | ___ _|_ _|_ __  / _| ___  _ __ _ __ ___   __ _| |_(_) ___  _ __  &lt;br /&gt;
 | |\/| |/ _ \ / _` | | | | |/ _ (_)| || &amp;#039;_ \| |_ / _ \| &amp;#039;__| &amp;#039;_ ` _ \ / _` | __| |/ _ \| &amp;#039;_ \ &lt;br /&gt;
 | |  | | (_) | (_| | |_| | |  __/_ | || | | |  _| (_) | |  | | | | | | (_| | |_| | (_) | | | |&lt;br /&gt;
 |_|  |_|\___/ \__,_|\__,_|_|\___(_)___|_| |_|_|  \___/|_|  |_| |_| |_|\__,_|\__|_|\___/|_| |_|&lt;br /&gt;
                                                                                               &lt;br /&gt;
This module is intended to be the engine behind &amp;quot;Template:Information&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Please do not modify this code without applying the changes first at&lt;br /&gt;
&amp;quot;Module:Information/sandbox&amp;quot; and testing at &amp;quot;Module:Information/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;
-- =======================================&lt;br /&gt;
-- === Dependencies ======================&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 core    = require(&amp;#039;Module:Core&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- ==================================================&lt;br /&gt;
-- === Internal functions ===========================&lt;br /&gt;
-- ==================================================&lt;br /&gt;
&lt;br /&gt;
local function langWrapper(text, textLang) &lt;br /&gt;
-- code equivalent to https://commons.wikimedia.org/wiki/Template:Description&lt;br /&gt;
	local language = mw.language.new( textLang )&lt;br /&gt;
	local dir      = language:getDir()  &lt;br /&gt;
	local LangName = language:ucfirst(mw.language.fetchLanguageName( textLang, textLang))&lt;br /&gt;
	local str = mw.ustring.format(&amp;#039;&amp;lt;span class=&amp;quot;language %s&amp;quot;&amp;gt;&amp;lt;b&amp;gt;%s:&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;, textLang, LangName)&lt;br /&gt;
    return mw.ustring.format(&amp;#039;&amp;lt;div class=&amp;quot;fileinfo-description mw-content-%s&amp;quot; dir=&amp;quot;%s&amp;quot; lang=&amp;quot;%s&amp;quot;&amp;gt;%s %s&amp;lt;/div&amp;gt;&amp;#039;, dir, dir, textLang, str, text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local function getBareLabel(id, userLang) &lt;br /&gt;
-- code equivalent to require(&amp;quot;Module:Wikidata label&amp;quot;)._getLabel with Wikidata=- option&lt;br /&gt;
	local label, link&lt;br /&gt;
	-- build language fallback list&lt;br /&gt;
	local langList = mw.language.getFallbacksFor(userLang)&lt;br /&gt;
	table.insert(langList, 1, userLang)&lt;br /&gt;
	for _, lang in ipairs(langList) do  -- loop over language fallback list looking for label in the specific language&lt;br /&gt;
		label = &amp;#039;&amp;#039;&lt;br /&gt;
		if label then break end                    -- label found and we are done&lt;br /&gt;
	end	&lt;br /&gt;
	return label or id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local function message(name)&lt;br /&gt;
	return mw.message.new( &amp;#039;wm-license-information-&amp;#039;..name ):plain()&lt;br /&gt;
end&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 filed     ===&lt;br /&gt;
-- ====================================================================&lt;br /&gt;
local function Build_html(args)&lt;br /&gt;
	local lang = args.lang -- user&amp;#039;s language&lt;br /&gt;
	local dir  = mw.language.new( lang ):getDir()    -- get text direction&lt;br /&gt;
	local desTag = mw.ustring.format(&amp;#039;&amp;lt;span class=&amp;quot;summary fn&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;, args.pagename)&lt;br /&gt;
	local prmTag = mw.ustring.format(&amp;quot;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;（[[%s|%s]]）&amp;lt;/small&amp;gt;&amp;quot;, message(&amp;#039;permission-reusing-link&amp;#039;), &lt;br /&gt;
								 message(&amp;#039;permission-reusing-text&amp;#039;))&lt;br /&gt;
&lt;br /&gt;
	-- field specific preferences&lt;br /&gt;
	local params = {&lt;br /&gt;
		{field=&amp;#039;description&amp;#039;    , id=&amp;#039;fileinfotpl_desc&amp;#039;, tag2=desTag, td=&amp;#039;class=&amp;quot;description&amp;quot;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_fields_1&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;date&amp;#039;           , id=&amp;#039;fileinfotpl_date&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;source&amp;#039;         , id=&amp;#039;fileinfotpl_src&amp;#039;}, &lt;br /&gt;
		{field=&amp;#039;author&amp;#039;         , id=&amp;#039;fileinfotpl_aut&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;artist&amp;#039;         , id=&amp;#039;fileinfotpl_aut&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;permission&amp;#039;     , id=&amp;#039;fileinfotpl_perm&amp;#039;, tag2=prmTag },&lt;br /&gt;
		{field=&amp;#039;attribution&amp;#039;    , id=&amp;#039;fileinfotpl_attribution&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_versions&amp;#039; , id=&amp;#039;fileinfotpl_ver&amp;#039;,  tag=&amp;#039;other-versions&amp;#039;}, &lt;br /&gt;
		{field=&amp;#039;other_fields&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;a&amp;#039;, id=&amp;#039;fileinfotpl_desc&amp;#039;, tag=&amp;#039;description&amp;#039;, tag2=desTag, td=&amp;#039;class=&amp;quot;description&amp;quot;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;b&amp;#039;, id=&amp;#039;fileinfotpl_src&amp;#039;, tag=&amp;#039;source&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;c&amp;#039;, id=&amp;#039;fileinfotpl_date&amp;#039;, tag=&amp;#039;date&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;d&amp;#039;, id=&amp;#039;fileinfotpl_aut&amp;#039;, tag=&amp;#039;author&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;e&amp;#039;, id=&amp;#039;fileinfotpl_perm&amp;#039;, tag=&amp;#039;permission&amp;#039;, tag2=prmTag},&lt;br /&gt;
		{field=&amp;#039;f&amp;#039;, id=&amp;#039;fileinfotpl_ver&amp;#039;,  tag=&amp;#039;other-versions&amp;#039;},&lt;br /&gt;
	}&lt;br /&gt;
	local results = {}&lt;br /&gt;
	for _, param in ipairs(params) do&lt;br /&gt;
		local field, tag, cell1, cell2, id&lt;br /&gt;
		field = args[param.field]&lt;br /&gt;
		if param.id then -- skip &amp;quot;other fields&amp;quot; parameter&lt;br /&gt;
			if type(field) == &amp;#039;string&amp;#039; then  -- add &amp;quot;id&amp;quot; to first &amp;lt;td&amp;gt; cell only if the field is present&lt;br /&gt;
				id = mw.ustring.format(&amp;#039;id=&amp;quot;%s&amp;quot; &amp;#039;, param.id)&lt;br /&gt;
			elseif type(field) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				-- the field was initially not present, it contains only our&lt;br /&gt;
				-- warning text; flatten it so that mw.ustring.format() gets a string&lt;br /&gt;
				field = field.missing&lt;br /&gt;
			end&lt;br /&gt;
			if field or (args.demo and param.tag) then  -- skip the row if still no field&lt;br /&gt;
				tag   = message(param.tag or param.field) .. (param.tag2 or &amp;#039;&amp;#039;)&lt;br /&gt;
				cell1 = mw.ustring.format(&amp;#039;&amp;lt;td %sclass=&amp;quot;fileinfo-paramfield&amp;quot; lang=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;\n&amp;#039;, id or &amp;#039;&amp;#039;, lang, tag)&lt;br /&gt;
				cell2 = mw.ustring.format(&amp;#039;&amp;lt;td %s&amp;gt;\n%s&amp;lt;/td&amp;gt;&amp;#039;, param.td or &amp;#039;&amp;#039;, field or &amp;#039;&amp;#039;)&lt;br /&gt;
				field = mw.ustring.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;
		end&lt;br /&gt;
		table.insert(results, field)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- add table and outer layers&lt;br /&gt;
	local style = mw.ustring.format(&amp;#039;class=&amp;quot;fileinfotpl fileinfotpl-type-information vevent &amp;#039;..&lt;br /&gt;
		&amp;#039;mw-content-%s&amp;quot; style=&amp;quot;direction: %s;&amp;quot; cellpadding=&amp;quot;4&amp;quot;&amp;#039;, dir, dir)&lt;br /&gt;
	results = mw.ustring.format(&amp;#039;&amp;lt;table %s&amp;gt;\n\n%s\n&amp;lt;/table&amp;gt;\n&amp;#039;, style, table.concat(results))&lt;br /&gt;
	results = mw.ustring.format(&amp;#039;&amp;lt;div class=&amp;quot;hproduct commons-file-information-table&amp;quot;&amp;gt;\n%s\n&amp;lt;/div&amp;gt;&amp;#039;, results)&lt;br /&gt;
	return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ==================================================&lt;br /&gt;
-- === External functions ===========================&lt;br /&gt;
-- ==================================================&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- === Version of the function to be called from other LUA codes&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- _information function creates a wikicode for {{Information}} template based on&lt;br /&gt;
-- passed arguments (through &amp;quot;args&amp;quot;). Allowed fields of &lt;br /&gt;
-- &amp;quot;args&amp;quot; are : &amp;#039;description&amp;#039;, &amp;#039;date&amp;#039;, &amp;#039;permission&amp;#039;, &amp;#039;attribution&amp;#039;, &amp;#039;author&amp;#039;, &amp;#039;other_versions&amp;#039;,  &lt;br /&gt;
-- &amp;#039;source&amp;#039;,&amp;#039;other_fields&amp;#039;, &amp;#039;other_fields_1&amp;#039;, &amp;#039;demo&amp;#039; and &amp;#039;lang&amp;#039;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: Build_html&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function p._information(args)&lt;br /&gt;
&lt;br /&gt;
	local cats = &amp;#039;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	-- ============================================================================================&lt;br /&gt;
	-- === add [[Category:模板参数错误的页面]] if needed ===&lt;br /&gt;
	-- ============================================================================================&lt;br /&gt;
	local page = mw.title.getCurrentTitle()&lt;br /&gt;
	local lang = args.lang&lt;br /&gt;
	local namespace = page.namespace   -- get page namespace&lt;br /&gt;
	if namespace==6 or namespace==10 then&lt;br /&gt;
		local allowedFields = {&amp;#039;description&amp;#039;, &amp;#039;date&amp;#039;, &amp;#039;permission&amp;#039;, &amp;#039;attribution&amp;#039;, &amp;#039;author&amp;#039;, &amp;#039;artist&amp;#039;, &amp;#039;other_versions&amp;#039;,  &lt;br /&gt;
				&amp;#039;source&amp;#039;,&amp;#039;other_fields&amp;#039;, &amp;#039;other_fields_1&amp;#039;, &amp;#039;demo&amp;#039;, &amp;#039;lang&amp;#039;, &amp;#039;strict&amp;#039;, &amp;#039;a&amp;#039;, &amp;#039;b&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;d&amp;#039;, &amp;#039;e&amp;#039;, &amp;#039;f&amp;#039;}&lt;br /&gt;
		local set, badField = {}, {}&lt;br /&gt;
		for _, field in ipairs(allowedFields) 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;
				table.insert(badField, field)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if #badField&amp;gt;0 then&lt;br /&gt;
			cats = mw.ustring.format(&amp;#039;\n;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Error in [[Template:Information|{{Information}}&amp;#039;..&lt;br /&gt;
				&amp;#039; template]]: unknown parameter &amp;quot;%s&amp;quot;.&amp;lt;/span&amp;gt;&amp;#039;,  table.concat(badField,&amp;#039;&amp;quot;, &amp;quot;&amp;#039;))&lt;br /&gt;
			cats = cats .. &amp;#039;\n[[Category:模板参数错误的页面]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	args.pagename = page.text&lt;br /&gt;
&lt;br /&gt;
	-- ====================================================&lt;br /&gt;
	-- === add tracking templates and categories        === &lt;br /&gt;
	-- ====================================================&lt;br /&gt;
	-- add the template tag (all official infoboxes transclude {{Infobox template tag}} so files without that tag do not have an infobox&lt;br /&gt;
	mw.getCurrentFrame():expandTemplate{ title = &amp;#039;Infobox template tag&amp;#039; } &lt;br /&gt;
&lt;br /&gt;
	if args.a or args.b or args.c or args.d or args.e or args.f then&lt;br /&gt;
		args.strict = false&lt;br /&gt;
	end&lt;br /&gt;
	-- files are required to have at least the 3 fields below&lt;br /&gt;
	if args.strict~=false then&lt;br /&gt;
		local reqFields = {description=&amp;#039;缺少描述的文件&amp;#039;, author=&amp;#039;缺少作者信息的文件&amp;#039;, source=&amp;#039;缺少来源的文件&amp;#039;}&lt;br /&gt;
		for field, errCat in pairs(reqFields) do &lt;br /&gt;
			if args[field] and mw.ustring.match(args[field],&amp;quot;^[%s%p]+$&amp;quot;) then &lt;br /&gt;
				args[field]=nil; &lt;br /&gt;
			end -- ignore punctuation only fields&lt;br /&gt;
			if not args[field] then&lt;br /&gt;
				-- code equivalent to Template:Source missing, Template:Author missing, Template:Description missing&lt;br /&gt;
				local tag1 = &amp;#039;class=&amp;quot;boilerplate metadata cleanup&amp;quot; style=&amp;quot;text-align: center; background: #ffe; &amp;#039;..&lt;br /&gt;
					&amp;#039;margin: .75em 15%; padding: .5em; border: 1px solid #e3e3b0;&amp;#039;&lt;br /&gt;
				local tag2 = message(field..&amp;#039;-missing&amp;#039;)&lt;br /&gt;
				local tag3 = message(field..&amp;#039;-missing-request&amp;#039;)&lt;br /&gt;
				local dir  = mw.language.new( lang ):getDir()    -- get text direction&lt;br /&gt;
				args[field] = {missing =  mw.ustring.format(&amp;#039;&amp;lt;div %s direction: %s;&amp;quot; lang=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;br&amp;gt;%s&amp;lt;/div&amp;gt;&amp;#039;, tag1, dir, lang, tag2, tag3)}&lt;br /&gt;
				cats = cats .. &amp;#039;\n[[Category:&amp;#039;.. errCat ..&amp;#039;]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if namespace~=6  then &lt;br /&gt;
		cats = &amp;#039;&amp;#039; -- categories are added only to files&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return Build_html(args) .. cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- === Version of the functions to be called from template namespace&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- information function creates a wikicode for {{Information}} template based on&lt;br /&gt;
-- passed arguments (through &amp;quot;frame&amp;quot;). Allowed template&lt;br /&gt;
-- arguments are : &amp;#039;description&amp;#039;, &amp;#039;date&amp;#039;, &amp;#039;permission&amp;#039;, &amp;#039;author&amp;#039;, &amp;#039;other_versions&amp;#039;,  &lt;br /&gt;
-- &amp;#039;source&amp;#039;,&amp;#039;other_fields&amp;#039;, &amp;#039;other_fields_1&amp;#039;, &amp;#039;demo&amp;#039; and &amp;#039;lang&amp;#039;. All inputs do not &lt;br /&gt;
-- depend on capitalization and all &amp;quot;_&amp;quot; can be replaced with spaces.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: p._information&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function p.information(frame)&lt;br /&gt;
	local args = core.getArgs(frame)&lt;br /&gt;
	args.strict = true&lt;br /&gt;
	return p._information(args)	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Qiuwen&gt;待春</name></author>
	</entry>
</feed>