Модуль:Вікізьвесткі/мэдыя
Дакумэнтацыю да гэтага модуля можна стварыць у Модуль:Вікізьвесткі/мэдыя/Дакумэнтацыя
local p = {}
-- Канстанты
local contentLanguageCode = mw.getContentLanguage():getCode();
function p.formatCommonsCategory( context, options, value )
local link = 'commons:Category:' .. value
local title = value .. ' ў Вікісховішчы'
if ( options['тэкст'] and options['тэкст'] ~= '' ) then
title = options['тэкст']
end
commons = '[[' .. link .. '|' .. title .. ']]'
--Абразок Вікісховішча
if ( not options['icon'] or options['icon'] ~= '-' ) then
local icon_size = '15пкс'
if ( options['icon_size'] and options['icon_size'] ~= '' ) then
icon_size = options['icon_size']
end
commons = '[[Файл:Commons-logo.svg|' .. icon_size .. '|link=' .. link .. '|alt=Лягатып Вікісховішча]] ' .. commons
end
--Тэкст да і пасьля спасылкі
if ( options['тэкст_да'] and options['тэкст_да'] ~= '' ) then
if ( options['тэкст_да'] ~= '-' ) then
commons = options['тэкст_да'] .. ' ' .. commons
end
end
if ( options['тэкст_пасьля'] and options['тэкст_пасьля'] ~= '' ) then
if ( options['тэкст_пасьля'] ~= '-' ) then
commons = commons .. ' ' .. options['тэкст_пасьля']
end
end
return commons
end
--[[
Часовы гак, трэба дадаць config, getConfig і getCategoryByCode
у options, каб яны былі дасяжныя ў любым месцы коду.
]]
local config;
local function getCategoryByCode( code, sortkey )
if config == nil then
config = require( 'Модуль:Вікізьвесткі/канфігурацыя' );
end;
local value = config[ 'categories' ][ code ];
if not value or value == '' then
return '';
end
return '[[Category:' .. value .. ']]';
end
local function getCaption( context, options )
local caption = ''
if options.qualifiers and options.qualifiers.P2096 then
for i, qualifier in pairs( options.qualifiers.P2096 ) do
if ( qualifier
and qualifier.datavalue
and qualifier.datavalue.type == 'monolingualtext'
and qualifier.datavalue.value
and qualifier.datavalue.value.language == contentLanguageCode ) then
caption = qualifier.datavalue.value.text
break
end
end
end
if options['appendTimestamp'] and options.qualifiers and options.qualifiers.P585 and options.qualifiers.P585[1] then
local moment = context.formatValueDefault( context, options, options.qualifiers.P585[1].datavalue )
if not caption or caption == '' then
caption = moment
else
caption = caption .. ', ' .. moment
end
end
local localValue = '';
if options[ 'value' ] and options[ 'value' ] ~= '' then
localValue = options[ 'value' ];
end
local localCaption = '';
if options[ 'caption' ] and options[ 'caption' ] ~= '' then
localCaption = options[ 'caption' ];
end
if localValue ~= '' then
caption = localCaption;
end
local formattedCaption = ''
if caption ~= '' then
formattedCaption = context.wrapQualifier( caption, 'P2096', { class = 'media-caption', style = 'display:block' } );
end
if localValue == '' and localCaption ~= '' then
formattedCaption = formattedCaption .. getCategoryByCode( 'media-contains-local-caption' )
if options.frame:preprocess('{{REVISIONID}}') == '' then
formattedCaption = formattedCaption .. '<span class="error" style="font-size:94%;">Лякальны подпіс не выкарыстоўваецца, бо выява бярэцца зь Вікізьвестак</span>'
end
end
return caption, formattedCaption
end
function p.formatCommonsMediaValue( context, options, value )
local image = value;
local caption, formattedCaption = getCaption( context, options )
if not string.find( value, '[%[%]%{%}]' ) and not string.find( value, 'UNIQ%-%-imagemap' ) then
-- калі ў value адсутнічае вікікод ці imagemap, тады вікіфікуем імя файлу
-- шукаем слова imagemap у радку, бо ўстаўляецца замяшчальнік: [[PHAB:T28213]]
image = '[[Файл:' .. value .. '|frameless';
if options[ 'border' ] and options[ 'border' ] ~= '' then
image = image .. '|border';
end
local size = options[ 'size' ];
if size and size ~= '' then
if not string.match( size, 'px$' )
and not string.match( size, 'пкс$' ) -- TODO: выкарыстаць пераклад для мовы вікі
then
size = size .. 'пкс'
end
else
size = fileDefaultSize;
end
image = image .. '|' .. size;
if options[ 'alt' ] and options[ 'alt' ] ~= '' then
image = image .. '|alt=' .. options[ 'alt' ];
end
if caption ~= '' then
image = image .. '|' .. caption
end
image = image .. ']]';
if formattedCaption ~= '' then
image = image .. '<br>' .. formattedCaption;
end
else
image = image .. formattedCaption .. getCategoryByCode( 'media-contains-markup' );
end
if options.entity and options.fixdouble then
local page = mw.title.getCurrentTitle()
local txt = page:getContent()
if txt and txt:match(':' .. value) and mw.title.getCurrentTitle():inNamespace(0) then
if options.frame:preprocess('{{REVISIONID}}') == '' then
image = image .. '<span class="error">Гэтая выява паўтараецца ніжэй у тэксьце артыкулу; калі ласка, выдаліце адну з копіяў (ня страціўшы пры гэтым подпісу)</span>'
end
image = image .. getCategoryByCode( 'media-contains-local-double' )
end
end
return image
end
function p.formatAudioFile( context, options, statement )
if (not context) then error('кантэкст не пазначаны') end;
if (not options) then error('налады не пазначаныя') end;
if (not statement) then error('сьцьверджаньне не пазначанае') end;
local args = {}
if not statement.qualifiers or not statement.qualifiers['P51'] then
return '' -- няма аўдыё файлу
end
if statement.qualifiers and statement.qualifiers['P51'] then
args['аўдыёфайл_'] = context.formatSnak( options, statement.qualifiers['P51'][1] )
end
local res = options.frame:expandTemplate{ title = 'Краіна2/Гімн/Аўдыё', args = args };
return res
end
return p