<br />
<b>Deprecated</b>:  Use of MediaWiki\Parser\Parser::$tabsData was deprecated in MediaWiki 1.42. [Called from Tabs::init in /var/www/html/extensions/Tabs/includes/Tabs.php at line 35] in <b>/var/www/html/includes/debug/MWDebug.php</b> on line <b>372</b><br />
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.siberiaserver.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3APageHero</id>
	<title>Модуль:PageHero - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.siberiaserver.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3APageHero"/>
	<link rel="alternate" type="text/html" href="https://wiki.siberiaserver.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:PageHero&amp;action=history"/>
	<updated>2026-05-17T13:30:47Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.siberiaserver.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:PageHero&amp;diff=8402&amp;oldid=prev</id>
		<title>M 9SCO: Новая страница: «-- Module:PageHero -- Generates hero header data for SiberiaSkin. -- Usage: {{#invoke:PageHero|hero|kicker=...|title-before=...|...}}  local p = {}  -- Split a string by newline, trim each part, skip empty local function splitLines( s ) 	local result = {} 	for line in s:gmatch( &#039;[^\n]+&#039; ) do 		local trimmed = mw.text.trim( line ) 		if trimmed ~= &#039;&#039; then 			result[#result + 1] = trimmed 		end 	end 	return result end  function p.hero( frame ) 	local args = fra...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.siberiaserver.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:PageHero&amp;diff=8402&amp;oldid=prev"/>
		<updated>2026-05-17T08:15:33Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «-- Module:PageHero -- Generates hero header data for SiberiaSkin. -- Usage: {{#invoke:PageHero|hero|kicker=...|title-before=...|...}}  local p = {}  -- Split a string by newline, trim each part, skip empty local function splitLines( s ) 	local result = {} 	for line in s:gmatch( &amp;#039;[^\n]+&amp;#039; ) do 		local trimmed = mw.text.trim( line ) 		if trimmed ~= &amp;#039;&amp;#039; then 			result[#result + 1] = trimmed 		end 	end 	return result end  function p.hero( frame ) 	local args = fra...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Module:PageHero&lt;br /&gt;
-- Generates hero header data for SiberiaSkin.&lt;br /&gt;
-- Usage: {{#invoke:PageHero|hero|kicker=...|title-before=...|...}}&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Split a string by newline, trim each part, skip empty&lt;br /&gt;
local function splitLines( s )&lt;br /&gt;
	local result = {}&lt;br /&gt;
	for line in s:gmatch( &amp;#039;[^\n]+&amp;#039; ) do&lt;br /&gt;
		local trimmed = mw.text.trim( line )&lt;br /&gt;
		if trimmed ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			result[#result + 1] = trimmed&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.hero( frame )&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	-- fall back to parent (template) args&lt;br /&gt;
	if not args.kicker then&lt;br /&gt;
		args = frame:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local accent = args[&amp;#039;accent-color&amp;#039;] or &amp;#039;#ff6677&amp;#039;&lt;br /&gt;
	local titleBefore = mw.text.trim( args[&amp;#039;title-before&amp;#039;] or &amp;#039;&amp;#039; )&lt;br /&gt;
	local titleAccent = mw.text.trim( args[&amp;#039;title-accent&amp;#039;] or &amp;#039;&amp;#039; )&lt;br /&gt;
	local titleAfter  = mw.text.trim( args[&amp;#039;title-after&amp;#039;] or &amp;#039;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	-- Hidden data div (consumed by JS)&lt;br /&gt;
	local out = &amp;#039;&amp;lt;div class=&amp;quot;ss-hero-data&amp;quot;&amp;#039;&lt;br /&gt;
	if args.kicker then&lt;br /&gt;
		out = out .. &amp;#039; data-kicker=&amp;quot;&amp;#039; .. mw.text.trim( args.kicker ) .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if args.lede then&lt;br /&gt;
		out = out .. &amp;#039; data-lede=&amp;quot;&amp;#039; .. mw.text.trim( args.lede ) .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	out = out .. &amp;#039; data-accent=&amp;quot;&amp;#039; .. accent .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
	if titleBefore ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		out = out .. &amp;#039; data-title-before=&amp;quot;&amp;#039; .. titleBefore .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if titleAccent ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		out = out .. &amp;#039; data-title-accent=&amp;quot;&amp;#039; .. titleAccent .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if titleAfter ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		out = out .. &amp;#039; data-title-after=&amp;quot;&amp;#039; .. titleAfter .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	out = out .. &amp;#039;&amp;gt;&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- Dossier panel (if header provided)&lt;br /&gt;
	if args[&amp;#039;dossier-header&amp;#039;] then&lt;br /&gt;
		out = out .. &amp;#039;&amp;lt;div class=&amp;quot;ss-hero-dossier&amp;quot;&amp;gt;\n&amp;#039;&lt;br /&gt;
		out = out .. &amp;#039;&amp;lt;div class=&amp;quot;ss-dossier-stripe&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
		out = out .. &amp;#039;&amp;lt;div class=&amp;quot;ss-dossier-head&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
		out = out .. &amp;#039;&amp;lt;span&amp;gt;&amp;#039; .. mw.text.trim( args[&amp;#039;dossier-header&amp;#039;] ) .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		if args[&amp;#039;dossier-level&amp;#039;] then&lt;br /&gt;
			out = out .. &amp;#039;&amp;lt;span class=&amp;quot;ss-dossier-level&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
				.. mw.text.trim( args[&amp;#039;dossier-level&amp;#039;] ) .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. &amp;#039;&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		-- Rows: key and val are multi-line strings, paired by line number&lt;br /&gt;
		local rawKey = args.key or &amp;#039;&amp;#039;&lt;br /&gt;
		local rawVal = args.val or &amp;#039;&amp;#039;&lt;br /&gt;
		local keys = splitLines( rawKey )&lt;br /&gt;
		local vals = splitLines( rawVal )&lt;br /&gt;
		local count = math.max( #keys, #vals )&lt;br /&gt;
&lt;br /&gt;
		if count &amp;gt; 0 then&lt;br /&gt;
			out = out .. &amp;#039;&amp;lt;div class=&amp;quot;ss-dossier-body&amp;quot;&amp;gt;\n&amp;#039;&lt;br /&gt;
			for i = 1, count do&lt;br /&gt;
				local k = keys[i] or &amp;#039;&amp;#039;&lt;br /&gt;
				local v = vals[i] or &amp;#039;&amp;#039;&lt;br /&gt;
				out = out .. &amp;#039;&amp;lt;div class=&amp;quot;ss-ds-row&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
				out = out .. &amp;#039;&amp;lt;div class=&amp;quot;ss-ds-k&amp;quot;&amp;gt;&amp;#039; .. k .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
				out = out .. &amp;#039;&amp;lt;div class=&amp;quot;ss-ds-v&amp;quot;&amp;gt;&amp;#039; .. v .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
				out = out .. &amp;#039;&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			out = out .. &amp;#039;&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		out = out .. &amp;#039;&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>M 9SCO</name></author>
	</entry>
</feed>