Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Этот модуль оценен как бета-версия и готов к широкому использованию. Он все еще новый, и его следует использовать с осторожностью, чтобы гарантировать ожидаемые результаты. |
использование
В английской Википедии этот модуль вызывается , см. Документацию по этому шаблону для инструкций по использованию.{{Attached KML}}
Настроить на другой вики
- Создать шаблон и модуль
- Импортируйте этот модуль в эту вики (или скопируйте код, указав авторство в сводке редактирования). Дайте модулю имя, которое имеет смысл на языке этой вики (далее именуемое MODULENAME )
- Создайте шаблон (который, вероятно, должен иметь то же имя, что и модуль, но упоминается здесь как TEMPLATENAME ), содержащий код
<includeonly>{{#invoke:MODULENAME|main}}</includeonly><noinclude>{{TEMPLATENAME|demo=yes}}{{Documentation}}</noinclude>
- В Викиданных добавьте шаблон в d: Q6690822 и модуль в d: Q26689774.
- Локализуйте модуль. Отредактируйте верхние биты модуля между комментариями
-- ##### Localisation (L10n) settings #####
и-- #### End of L10n settings ####
, заменив значения между"
"
символами локальными значениями (при необходимости) - Создайте категории, определенные в локализации модуля. Их следует сделать скрытыми категориями, либо путем включения шаблона Шаблон: Скрытая категория (Q5879327) , либо путем прямого включения
__HIDDENCAT__
волшебного слова . - Добавьте документацию в шаблон (например, переведя Template: Attached KML / doc , изменив при необходимости в соответствии с любыми локализациями, сделанными на предыдущем шаге) и в модуль (пожалуйста, передайте / переведите эти инструкции, чтобы википедия, читающая вашу вики, но не на английском языке Википедия также может настроить модуль и шаблон на другой вики).
Категории отслеживания
- Категория: Прикрепленные ошибки KML (13) - отслеживает ошибки: malformed_qid, bad_qid, no_item, bad_from, error_nokml
- Категория: Статьи, использующие KML из Викиданных (9 500) - отслеживает статьи в основном пространстве с использованием KML из Викиданных.
- Категория: статьи, использующие KML не из Викиданных (1,932) - отслеживает статьи из Викиданных, не использующие KML.
- Примечание. Первоначально написано в английской Википедии как [[w: en: Module: Attached_KML]]- ##### Настройки локализации (L10n) #####местный L10n = {}- Имена параметров шаблона- (заменить значения в кавычках на имена локальных параметров)L10n . para = {display = "дисплей" ,from = "из" ,header = "заголовок" ,title = "название" ,wikidata = "викиданные" ,demo = "демо" ,}- Прочие настройки конфигурацииL10n . config = {inline_format = "box" , - управляет форматом, используемым для встроенного отображения, может иметь значение "box" (по умолчанию) или "line" - Пример «коробки»: https://en.wikipedia.org/wiki/Template:Attached_KML - Пример «линии»: https://sv.wikipedia.org/wiki/Mall:KML}- Прочие струныL10n . str = {inline = "inline" , - используется с параметром отображения: (| display = inline) или (| display = title) или (| display = inline, title) или (| display = title, inline)title = "title" , - (как указано выше)dsep = "," , - разделитель между строкой и заголовком (запятая в примере выше)kml_prefix = "Шаблон: прикрепленный KML /" , - локальные файлы KML хранятся как подстраницы этого местоположения.default_title = "Карта маршрутов" , - заголовок по умолчанию для ссылок вверху страницы, когда параметр заголовка не используется при включенииdefault_header = "" , - заголовок по умолчанию для ссылок во встроенном блоке, когда параметр заголовка не используется при включенииkml_file = "файл KML" , - текст для отображения ссылки на необработанный файл KMLedit = "edit" , - текст для отображения ссылки на редактирование файла KMLhelp = "help" , - текст для отображения ссылки на страницу справкиhelp_location = "Справка: прикрепленный KML" , - страница для ссылки для ссылки на страницу справкиerr_prepend = "Attached KML" , - текст, добавляемый к сообщениям об ошибках, при отображении вверху страницы (display = title)err = { - сообщения об ошибкахmalformed_qid = "Ошибка: неверный идентификатор элемента в <code> <nowiki> |" .. L10n . пункт . wikidata .. "= </nowiki> </code>" , - идентификатор элемента не соответствует шаблону (номер с префиксом Q)bad_qid = "Ошибка: элемент указан в Викиданных или в <code> <nowiki> |" .. L10n . пункт . wikidata .. "= </nowiki> </code>, не является файлом KML <small> (P31 → Q26267864 не найден) </small>" , - элемент не имеет инструкции P31 → Q26267864no_item = "Ошибка: элемент указан в <code> <nowiki> |" .. L10n . пункт . wikidata .. "= </nowiki> </code> not found on Wikidata" , - элемент не найден в wikidatabad_from = "Ошибка: файл KML не найден, проверьте <code> <nowiki> |" .. L10n . пункт . from .. "= </nowiki> </code>" , - KML, указанный параметром from, не существуетno_kml = "Ошибка: файл KML не найден" , - файл KML не найден},cat = { - категории отслеживания: требуется полная вики-разметка, или укажите пустую строку (""), чтобы не отслеживать условиеwikidata_kml = "[[Категория: статьи, использующие KML из Викиданных]]" , - отслеживает статьи в основном пространстве с использованием KML из Викиданных.local_kml = "[[Категория: статьи, использующие KML не из Викиданных]]" , - отслеживает статьи из Викиданных, не использующие KML.error_mqid = "[[Категория: ошибки прикрепленного KML | M]]" , - отслеживает ошибку malformed_qiderror_badqid = "[[Категория: ошибки прикрепленного KML | W]]" , - отслеживает ошибку bad_qiderror_noitem = "[[Категория: ошибки прикрепленного KML | N]]" , - отслеживает ошибку no_itemerror_from = "[[Категория: ошибки прикрепленного KML | F]]" , - отслеживает ошибку bad_fromerror_nokml = "[[Категория: прикрепленные ошибки KML | K]]" , - отслеживает ошибку no_kml},line = { - эти строки нужны только при использовании конфигурации 'inline_format = "line"'start = "" , - wikitext для отображения в начале строки, может включать разметку изображения, должен начинаться с пробелаseparator = "" , - текст, отображаемый между ссылками на внешние поставщики сопоставлений, должен включать пробелы},}- Маски для внешних картографических провайдеров в виде:- externalLinkMasks [index-number] = {short = "short-label", long = "long-label", link = "url"} '- Короткая метка используется для заголовков ссылок; длинная метка используется для встроенных ссылок- Ссылки в выводе будут отсортированы по номеру индекса.- Вместо необработанного URL-адреса файла kml или закодированного необработанного URL-адреса используйте __KML_URL__ или __KML_URL_E__local externalLinks = {}--externalLinks [1] = { - short = "Bing",- long = "Отображать на картах Bing",- link = "http://www.bing.com/maps/?mapurl=__KML_URL__"-}- #### Конец настроек L10n ####- Таблица доступных вики-сайтов в том порядке, в котором их нужно искать для файлов kml- (как только файл kml найден, дальнейшие сайты не проверяются)локальные сайты = {}sites [ 1 ] = { mw . ustring . совпадение ( mw . site . server , "% w +" ) .. mw . ustring . gsub ( mw . ustring . lower ( mw . site . siteName ), "[mp] edia" , "" ), mw . ustring . sub ( mw . site . server, 3 ), "" } - локальная вики (указывается первой, поэтому локальные файлы могут иметь приоритет над файлами в других вики)sites [ 2 ] = { "commonswiki" , "commons.wikimedia.org" , "c:" } - Commons будет логическим центральным хранилищем для файлов KML (но по состоянию на август 2016 г. файлы отсутствуют)sites [ 3 ] = { "enwiki" , "en.wikipedia.org" , "w: en:" } - крупнейший источник файлов KML (по состоянию на август 2016 г.)sites [ 4 ] = { "bnwiki" , "bn.wikipedia.org" , "w: bn:" } - другие сайты с шаблоном KML, перечисленные в алфавитном порядкеsites [ 5 ] = { "cswiki" , "cs.wikipedia.org" , "w: cs:" } sites [ 6 ] = { "fawiki" , "fa.wikipedia.org" , "w: fa:" } sites [ 7 ] = { "frwiki" , "fr.wikipedia.org" , "w: fr:" } sites [ 8 ] = { "jawiki" , "ja.wikipedia.org" , "w: ja:" } sites [ 9 ] = { "mlwiki" , "ml.wikipedia.org" , "w: ml:" } sites [ 10 ] = { "svwiki" , "sv.wikipedia.org" , "w: sv:" } sites [ 11 ] = { "zhwiki" , "zh.wikipedia.org" , "w: zh:" } - Параметр очищенного parent.args (пробелы удалены, пробелы удалены)local Args = {}местный p = {}функция p . основной ( фрейм )локальный родитель = фрейм . getParent ( кадр )Args = setCleanArgs ( родитель . Арг )local qid = Args [ L10n . пункт . wikidata ] или ноль- получить URL-адрес файла KMLлокальный wikiUrl , wikiTitle , wikiLink , trackingWikitext , kmlErrorесли нет ( Args [ L10n . para . from ]), тоесли не qid, тоwikiUrl , wikiLink , siteindex , kmlError = getUrlFromWikidata ()elseif mw . ustring . find ( qid , "^ Q% d +" ), затемwikiUrl , wikiLink , siteindex , kmlError = getUrlFromQid ( qid )ещеkmlError = makeError ( L10n . str . err . malformed_qid , L10n . str . cat . error_mqid )конецконецесли нет ( wikiUrl ), тоwikiLink = Args [ L10n . пункт . из ] или mw . название . новый ( tostring ( mw . title . getCurrentTitle ())). текстwikiLink = L10n . ул . kml_prefix .. wikiLinkwikiTitle = mw . название . новый ( wikiLink )если нет ( wikiTitle . существует ), а не ( kmlError ), тоесли Args [ L10n . пункт . с ] затемkmlError = makeError ( L10n . str . err . bad_from , L10n . str . cat . error_from )ещеkmlError = makeError ( L10n . str . err . no_kml , L10n . str . cat . error_nokml )конецконецwikiUrl = wikiTitle : fullUrl ( "действие = raw" , "https" )siteindex = 1trackingWikitext = mw . ustring . format ( "<div title = \" KML & Wikidata \ " style = \" display: none; \ " > KML не из Викиданных </div> {{#ifeq: {{NAMESPACE}} | {{ns: 0 }} |% s}} " , L10n . str . cat . local_kml )ещеtrackingWikitext = mw . ustring . format ( "<div title = \" KML & Wikidata \ " style = \" display: none; \ " > KML взят из Викиданных </div> {{#ifeq: {{NAMESPACE}} | {{ns: 0}) } |% s}} " , L10n . str . cat . wikidata_kml )конец- заменить __KML_URL__ или __KML_URL_E__ на фактические значениялокальный кодированныйWikiUrl = mw . uri . кодировать ( wikiUrl , "ПУТЬ" )для i , v в ipairs ( externalLinks ) делаемlocal el1 = safeReplace ( ссылка v . , "__KML_URL__" , wikiUrl ) local el2 = safeReplace ( el1 , "__KML_URL_E__" , encodedWikiUrl )externalLinks [ i ] [ "ссылка" ] = el2конец- подавлять ошибки и категории, если установлен демо-параметресли Args [ L10n . пункт . демо ] тогдаkmlError = нольtrackingWikitext = ""конецlocal wikitext = ""если Args [ L10n . пункт . дисплей ] затемлокальный дисплей = mw . текст . split ( Args [ L10n . para . display ], '% s *' .. L10n . str . dsep .. '% s *' )если display [ 1 ] == L10n . ул . заголовок или дисплей [ 2 ] == L10n . ул . название тогдаwikitext = makeTitleWikitext ( Args [ L10n . para . title ] или L10n . str . default_title , kmlError )конецесли display [ 1 ] == L10n . ул . inline или display [ 2 ] == L10n . ул . inline или ( отобразить [ 1 ] ~ = L10n . str . title и display [ 2 ] ~ = L10n . str . title ), затемlocal inlineWikitext = makeInlineWikitext ( Args [ L10n . para . header ] или L10n . str . default_header , wikiUrl , kmlError )wikitext = wikitext .. inlineWikitextконецещеwikitext = makeInlineWikitext ( Args [ L10n . para . header ] или L10n . str . default_header , wikiUrl , kmlError )конецwikitext = wikitext .. makeKmldataDiv ( wikiLink , siteindex ) .. trackingWikitext кадр возврата : препроцесс ( викитекст )конецфункция setCleanArgs ( argsTable )local cleanArgs = {}для ключа , вал в паре ( argsTable ) делатьесли type ( val ) == 'string', тоval = val : match ( '^% s * (.-)% s * $' )если val ~ = '' тоcleanArgs [ ключ ] = valконецещеcleanArgs [ ключ ] = valконецконецвернуть cleanArgsконецфункция safeReplace ( строка , шаблон , замена )- позволяет избежать "ошибки Lua: неверный индекс захвата", которая возникает с string.gsub, когда замена содержит один или несколько буквальных символов%локальный nonpattern_parts = mw . текст . split ( строка , шаблон )Возвращение table.concat ( nonpattern_parts , замена )конецФункция makeTitleWikitext ( TitleText , ERR )если ERR и l10n . ул . err_prepend, затем err = mw . ustring . gsub ( err , ">" , ">" .. L10n . str . err_prepend .. "" , 1 ) конецlocal titleLinks = {}для i , v в ipairs ( externalLinks ) делаемtitleLinks [ i ] = mw . ustring . формат ( "[% s% s]" , v . ссылка , v . короткий )конецвернуть мв . ustring . format ( "<span style = \" font-size: small; \ " > <span id = \" координаты \ " > \ '\' \ ' % s \' \ '\' :% s </span> < / SPAN>» , TitleText , ERR или table.concat ( titleLinks , "/" ) ) конецФункция makeInlineWikitext ( HeaderText , URL , эээ )local inlineLinks = {}для i , v в ipairs ( externalLinks ) делаемinlineLinks [ i ] = mw . ustring . формат ( "[% s% s]" , v . ссылка , v . длинный )конецлокальный editUrl = mw . ustring . gsub ( url , "действие = необработанный" , "действие = редактировать" )местный wiki_link_classесли мв . ustring . find ( editUrl , mw . site . server , 1 , true ), затемwiki_link_class = "простые ссылки"ещеwiki_link_class = ""конецесли L10n . config . inline_format == "строка", затемвернуть мв . ustring . format ( "<li>% s% s% s (<span class = \" % s \ " > [% s% s] <span style = \" font-size: 85 %%; \ " > ([% s% s] • [[% s% s |]]) </ SPAN> </ SPAN>) </ литий>» , HeaderText , L10n . ул . линия . начать , ERR или table.concat ( inlineLinks , L10n . ул . линия . сепаратор ), wiki_link_class , URL , L10n. ул . kml_file , editUrl , L10n . ул . редактировать , L10n . ул . help_location , L10n . ул . помощь )ещевернуть мв . ustring . format ( "<table class = \" metadata mbox-small \ " style = \" border: 1px solid #aaa; background-color: # f9f9f9; font-size: 88 %%; line-height: 1.5em \ " > <tr> <td style = \ " width: 1px \" > </td> <td class = \ " mbox-text plainlist \" >% s <span class = \ " % s \" > \ '\' \ ' [% s% s] \' \ '\' ([% s% s] • [[% s |% s]]]) </span> \ n <ul> <li>% s </li> < / ul> </ td> </tr> </table> " , заголовок , wiki_link_class, URL , L10n . ул . kml_file , editUrl , L10n . ул . редактировать , L10n . ул . help_location , L10n . ул . помощь , эээ или table.concat ( inlineLinks , "</ li> <li>" ) )конецконецфункция makeKmldataDiv ( ссылка , s_index )вернуть мв . ustring . format ( "<div class = \" kmldata \ " data-server = \" % s \ " title = \" % s \ " style = \" display: none; \ " > [[% s% s]] < / div> " , сайты [ s_index ] [ 2 ], ссылка , сайты [ s_index ] [ 3 ], ссылка )конецфункция makeError ( сообщение , кошка )вернуть мв . ustring . format ( "% s% s% s% s% s% s" , "<strong class = \" error \ " style = \" font-size: 100% \ " >" , mw . ustring . gsub ( msg , "<code>" , "<code class = \" error \ " style = \" font-size: inherit; font-weight: normal; border: 0 \ " >" ), "</strong>" , "{ {#switch: {{NAMESPACE}} | {{ns:0}} | {{ns: 118}} = " , кошка , "}}" )конецfunction getUrlFromWikidata () - пытается получить URL-адрес из связанных элементов викиданных, вернет ноль, если не можетлокальный объект = mw . викибаза . getEntityObject ()если не объект, то верните ноль конецlocal kml_claim = entity : getBestStatements ( "P3096" ) - P3096 - это свойство "KML-файл"если kml_claim, то- получить QID первого значения свойстваif ( kml_claim [ 1 ] и kml_claim [ 1 ]. mainsnak . snaktype == "value" и kml_claim [ 1 ]. mainsnak . datavalue . type == "wikibase-entityid" ), тоlocal kml_qid = "Q" .. kml_claim [ 1 ]. mainsnak . значение данных . значение [ "числовой-идентификатор" ]вернуть getUrlFromQid ( kml_qid )ещеreturn nil - ЗАДАНИЕ: сообщение об ошибкеконецещеreturn nil - ЗАДАНИЕ: сообщение об ошибкеконецконецфункция getUrlFromQid ( kml_qid )локальный pcall_result , kml_entity = pcall ( mw . wikibase . getEntity , kml_qid )если не pcall_result, то верните nil , nil , nil , makeError ( L10n . str . err . no_item , L10n . str . cat . error_noitem ) end - Ошибка, если объект не существуетlocal p31_claim = kml_entity : getBestStatements ( "P31" ) - P31 является свойством "instance of"местный has_good_p31для к , v в парах ( p31_claim ) делаютif ( p31_claim [ k ] и p31_claim [ k ]. mainsnak . snaktype == "value" и p31_claim [ k ]. mainsnak . datavalue . type == "wikibase-entityid" и p31_claim [ k ]. mainsnak . datvalue . value [ "numeric-id" ] == 26267864 ), затемhas_good_p31 = правдаконецконецесли нет ( has_good_p31 ), то вернуть nil , nil , nil , makeError ( L10n . str . err . bad_qid , L10n . str . cat . error_badqid ) end - Ошибка, если элемент не является файлом kmlместный kml_sitelinkместный kml_siteindexместный kml_urlдля i , v в ipairs ( сайты ) делаемkml_sitelink = kml_entity : getSitelink ( v [ 1 ] )если kml_sitelink, тоkml_url = "https: //" .. v [ 2 ] .. "/w/index.php?title=" .. mw . uri . кодировать ( kml_sitelink , "WIKI" ) .. "& action = raw"kml_siteindex = яконецесли kml_url, то перерыв конецконецreturn kml_url или nil , kml_sitelink или nil , kml_siteindex или nil , nilконецвернуть p