<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://playzone.in.ua/wiki/mc//index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F</id>
		<title>Модуль:Таблица обновления - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://playzone.in.ua/wiki/mc//index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F"/>
		<link rel="alternate" type="text/html" href="https://playzone.in.ua/wiki/mc//index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F&amp;action=history"/>
		<updated>2026-05-09T10:25:04Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.28.3</generator>

	<entry>
		<id>https://playzone.in.ua/wiki/mc//index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=13380&amp;oldid=prev</id>
		<title>Softer: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://playzone.in.ua/wiki/mc//index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=13380&amp;oldid=prev"/>
				<updated>2017-01-17T22:27:23Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style='vertical-align: top;' lang='ru'&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 22:27, 17 января 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan='2' style='text-align: center;' lang='ru'&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Softer</name></author>	</entry>

	<entry>
		<id>https://playzone.in.ua/wiki/mc//index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=13379&amp;oldid=prev</id>
		<title>NickTheRed37 в 08:51, 21 августа 2016</title>
		<link rel="alternate" type="text/html" href="https://playzone.in.ua/wiki/mc//index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=13379&amp;oldid=prev"/>
				<updated>2016-08-21T08:51:58Z</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;p = {}&lt;br /&gt;
&lt;br /&gt;
p.synctableMigration = function(f) -- переход от старой модели «Синхронизационная таблица»&lt;br /&gt;
	local args = f.args or f&lt;br /&gt;
	if f == mw.getCurrentFrame() and args[1] == nil then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local output = {}&lt;br /&gt;
	table.insert(output, '&amp;lt;pre&amp;gt;\nreturn {\n')&lt;br /&gt;
	&lt;br /&gt;
	for k, v in ipairs(args) do&lt;br /&gt;
		local articleName, originalName, status, assignedUser, syncDay, syncMonth, syncYear, baseRevEn, baseRevRu = v:match(&amp;quot;([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)&amp;quot;) &lt;br /&gt;
		baseRevRu = mw.text.trim(baseRevRu)&lt;br /&gt;
		&lt;br /&gt;
		table.insert(output, '\t{\n')&lt;br /&gt;
		table.insert(output, ('\t\t[&amp;quot;оригинал&amp;quot;] = &amp;quot;%s&amp;quot;,\n'):format(originalName))&lt;br /&gt;
		table.insert(output, ('\t\t[&amp;quot;перевод&amp;quot;] = &amp;quot;%s&amp;quot;,\n'):format(articleName))&lt;br /&gt;
		table.insert(output, ('\t\t[&amp;quot;статус&amp;quot;] = &amp;quot;%s&amp;quot;,\n'):format(status))&lt;br /&gt;
		table.insert(output, '\t\t[&amp;quot;приоритет&amp;quot;] = 0.5,\n')&lt;br /&gt;
		&lt;br /&gt;
		if (assignedUser == &amp;quot;—&amp;quot;) then&lt;br /&gt;
			table.insert(output, '\t\t[&amp;quot;закреплено за&amp;quot;] = nil,\n')&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(output, ('\t\t[&amp;quot;закреплено за&amp;quot;] = &amp;quot;%s&amp;quot;,\n'):format(assignedUser))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if (syncDay == &amp;quot;—&amp;quot;) then&lt;br /&gt;
			table.insert(output, '\t\t[&amp;quot;дата обновления&amp;quot;] = nil,\n')&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(output, ('\t\t[&amp;quot;дата обновления&amp;quot;] = { [&amp;quot;день&amp;quot;] = %s, [&amp;quot;месяц&amp;quot;] = %s, [&amp;quot;год&amp;quot;] = %s },\n'):format(syncDay, syncMonth, syncYear))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if (baseRevEn == &amp;quot;—&amp;quot;) then&lt;br /&gt;
			table.insert(output, '\t\t[&amp;quot;версия оригинала&amp;quot;] = nil,\n')&lt;br /&gt;
			table.insert(output, '\t\t[&amp;quot;версия перевода&amp;quot;] = nil,\n')&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(output, ('\t\t[&amp;quot;версия оригинала&amp;quot;] = %s,\n'):format(baseRevEn))&lt;br /&gt;
			table.insert(output, ('\t\t[&amp;quot;версия перевода&amp;quot;] = %s,\n'):format(baseRevRu))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(output, '\t\t[&amp;quot;комментарий&amp;quot;] = nil\n')&lt;br /&gt;
		&lt;br /&gt;
		table.insert(output, '\t},\n')&lt;br /&gt;
		&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(output, '}\n&amp;lt;/pre&amp;gt;\n')&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.updateTable = function(f)&lt;br /&gt;
	local args = f.args or f&lt;br /&gt;
	if f == mw.getCurrentFrame() and args[1] == nil then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local statuses = {&lt;br /&gt;
		[&amp;quot;не начато&amp;quot;] = {&amp;quot;FFCCCC&amp;quot;, &amp;quot;CC2929&amp;quot;, &amp;quot;Обновление не проводилось&amp;quot;, 0},&lt;br /&gt;
		[&amp;quot;в процессе&amp;quot;] = {&amp;quot;FFFF99&amp;quot;, &amp;quot;666614&amp;quot;, &amp;quot;Страница закреплена за участником&amp;quot;, 0},&lt;br /&gt;
		[&amp;quot;подтверждение&amp;quot;] = {&amp;quot;CCCCFF&amp;quot;, &amp;quot;2929CC&amp;quot;, &amp;quot;Требуется подтверждение обновления&amp;quot;, 0},&lt;br /&gt;
		[&amp;quot;частично&amp;quot;] = {&amp;quot;CCFF99&amp;quot;, &amp;quot;3D6614&amp;quot;, &amp;quot;Обновление завершено (по мере возможности)&amp;quot;, 0},&lt;br /&gt;
		[&amp;quot;завершено&amp;quot;] = {&amp;quot;99FF99&amp;quot;, &amp;quot;146614&amp;quot;, &amp;quot;Обновление завершено&amp;quot;, 0},&lt;br /&gt;
		[&amp;quot;устарело&amp;quot;] = {&amp;quot;FFCC99&amp;quot;, &amp;quot;995B1F&amp;quot;, &amp;quot;Требуется повторное обновление&amp;quot;, 0},&lt;br /&gt;
		[&amp;quot;сильно устарело&amp;quot;] = {&amp;quot;CC0000&amp;quot;, &amp;quot;FFFFFF&amp;quot;, &amp;quot;Требуется срочное повторное обновление!&amp;quot;, 0},&lt;br /&gt;
		[&amp;quot;неизвестно&amp;quot;] = {&amp;quot;CCCCCC&amp;quot;, &amp;quot;666666&amp;quot;, &amp;quot;Неизвестно или ошибочный статус&amp;quot;, 0}&lt;br /&gt;
	}&lt;br /&gt;
	local total = 0&lt;br /&gt;
	local tStatusOrder = {&amp;quot;не начато&amp;quot;, &amp;quot;в процессе&amp;quot;, &amp;quot;подтверждение&amp;quot;, &amp;quot;частично&amp;quot;, &amp;quot;завершено&amp;quot;, &amp;quot;устарело&amp;quot;, &amp;quot;сильно устарело&amp;quot;, &amp;quot;неизвестно&amp;quot;}&lt;br /&gt;
	&lt;br /&gt;
	local priorityNames = {&lt;br /&gt;
		{function(p) return p &amp;gt;= 0.95 end, &amp;quot;Срочный&amp;quot;},&lt;br /&gt;
		{function(p) return p &amp;gt;= 0.8 and p &amp;lt; 0.95 end, &amp;quot;Очень высокий&amp;quot;},&lt;br /&gt;
		{function(p) return p &amp;gt;= 0.65 and p &amp;lt; 0.8 end, &amp;quot;Высокий&amp;quot;},&lt;br /&gt;
		{function(p) return p &amp;gt; 0.55 and p &amp;lt; 0.65 end, &amp;quot;Выше среднего&amp;quot;},&lt;br /&gt;
		{function(p) return p &amp;gt;= 0.45 and p &amp;lt;= 0.55 end, &amp;quot;Средний&amp;quot;},&lt;br /&gt;
		{function(p) return p &amp;gt; 0.35 and p &amp;lt; 0.45 end, &amp;quot;Ниже среднего&amp;quot;},&lt;br /&gt;
		{function(p) return p &amp;gt; 0.2 and p &amp;lt;= 0.35 end, &amp;quot;Низкий&amp;quot;},&lt;br /&gt;
		{function(p) return p &amp;gt; 0.05 and p &amp;lt;= 0.2 end, &amp;quot;Очень низкий&amp;quot;},&lt;br /&gt;
		{function(p) return p &amp;lt;= 0.05 end, &amp;quot;Минимальный&amp;quot;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local output = {}&lt;br /&gt;
	table.insert(output, '{|class=&amp;quot;wikitable sortable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%; text-align: center&amp;quot;\n!colspan=&amp;quot;8&amp;quot;|')&lt;br /&gt;
	local content = {}&lt;br /&gt;
	&lt;br /&gt;
	if not mw.title.new(args[1]).exists then&lt;br /&gt;
		return '&amp;lt;strong class=error&amp;gt;Модуль [[' .. args[1] .. ']] отсутствует. Требуется его создать.&amp;lt;/strong&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local updatetable = mw.loadData(args[1])&lt;br /&gt;
	&lt;br /&gt;
	for index, value in ipairs(updatetable) do&lt;br /&gt;
		local originalName = value[&amp;quot;оригинал&amp;quot;]&lt;br /&gt;
		local translationName = value[&amp;quot;перевод&amp;quot;]&lt;br /&gt;
		local status = value[&amp;quot;статус&amp;quot;]&lt;br /&gt;
		local priority = value[&amp;quot;приоритет&amp;quot;]&lt;br /&gt;
		local assignee = value[&amp;quot;закреплено за&amp;quot;]&lt;br /&gt;
		local updateDate = value[&amp;quot;дата обновления&amp;quot;]&lt;br /&gt;
		local isNotTranslation = value[&amp;quot;не перевод&amp;quot;]&lt;br /&gt;
		local originalRevision = value[&amp;quot;версия оригинала&amp;quot;]&lt;br /&gt;
		local translationRevision = value[&amp;quot;версия перевода&amp;quot;]&lt;br /&gt;
		local comment = value[&amp;quot;комментарий&amp;quot;]&lt;br /&gt;
		&lt;br /&gt;
		if isNotTranslation then&lt;br /&gt;
			table.insert(content, (&amp;quot;|-\n|[[%s]]\n|''(не перевод)''\n&amp;quot;):format(translationName))&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(content, (&amp;quot;|-\n|[[%s]]\n|[[:en:%s]]\n&amp;quot;):format(translationName, originalName))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local actualStatus&lt;br /&gt;
		if not statuses[status] then&lt;br /&gt;
			actualStatus = &amp;quot;неизвестно&amp;quot;&lt;br /&gt;
		elseif status == &amp;quot;частично&amp;quot; or status == &amp;quot;завершено&amp;quot; then&lt;br /&gt;
			local daysSinceUpdate = math.floor(os.difftime(os.time(), os.time({&lt;br /&gt;
				year=tonumber(updateDate[&amp;quot;год&amp;quot;]),&lt;br /&gt;
				month=tonumber(updateDate[&amp;quot;месяц&amp;quot;]),&lt;br /&gt;
				day=tonumber(updateDate[&amp;quot;день&amp;quot;])&lt;br /&gt;
			})) / 86400)&lt;br /&gt;
			&lt;br /&gt;
			if daysSinceUpdate &amp;gt;= 90 then&lt;br /&gt;
				actualStatus = &amp;quot;сильно устарело&amp;quot;&lt;br /&gt;
			elseif daysSinceUpdate &amp;gt;= 30 then&lt;br /&gt;
				actualStatus = &amp;quot;устарело&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				actualStatus = status&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			actualStatus = status&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		statusTable = statuses[actualStatus]&lt;br /&gt;
		statusTable[4] = statusTable[4] + 1&lt;br /&gt;
		table.insert(content, ('|style=&amp;quot;background: #%s; color: #%s&amp;quot;|%s\n'):format(statusTable[1], statusTable[2], statusTable[3]))&lt;br /&gt;
		&lt;br /&gt;
		local priorityColorRed = priority &amp;gt; 0.5 and 255 or math.floor(2 * priority * 255)&lt;br /&gt;
		local priorityColorGreen = priority &amp;lt; 0.5 and 255 or 255 - math.floor(2 * (priority - 0.5) * 255)&lt;br /&gt;
		local priorityColor = (&amp;quot;rgb(%d, %d, 0)&amp;quot;):format(priorityColorRed, priorityColorGreen)&lt;br /&gt;
		local priorityName&lt;br /&gt;
		for index2, value2 in ipairs(priorityNames) do&lt;br /&gt;
			if value2[1](priority) then&lt;br /&gt;
				priorityName = value2[2]&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(content, ('|style=&amp;quot;background: %s&amp;quot; data-sort-value=&amp;quot;%s&amp;quot;|%s\n'):format(priorityColor, priority, priorityName))&lt;br /&gt;
		&lt;br /&gt;
		if not assignee then&lt;br /&gt;
			table.insert(content, '|—\n')&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(content, ('|[[User:%s|%s]]\n'):format(assignee, assignee))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not updateDate then&lt;br /&gt;
			table.insert(content, '|—\n')&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(content, ('|%s.%s.%s\n'):format(updateDate[&amp;quot;день&amp;quot;], updateDate[&amp;quot;месяц&amp;quot;], updateDate[&amp;quot;год&amp;quot;]))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if isNotTranslation then&lt;br /&gt;
			table.insert(content, (&amp;quot;|[[Special:Diff/%s/0|Страница здесь]] ''(не перевод)''\n&amp;quot;):format(translationRevision))&lt;br /&gt;
		elseif not originalRevision then&lt;br /&gt;
			table.insert(content, '|—\n')&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(content, ('|[[:en:Special:Diff/%s/0|Оригинал]], [[Special:Diff/%s/0|перевод]]\n'):format(tostring(originalRevision), tostring(translationRevision)))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not comment then&lt;br /&gt;
			table.insert(content, '|—\n')&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(content, ('|%s\n'):format(comment))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local tStatuses = {}&lt;br /&gt;
	for i, v in ipairs(tStatusOrder) do&lt;br /&gt;
		local statusCount = statuses[v][4]&lt;br /&gt;
		table.insert(tStatuses, v .. ': ' .. statusCount)&lt;br /&gt;
		total = total + statusCount&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(output, '\n&amp;lt;table style=&amp;quot;width: 80%; line-height: 50%; border: 1px solid gray; margin: 0.5em 10%; border-collapse: collapse&amp;quot; title=&amp;quot;' .. table.concat(tStatuses, ', ') .. '&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;')&lt;br /&gt;
	local tStatusCells = {}&lt;br /&gt;
	for i, v in ipairs(tStatusOrder) do&lt;br /&gt;
		local statusCount = statuses[v][4]&lt;br /&gt;
		if statusCount ~= 0 then&lt;br /&gt;
			table.insert(tStatusCells, '&amp;lt;td style=&amp;quot;background-color: #' .. statuses[v][1] .. '; width: ' .. math.floor((statusCount/total) * 10000) / 100 .. '%&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(output, table.concat(tStatusCells) .. '&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;')&lt;br /&gt;
	table.insert(output, '\n|-\n!Страница здесь\n!Страница-оригинал\n!Статус\n!Приоритет\n!Закреплено за\n!Дата обновления\n!Базовые версии\n!Комментарий\n')&lt;br /&gt;
	table.insert(output, table.concat(content))&lt;br /&gt;
	table.insert(output, '|}')&lt;br /&gt;
	table.insert(output, ('&amp;lt;small&amp;gt;\'\'Таблица сгенерирована функцией &amp;lt;code&amp;gt;updateTable&amp;lt;/code&amp;gt; модуля «[[Модуль:Таблица обновления|Таблица обновления]]» на основе данных из страницы [[%s]].\'\'&amp;lt;/small&amp;gt;'):format(args[1]))&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>NickTheRed37</name></author>	</entry>

	</feed>