Модул:Official website

Документација модула

Овај модул покреће шаблон {{званични веб-сајт}}. Погледајте страницу шаблона за документацију.

Категорије за праћење

local makeUrl = require('Module:URL')._urllocal p = {}-- Wrapper for pcall which returns nil on failure.local function quickPcall(func)local success, result = pcall(func)if success thenreturn resultendend-- Gets the rank for a Wikidata property table. Returns 1, 0 or -1, in-- order of rank.local function getRank(prop)local rank = prop.rankif rank == 'preferred' thenreturn 1elseif rank == 'normal' thenreturn 0elseif rank == 'deprecated' thenreturn -1else-- No rank or undefined rank is treated as "normal".return 0endend-- Finds whether a Wikidata property is qualified as being in English.local function isEnglish(prop)local ret = quickPcall(function ()for i, lang in ipairs(prop.qualifiers.P407) doif lang.datavalue.value['numeric-id'] == 1860 thenreturn trueendendreturn falseend)return ret == trueend-- Fetches the official website URL from Wikidata.local fetchWikidataUrlfetchWikidataUrl = function()-- Get objects for all official sites on Wikidata.local websites = quickPcall(function ()return mw.wikibase.getEntityObject().claims.P856end)-- Clone the objects in case other code needs them in their original order.websites = websites and mw.clone(websites) or {}-- Add the table index to the objects in case it is needed in the sort.for i, website in ipairs(websites) dowebsite._index = iend-- Sort the websites, first by highest rank, and then by websites in the-- English language, then by the website's original position in the-- property list. When we are done, get the URL from the highest-sorted-- object.table.sort(websites, function(ws1, ws2)local r1 = getRank(ws1)local r2 = getRank(ws2)if r1 ~= r2 thenreturn r1 > r2endlocal e1 = isEnglish(ws1)local e2 = isEnglish(ws2)if e1 ~= e2 thenreturn e1endreturn ws1._index < ws2._indexend)local url = quickPcall(function ()return websites[1].mainsnak.datavalue.valueend)-- Cache the result so that we only do the heavy lifting once per #invoke.fetchWikidataUrl = function ()return urlendreturn urlend-- Render the URL link, plus other visible output.local function renderUrl(options)if not options.url and not options.wikidataurl thenreturn '' --'<strong class="error">' ..--'URL није пронађен. Унесите URL овде или га додајте на Википодатке.' ..--'</strong>'endlocal ret = {}ret[#ret + 1] = string.format('<span class="official-website">%s</span>',makeUrl(options.url or options.wikidataurl, options.display))if options.wikidataurl and not options.url thenlocal entity = mw.wikibase.getEntityObject() or {}local qid = entity.idif qid thenret[#ret + 1] = '<span class=noprint>[[Датотека:OOjs UI icon edit-ltr-progressive.svg|frameless|10px|alt=Измените ово на Википодацима |link=https://www.wikidata.org/wiki/' .. qid .. '#P856|Измените ово на Википодацима]]</span>'endendif options.format == 'flash' thenret[#ret + 1] = mw.getCurrentFrame():expandTemplate{title = 'Link note',args = {note = 'неопходан [[:en:Adobe Flash Player|Adobe Flash Player]]'}}endif options.mobile thenret[#ret + 1] = '(' .. makeUrl(options.mobile, 'мобилни') .. ')'endreturn table.concat(ret, ' ')end-- Render the tracking category.local function renderTrackingCategory(url, wikidataurl)if mw.title.getCurrentTitle().namespace ~= 0 thenreturn ''endlocal categoryif not url and not wikidataurl thencategory = 'Званични веб-сајт без УРЛ-а'elseif not url and wikidataurl thenreturn ''elseif url and wikidataurl thenif url:gsub('/%s*$', '') ~= wikidataurl:gsub('/%s*$', '') thencategory = 'Званични веб-сајт различит на Википодацима и Википедији'endelsecategory = 'Званични веб-сајт није на Википодацима'endreturn category and string.format('[[Категорија:%s]]', category) or ''endfunction p._main(args)local url = args[1] or args.URL or args.urllocal wikidataurl = fetchWikidataUrl()local formattedUrl = renderUrl{url = url,wikidataurl = wikidataurl,display = args[2] or args.name or 'Званични веб-сајт',format = args.format,mobile = args.mobile}return formattedUrl .. renderTrackingCategory(url, wikidataurl)endfunction p.main(frame)local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Шаблон:Званични веб-сајт'})return p._main(args)endreturn p