Module:Clickable button: Difference between revisions
From Test Wiki
Content deleted Content added
No edit summary |
|||
| (3 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
-- This module implements {{clickable button |
-- This module implements {{clickable button}}. |
||
local yesno = require('Module:Yesno') |
local yesno = require('Module:Yesno') |
||
| Line 5: | Line 5: | ||
local p = {} |
local p = {} |
||
function |
local function renderTrackingCategories(args) |
||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
if not args[1] and not args.url then |
|||
return '' |
return '' |
||
end |
end |
||
| ⚫ | |||
-- we have no tracking categories currently but args.category should be |
|||
| ⚫ | |||
-- supported into the future, so just return a string here for now |
|||
| ⚫ | |||
return |
return '' |
||
end |
end |
||
function |
local function makeLinkData(args) |
||
local data = {} |
local data = {} |
||
-- Get the link and display values, |
-- Get the link and display values, |
||
-- and find whether we are outputting |
|||
-- wikilink or a URL. |
-- a wikilink or a URL. |
||
if args.url then |
if args.url then |
||
data.isUrl = true |
data.isUrl = true |
||
| Line 32: | Line 26: | ||
if args[1] then |
if args[1] then |
||
data.display = args[1] |
data.display = args[1] |
||
else if args[2] then |
|||
data.display = args[2] |
|||
else |
else |
||
data.display = args.url |
data.display = args.url |
||
p.urlisdisplay = true |
|||
end |
|||
end |
end |
||
else |
else |
||
data.isUrl = false |
data.isUrl = false |
||
p.urlisdisplay = false |
|||
data.link = args[1] |
data.link = args[1] |
||
if args[2] then |
if args[2] then |
||
| Line 43: | Line 42: | ||
data.display = args[1] |
data.display = args[1] |
||
end |
end |
||
| ⚫ | |||
if yesno(args.link) == false then |
|||
p.nolink = true |
|||
end |
end |
||
-- Colours |
|||
-- For the merge with {{clickable button}} |
|||
local colour = args.color and args.color:lower() |
|||
-- Classes |
-- Classes |
||
| Line 60: | Line 67: | ||
table.insert(data.classes, 'mw-ui-button') |
table.insert(data.classes, 'mw-ui-button') |
||
end |
end |
||
--If class is unset, |
|||
--then let color determine class |
|||
if not class then |
|||
if colour == 'blue' then |
|||
| ⚫ | |||
else if colour == 'red' then |
|||
| ⚫ | |||
else if colour == 'green' then |
|||
class = 'mw-ui-constructive' |
|||
end |
|||
end |
|||
end |
|||
end |
|||
if class then |
if class then |
||
table.insert(data.classes, class) |
table.insert(data.classes, class) |
||
| Line 77: | Line 99: | ||
currentTitle = mw.title.getCurrentTitle() |
currentTitle = mw.title.getCurrentTitle() |
||
success, linkTitle = pcall(mw.title.new, args[1]) |
success, linkTitle = pcall(mw.title.new, args[1]) |
||
elseif p.urlisdisplay then |
|||
currentTitle = mw.title.getCurrentTitle() |
|||
end |
end |
||
if success |
if success |
||
and linkTitle |
and linkTitle |
||
and mw.title.equals(currentTitle, linkTitle) |
and mw.title.equals(currentTitle, linkTitle) |
||
and not p.urlisdisplay |
|||
then |
then |
||
if class == 'ui-button-blue' |
if class == 'ui-button-blue' |
||
| Line 87: | Line 112: | ||
then |
then |
||
data.backgroundColor = '#2962CB' |
data.backgroundColor = '#2962CB' |
||
data.color = '#fff' |
|||
elseif class == 'ui-button-green' then |
elseif class == 'ui-button-green' then |
||
data.backgroundColor = '#008B6D' |
data.backgroundColor = '#008B6D' |
||
| Line 94: | Line 120: | ||
data.backgroundColor = '#CCC' |
data.backgroundColor = '#CCC' |
||
data.color = '#666' |
data.color = '#666' |
||
end |
|||
| ⚫ | |||
if p.urlisdisplay |
|||
| ⚫ | |||
data.dummyLink = tostring(currentTitle) |
|||
end |
end |
||
end |
end |
||
| Line 103: | Line 134: | ||
end |
end |
||
function |
local function renderLink(data) |
||
-- Render the display span tag. |
-- Render the display span tag. |
||
local display |
local display |
||
| Line 124: | Line 155: | ||
-- Render the link |
-- Render the link |
||
local link |
local link |
||
if |
if p.nolink then |
||
if p.urlisdisplay then |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
link = string.format('%s', display) |
|||
end |
|||
else if data.isUrl then |
|||
| ⚫ | |||
else |
|||
link = string.format('[[%s|%s]]', data.link, display) |
|||
end |
|||
end |
end |
||
return string.format('<span class="plainlinks">%s</span>', link) |
return string.format('<span class="plainlinks clickbutton">%s</span>', link) |
||
end |
end |
||
function p. |
function p.luaMain(args) |
||
-- If first arg or a url is not provided, |
|||
| ⚫ | |||
-- but we have a second arg, make a button. |
|||
| ⚫ | |||
-- Otherwise, return nothing. |
|||
| ⚫ | |||
if not args[1] and not args.url then |
|||
if args[2] then |
|||
if class == 'ui-button-green' |
|||
p.nolink = true |
|||
| ⚫ | |||
else |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
end |
|||
return '[[Kategori:Halaman yang menggunakan ui-button-color gaya lama]]' |
|||
| ⚫ | |||
return '' |
|||
end |
end |
||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
return link .. trackingCategories |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
end |
end |
||