Редактирование: Модуль:HF/MediaNavs
Перейти к навигации
Перейти к поиску
Примечание. Ваши правки будут показаны в статье только после их проверки участником с соответствующими правами.
Правка может быть отменена. Проверьте сравнение версий ниже и нажмите «Записать страницу».
Если отменяемые вами изменения не вандализм, пожалуйста, допишите причину в описании правки.
Текущая версия | Ваш текст | ||
Строка 14: | Строка 14: | ||
-- Language functions | -- Language functions | ||
local language = mw.language.new('ru') | local language = mw.language.new('ru') | ||
--------------------------------------------------------- | --------------------------------------------------------- | ||
-- Открытые функции (вызываются из шаблона или статьи) -- | -- Открытые функции (вызываются из шаблона или статьи) -- | ||
Строка 28: | Строка 19: | ||
-- Обеспечивает кросс-медиа навигацию | -- Обеспечивает кросс-медиа навигацию | ||
function MN.MediaNav(frame) | function MN.MediaNav(frame) | ||
local iargs = getArgs(frame) | |||
return MN._MediaNav(iargs) | return MN._MediaNav(iargs) | ||
end | end | ||
Строка 36: | Строка 27: | ||
-- Обеспечивает кросс-медиа навигацию | -- Обеспечивает кросс-медиа навигацию | ||
function MN._MediaNav ( args ) | function MN._MediaNav ( args ) | ||
-- {{#invoke:HF/MediaNavs|MediaNav| | -- {{#invoke:HF/MediaNavs|MediaNav|<Категория>|<Название>|<Номер>|<Направление>|<Отображение>}} | ||
local Category = args[1] or | local Category = args[1] or nil | ||
local Name = args[2] or | assert(Category, 'No MediaNav category given') | ||
local Release = args[3] or | local Name = args[2] or nil | ||
local Direction = args[4 | assert(Name, 'No MediaNav name given') | ||
local DisplayType = args[5 | local Release = args[3] or nil | ||
assert(Name, 'No MediaNav release given') | |||
local Direction = args[4] or 0 | |||
local DisplayType = args[5] or nil | |||
local querystring = { 'mainlabel=main' } | local querystring = { 'mainlabel=main' } | ||
-- | -- эпизод мультсериала | ||
if Category == 'сезон мультсериала' then | if Category == 'сезон мультсериала' then | ||
table.insert( querystring, HF.Link( ('Категория:Сезоны мультсериала «%s»'):format(Name) ) ) | |||
querystring['default'] = Release | |||
if args['DisplayType'] == 'Number' then | |||
querystring['userparam'] = Release | |||
if | |||
querystring['userparam | |||
end | end | ||
else | else | ||
return nil | return nil | ||
end | end | ||
table.insert( querystring, HF.Link( ("Сезон номер::%s"):format( "Сезон", (tonumber(Release or nil) or 0) + (tonumber(Direction or nil) or 0) ) ) ) | |||
if Category == 'сезон мультсериала' then | |||
table.insert( querystring, HF.Link( ('Категория:Сезоны мультсериала «%s»'):format(Name) ) ) | |||
querystring['default'] = Release | |||
if args['DisplayType'] == 'Number' then | |||
querystring['userparam'] = Release | |||
end | |||
end | |||
local query = mw.smw.ask( querystring ) | local query = mw.smw.ask( querystring ) | ||
-- для каждого результата есть запись, и первое свойство должно быть пустым именем страницы, а второе - типом | -- для каждого результата есть запись, и первое свойство должно быть пустым именем страницы, а второе - типом | ||
Строка 138: | Строка 62: | ||
local o = {} | local o = {} | ||
for _,item in ipairs( query ) do | for _,item in ipairs( query ) do | ||
--MediaNav/link | -- MediaNav/link | ||
table.insert(o, | table.insert(o, | ||
HF.Link( | HF.Link( | ||
item['main']:match('%[%[([^|]*)|?'), | item['main']:match('%[%[([^|]*)|?'), | ||
querystring['userparam'] or mw.text.trim(item['main']:match('%[%[:?([^|]*)|?'):match("[^(]*")) | querystring['userparam'] or mw.text.trim(item['main']:match('%[%[:?([^|]*)|?'):match("[^(]*")) | ||
) | ) |