Editing Module:Clickable button

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
-- This module implements {{clickable button}}.
-- This module implements {{clickable button 2}}.


local yesno = require('Module:Yesno')
local yesno = require('Module:Yesno')
Line 5: Line 5:
local p = {}
local p = {}


local function renderTrackingCategories(args)
function p.main(frame)
if yesno(args.category) == false then
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Clickable button 2'
})
return p.luaMain(args)
end
 
function p.luaMain(args)
if not args[1] and not args.url then
return ''
return ''
end
end
local data = p.makeLinkData(args)
-- we have no tracking categories currently but args.category should be
local link = p.renderLink(data)
-- supported into the future, so just return a string here for now
local trackingCategories = p.renderTrackingCategories(args)
return ''
return link .. trackingCategories
end
end


local function makeLinkData(args)
function p.makeLinkData(args)
local data = {}
local data = {}


-- Get the link and display values,
-- Get the link and display values, and find whether we are outputting a
-- 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 26: Line 32:
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 42: Line 43:
data.display = args[1]
data.display = args[1]
end
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 67: Line 60:
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
class = 'mw-ui-progressive'
else if colour == 'red' then
class = 'mw-ui-destructive'
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 99: Line 77:
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 112: Line 87:
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 120: Line 94:
data.backgroundColor = '#CCC'
data.backgroundColor = '#CCC'
data.color = '#666'
data.color = '#666'
end
else
if p.urlisdisplay
then
data.dummyLink = tostring(currentTitle)
end
end
end
end
Line 134: Line 103:
end
end


local function renderLink(data)
function p.renderLink(data)
-- Render the display span tag.
-- Render the display span tag.
local display
local display
Line 155: Line 124:


-- Render the link
-- Render the link
local link
local link  
if p.nolink then
if data.isUrl then
if p.urlisdisplay then
link = string.format('[%s %s]', data.link, display)
link = string.format('[[%s|%s]]', data.dummyLink, display)
else
else
link = string.format('[[%s|%s]]', data.link, display)
link = string.format('%s', display)
end
else if data.isUrl then
link = string.format('[%s %s]', data.link, display)
else
link = string.format('[[%s|%s]]', data.link, display)
end
end
end


return string.format('<span class="plainlinks clickbutton">%s</span>', link)
return string.format('<span class="plainlinks">%s</span>', link)
end
end


function p.luaMain(args)
function p.renderTrackingCategories(args)
-- If first arg or a url is not provided,
if yesno(args.category) == false then
-- but we have a second arg, make a button.
return ''
-- Otherwise, return nothing.
end
if not args[1] and not args.url then
local class = args.class and args.class:lower()
if args[2] then
if class == 'ui-button-green'
p.nolink = true
or class == 'ui-button-blue'
else
or class == 'ui-button-red'
return ''
then
end
return '[[Kategori:Halaman yang menggunakan ui-button-color gaya lama]]'
else
return ''
end
end
local data = makeLinkData(args)
local link = renderLink(data)
local trackingCategories = renderTrackingCategories(args)
return link .. trackingCategories
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Clickable button'
})
return p.luaMain(args)
end
end


return p
return p
Cancel Editing help (opens in new window)

  [] · [[]] · [[|]] · {{}} · · “” ‘’ «» ‹› „“ ‚‘ · ~ | ° &nbsp; · ± × ÷ ² ³ ½ · §
     [[Category:]] · [[:File:]] · [[Special:MyLanguage/]] · Special:MyLanguage/ · <code></code> · <nowiki></nowiki> <code><nowiki></nowiki></code> · <syntaxhighlight lang="php"></syntaxhighlight> · <includeonly></includeonly> · <noinclude></noinclude> · #REDIRECT[[]] · <translate></translate> · <languages/> · {{#translation:}} · <tvar name=1></tvar> · {{DEFAULTSORT:}} · <s></s>

Template used on this page: