create module to display an icon with a tooltip such as "Edit this at Wikidata"
|
update from Module:EditAtWikidata/sandbox per talk: tweaks + greatly reduce memory usage + class=noprint
|
||
(7 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
-- Module to display an icon with a tooltip such as "Edit this at Wikidata" |
-- Module to display an icon with a tooltip such as "Edit this at Wikidata". |
||
-- Icon |
-- Icon is linked to the Wikidata entry for the article where this is placed. |
||
-- This message is only displayed if a local_parameter is not supplied |
-- This message is only displayed if a local_parameter is not supplied |
||
-- i.e. when called from a template, it can be coded not to display the message |
-- i.e. when called from a template, it can be coded not to display the message. |
||
-- when a local parameter is in use, preventing the value form Wikidata being fetched. |
|||
-- The qid of a Wikidata entry can optionally be supplied for testing outside the article. |
-- The qid of a Wikidata entry can optionally be supplied for testing outside the article. |
||
-- Usage: |
-- Usage: |
||
-- {{#invoke:EditAtWikidata|showMessage|local_parameter}} |
-- {{#invoke:EditAtWikidata|showMessage|local_parameter}} |
||
-- {{#invoke:EditAtWikidata|showMessage|qid=<ArticleID|local_parameter}} |
-- {{#invoke:EditAtWikidata|showMessage|qid=<ArticleID>|local_parameter}} |
||
local p = {} |
local p = {} |
||
Line 13: | Line 12: | ||
local i18n = |
local i18n = |
||
{ |
{ |
||
|
["message"] = "Edit this at Wikidata" |
||
} |
} |
||
|
local function trimToNil(text) |
||
-- Return trimmed non-empty text, or nil. |
|||
|
|||
if type(text) == 'string' then |
|||
-- There may be a local parameter supplied, if it's blank, set it to nil |
|||
return text:match('(%S.-)%s*$') |
|||
⚫ | |||
if local_parm and (#local_parm == 0) then local_parm = nil end |
|||
|
|||
-- If there is a local parameter used, we don't want to display the message |
|||
⚫ | |||
|
|||
⚫ |
-- |
||
⚫ |
-- This |
||
local qid = frame.args.qid |
|||
if qid and (#qid == 0) then qid = nil end |
|||
|
|||
-- Get the object containing all the claims for the article |
|||
local entity = mw.wikibase.getEntityObject(qid) |
|||
if entity then |
|||
local thisQid |
|||
if qid then thisQid = qid else thisQid = entity.id end |
|||
|
|||
local icon = " [[File:Blue pencil.svg |frameless |text-top |10px |alt=" .. i18n.message .. " |link=https://www.wikidata.org/wiki/" .. thisQid .. "|Edit this on Wikidata]]" |
|||
|
|||
⚫ | |||
end |
end |
||
end |
|||
function p._showMessage(args) |
|||
⚫ | |||
⚫ | |||
⚫ | -- Parameter qid=x specifies the Wikidata ID for the article. |
||
⚫ | -- This is not normally used except for testing outside the article. |
||
local qid = trimToNil(args.qid) or mw.wikibase.getEntityIdForCurrentPage() |
|||
if qid and mw.wikibase.entityExists(qid) then |
|||
-- Parameter pid=x uses x as an anchor in the link to the Wikidata entry. |
|||
local anchor = trimToNil(args.pid) |
|||
-- Parameter nbsp replaces the leading space with |
|||
local space = trimToNil(args.nbsp) and " " or " " |
|||
⚫ | |||
space .. |
|||
"[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px" .. |
|||
"|alt=" .. i18n.message .. |
|||
"|link=https://www.wikidata.org/wiki/" .. qid .. |
|||
(anchor and ("#" .. anchor) or "") .. |
|||
"|class=noprint" .. |
|||
"|" .. i18n.message .. |
|||
"]]" |
|||
end |
|||
return "" |
|||
end |
end |
||
function p.showMessage(frame) |
|||
return p._showMessage(frame.args) |
|||
end |
|||
return p |
return p |
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
This Lua module is used on approximately 2,040,000 pages, or roughly 3% of all pages. To avoid major disruption and server load, any changes should be tested in the module's /sandboxor/testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
Related pages |
---|
|
Module to display an icon with a tooltip such as "Edit this at Wikidata"
To always display the icon:
{{#invoke:EditAtWikidata|showMessage}}
To display the icon depending on a local parameter not existing:
{{#invoke:EditAtWikidata|showMessage|local_parameter}}
To test the functionality outside of an article:
{{#invoke:EditAtWikidata|showMessage|qid=<ArticleID>|local_parameter}}
To make the link point to the given property at the Wikidata entry:
{{#invoke:EditAtWikidata|showMessage|pid=<PropertyID>|local_parameter}}
-- Module to display an icon with a tooltip such as "Edit this at Wikidata".
-- Icon is linked to the Wikidata entry for the article where this is placed.
-- This message is only displayed if a local_parameter is not supplied
-- i.e. when called from a template, it can be coded not to display the message.
-- The qid of a Wikidata entry can optionally be supplied for testing outside the article.
-- Usage:
-- {{#invoke:EditAtWikidata|showMessage|local_parameter}}
-- {{#invoke:EditAtWikidata|showMessage|qid=<ArticleID>|local_parameter}}
local p = {}
local i18n =
{
["message"] = "Edit this at Wikidata"
}
local function trimToNil(text)
-- Return trimmed non-empty text, or nil.
if type(text) == 'string' then
return text:match('(%S.-)%s*$')
end
end
function p._showMessage(args)
local local_parm = trimToNil(args[1])
if local_parm then return "" end
-- Parameter qid=x specifies the Wikidata ID for the article.
-- This is not normally used except for testing outside the article.
local qid = trimToNil(args.qid) or mw.wikibase.getEntityIdForCurrentPage()
if qid and mw.wikibase.entityExists(qid) then
-- Parameter pid=x uses x as an anchor in the link to the Wikidata entry.
local anchor = trimToNil(args.pid)
-- Parameter nbsp replaces the leading space with
local space = trimToNil(args.nbsp) and " " or " "
return
space ..
"[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px" ..
"|alt=" .. i18n.message ..
"|link=https://www.wikidata.org/wiki/" .. qid ..
(anchor and ("#" .. anchor) or "") ..
"|class=noprint" ..
"|" .. i18n.message ..
"]]"
end
return ""
end
function p.showMessage(frame)
return p._showMessage(frame.args)
end
return p