Постоянно защищенный модуль
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

использование

В английской Википедии этот модуль вызывается , см. Документацию по этому шаблону для инструкций по использованию.{{Attached KML}}

Настроить на другой вики

  1. Создать шаблон и модуль
    • Импортируйте этот модуль в эту вики (или скопируйте код, указав авторство в сводке редактирования). Дайте модулю имя, которое имеет смысл на языке этой вики (далее именуемое MODULENAME )
    • Создайте шаблон (который, вероятно, должен иметь то же имя, что и модуль, но упоминается здесь как TEMPLATENAME ), содержащий код<includeonly>{{#invoke:MODULENAME|main}}</includeonly><noinclude>{{TEMPLATENAME|demo=yes}}{{Documentation}}</noinclude>
    • В Викиданных добавьте шаблон в d: Q6690822 и модуль в d: Q26689774.
  2. Локализуйте модуль. Отредактируйте верхние биты модуля между комментариями -- ##### Localisation (L10n) settings #####и -- #### End of L10n settings ####, заменив значения между " "символами локальными значениями (при необходимости)
  3. Создайте категории, определенные в локализации модуля. Их следует сделать скрытыми категориями, либо путем включения шаблона Шаблон: Скрытая категория (Q5879327) , либо путем прямого включения __HIDDENCAT__ волшебного слова .
  4. Добавьте документацию в шаблон (например, переведя Template: Attached KML / doc , изменив при необходимости в соответствии с любыми локализациями, сделанными на предыдущем шаге) и в модуль (пожалуйста, передайте / переведите эти инструкции, чтобы википедия, читающая вашу вики, но не на английском языке Википедия также может настроить модуль и шаблон на другой вики).

Категории отслеживания

- Примечание. Первоначально написано в английской Википедии как [[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