Module:Official website
![ප්රලේඛනය අයිකොනය](http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Wikidata-logo.svg/40px-Wikidata-logo.svg.png)
This module uses the Wikidata property:
නිල වෙබ්අඩවිය (P856) (see uses)
This module implements {{Official website}}. Please see the template page for documentation.
Tracking categories
- ප්රවර්ගය:Official website missing URL (1)
- ප්රවර්ගය:Official website different in Wikidata and Wikipedia (71)
- ප්රවර්ගය:Official website not in Wikidata (21)
See also
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 thenlocal entity = mw.wikibase.getEntityObject() or {}local qid = entity.idlocal result = '<strong class="error">' ..'No URL found. Please specify a URL here or add one to Wikidata.' ..'</strong>'if qid thenresult = result.. ' [[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=Edit this at Wikidata |link=https://www.wikidata.org/wiki/' .. qid .. '#P856|Edit this at Wikidata]]'endreturn resultendlocal 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] = '[[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=Edit this at Wikidata |link=https://www.wikidata.org/wiki/' .. qid .. '#P856|Edit this at Wikidata]]'endendif options.format == 'flash' thenret[#ret + 1] = mw.getCurrentFrame():expandTemplate{title = 'Color',args = {'#505050', '(Requires [[Adobe Flash Player]])'}}endif options.mobile thenret[#ret + 1] = '(' .. makeUrl(options.mobile, '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 = 'Official website missing URL'elseif not url and wikidataurl thenreturn ''elseif url and wikidataurl thenif url:gsub('/%s*$', '') ~= wikidataurl:gsub('/%s*$', '') thencategory = 'Official website different in Wikidata and Wikipedia'endelsecategory = 'Official website not in Wikidata'endreturn category and string.format('[[Category:%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 = 'Template:Official website'})return p._main(args)endreturn p
🔥 Top keywords: විශේෂ:ගවේෂණයමුල් පිටුවකාලස් පුයිජ්දෙමොන්සූනන් ඇඟ වැටීමේ ඵලාඵලහජ්පොසොන් පසළොස්වක පෝයපොසොන් උත්සවයදුටුගැමුණු රජවිකිපීඩියා:Contact usශිෂ්යත්ව විභාගයමහින්දාගමනයසාර ධර්මඅපරාධරුවන්වැලිසෑයසීගිරියමාර්ටින් වික්රමසිංහසොළොස්මස්ථානඅනගාරික ධර්මපාලශ්රී පාදස්ථානයසාහිත්යයශ්රී ලංකාවේ කුල ක්රමයශ්රී දළදා මාළිගාවශ්රී ලංකාවඅධ්යාපනයආවර්තිතා වගුවයුක්රේනයසී.ඩබ්.ඩබ්. කන්නන්ගරකුමාරතුංග මුනිදාසඑස්. මහින්ද හිමිමහා මංගල සුත්රයවැදි ජනයාස්ත්රී ස්වයං වින්දනයවිකිපීඩියා:පොදු වියාචනයසංස්කෘතියසිංහල සාහිත්යයවොලිබෝල්ලිංගික සංසර්ගයපරිසර දූෂණයදේවානම්පිය තිස්ස රජ