|
|
(2 intermediate revisions by 2 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 will be linked to the Wikidata entry for the article where this is placed. | | -- 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: |
Line 16: |
Line 15: |
| } | | } |
|
| |
|
| p.showMessage = function(frame)
| | local function trimToNil(text) |
| -- There may be a local parameter supplied, if it's blank, set it to nil | | -- Return trimmed non-empty text, or nil. |
| local local_parm = mw.text.trim(frame.args[1] or "")
| | if type(text) == 'string' then |
| if local_parm and (local_parm == "") then local_parm = nil end | | return text:match('(%S.-)%s*$') |
| | | end |
| -- If there is a local parameter used, we don't want to display the message
| | end |
| if local_parm then return nil end
| |
| | |
| -- Can take a named parameter |qid which is the Wikidata ID for the article.
| |
| -- This will not normally be used except for testing outside the article.
| |
| local qid = frame.args.qid
| |
| if qid and (qid == "") then qid = nil end
| |
| | |
| -- The module can take a parameter pid=
| |
| -- which will create a link to that property in the Wikidata entry for the article
| |
| local propertyID = mw.text.trim(frame.args.pid or "")
| |
| | |
| -- 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
| |
| | |
| -- Named parameter nbsp allows replacing the leading space with
| |
| local space
| |
| if frame.args.nbsp and (frame.args.nbsp ~= "") then
| |
| space = " "
| |
| else
| |
| space = " "
| |
| 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 | | return |
| space .. "[[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. | | space .. |
| i18n.message ..
| | "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px" .. |
| " |link=https://www.wikidata.org/wiki/" .. | | "|alt=" .. i18n.message .. |
| thisQid ..
| | "|link=https://www.wikidata.org/wiki/" .. qid .. |
| (propertyID == "" and "" or ("#" .. propertyID)) .. | | (anchor and ("#" .. anchor) or "") .. |
| "|" .. i18n.message .. "]]" | | "|class=noprint" .. |
| | "|" .. i18n.message .. |
| | "]]" |
| end | | end |
| | return "" |
| | end |
| | |
| | function p.showMessage(frame) |
| | return p._showMessage(frame.args) |
| end | | end |
|
| |
|
| return p | | return p |