Модуль:Copyright

Материал из Викитеки — свободной библиотеки
Перейти к навигации Перейти к поиску
Документация Документация

Для шаблона авторских прав, в частности Шаблон:АП.

local p = {}

local r = {t = {}}
function r:add(s) table.insert(self.t, s) end
function r:add_category(s) table.insert(self.t, '[[Категория:'..s..']]') end
function r:result() return table.concat(self.t) end

-- Расчёт года перехода в ОД по закону РФ: считая 70 лет pma и с 1 января следующего года
function year70pma(year_death, year_reability, war_status)
	local year_from = tonumber(year_reability) or tonumber(year_death); if not year_from then return end
	local years_war = 0; if war_status and (mw.ustring.find(war_status, '[Уу]частник') or mw.ustring.find(war_status, '[Рр]аботник')) then years_war = 4 end
	local year_free70 = year_from + years_war + 70 + 1  -- +1 год, от 1 января следующего года
	-- mw.logObject(year_from, "yf")
	return year_free70
end
function p.year70pma(frame)
	local pargs = frame:getParent().args
	return year70pma(is(pargs['ГОД']), is(pargs['ГОДРЕАБИЛИТАЦИИ']), is(pargs['ВОВ']))
end	


-- Шаблон:АП
function p.template(frame)
	local pargs = frame:getParent().args
	local year_death = tonumber(pargs['ГОД'])
	local approximate = (pargs[1] == '?') or nil
	local war_status = is(pargs['ВОВ'])
	local year_reability =  tonumber(pargs['ГОДРЕАБИЛИТАЦИИ'])
	local year_free70 = year70pma(year_death, year_reability, war_status) 
	local year_from = year_reability or year_death
	local CURRENTYEAR = tonumber(os.date( '%Y' ))
	local NSMAIN; if mw.title.getCurrentTitle().namespace == 0 then NSMAIN = 0 end
	
	-- если год не указан
	if not year_from then
		r:add(frame:expandTemplate{ title = 'license', args = {image='Red copyright.svg', 
			text = "Публикация произведений этого автора в Викитеке возможна только с его согласия.",
			note = "См. также [[w:Википедия:Получение разрешений|Википедия:Получение разрешений]]."}})
		if NSMAIN then r:add_category("Авторы, публикация произведений которых возможна только с их согласия") end
	
	-- умер > 100 лет назад  
	elseif year_death + 100 < CURRENTYEAR then
		r:add(frame:expandTemplate{ title = 'PD-author-old' })
		
	-- 70 pma
	elseif year_free70 <= CURRENTYEAR then
		r:add(frame:expandTemplate{ title = 'АП/70' })
		if NSMAIN then r:add_category('Авторы, срок исключительных прав на произведения которых истёк в '..year_free70..' году') end
		
	-- свободно по 1917, остальное нет
	else
		r:add(frame:expandTemplate{ title = 'license', args = {image='Red copyright.svg', 
			text = [=[В&nbsp;соответствии&nbsp;со&nbsp;[[Гражданский кодекс РФ/Глава 70#Статья 1281. Срок действия исключительного права на произведение|статьёй&nbsp;1281 ГК&nbsp;РФ]] произведения этого автора, впервые опубликованные (или обнародованные) после 7 ноября 1917 года (по новому стилю) на территории [[w:Российская Федерация|Российской Федерации]] или стран, правопреемником которых является Российская Федерация ([[w:СССР|СССР]], [[w:РСФСР|РСФСР]], [[w:Советская Россия (государство)|Советская Россия]]), перейдут в&nbsp;[[Викитека:Общественное достояние|общественное достояние]] '''1&nbsp;января ]=] ..year_free70.. "&nbsp;года'''." .. p.wikilivres( is(pargs['Wikilivres']), is(pargs['ВИКИЛИВРУ']) ) }})
		
		if NSMAIN then
			r:add_category('Авторы, срок исключительных прав на произведения которых ещё не истёк')
			r:add_category('Авторы, срок исключительных прав на произведения которых истекает в '..year_free70..' году')
		end
	
	if approximate then
		r:add("\n<small>'''Примечание.''' Год смерти этого автора точно не известен и оценён как '''"..year_death.."'''.</small>")
	end	
	
	end
	return r:result()
end

function p.wikilivres(Wikilivres, Wikilivres_ru)
	local w = {t = {}}
	function w:add(s) table.insert(self.t, s) end
	function w:add_category(s) table.insert(self.t, '[[Категория:'..s..']]') end
	function w:result() return table.concat(self.t) end

	if Wikilivres then
		w:add('<br><small>')
		if Wikilivres == 'Нужно перенести' then
			w:add('Произведения этого автора должны быть удалены из Викитеки, поэтому их нужно срочно перенести на сайт [[Wikilivres:Main Page|Wikilivres]].')
			w:add_category('Авторы, чьи произведения нужно срочно перенести на сайт Wikilivres')
		else
			w:add('Содержание данной страницы временно перенесено на сайт [[Wikilivres:'..Wikilivres..'|Wikilivres]]')
			w:add_category('Авторы, чьи произведения были перенесены на сайт Wikilivres')
		end
		w:add('</small>')
	end
	if Wikilivres_ru then
		w:add('<br><small>')
		if Wikilivres_ru == 'Нужно перенести' then
			w:add('Произведения этого автора должны быть удалены из Викитеки, поэтому их нужно срочно перенести на&nbsp;сайт [[wikilivresru:|Wikilivres.ru]].')
			w:add_category('Авторы, чьи произведения нужно срочно перенести на сайт Wikilivres.ru')
		else
			w:add('Содержание данной страницы временно перенесено на&nbsp;сайт [[wikilivresru:'..Wikilivres_ru..'|Wikilivres.ru]]')
			w:add_category('Авторы, чьи произведения были перенесены на сайт Wikilivres.ru')
		end
		w:add('</small>')
	end
	return w:result()
end

-- проверка переменной, возврат её или nil если пустая
function is(var)
	if (var == '' or var == nil) then return nil  else return var end
end

return p