한국   대만   중국   일본 
Mo đun:Nut b?m 2 ? Wikipedia ti?ng Vi?t B??c t?i n?i dung

Mo đun : Nut b?m 2

Trang mô đun bị khóa vô hạn
Bach khoa toan th? m? Wikipedia
Tai li?u mo đun [ t?o ]
-- This module implements {{clickable button 2}}.


local
 yesno
 =
 require
(
'Mo đun:Yesno'
)


local
 p
 =
 {}


function
 p
.
main
(
frame
)

	local
 args
 =
 require
(
'Mo đun:Arguments'
).
getArgs
(
frame
,
 {

		wrappers
 =
 'B?n m?u:Nut b?m 2'

	})

	return
 p
.
luaMain
(
args
)

end


function
 p
.
luaMain
(
args
)

	if
 not
 args
[
1
]
 and
 not
 args
.
url
 then

		return
 ''

	end

	local
 data
 =
 p
.
makeLinkData
(
args
)

	local
 link
 =
 p
.
renderLink
(
data
)

	local
 trackingCategories
 =
 p
.
renderTrackingCategories
(
args
)

	return
 link
 ..
 trackingCategories

end


function
 p
.
makeLinkData
(
args
)

	local
 data
 =
 {}


	-- Get the link and display values, and find whether we are outputting a

	-- wikilink or a URL.

	if
 args
.
url
 then

		data
.
isUrl
 =
 true

		data
.
link
 =
 args
.
url

		if
 args
[
1
]
 then

			data
.
display
 =
 args
[
1
]

		else

			data
.
display
 =
 args
.
url

		end

	else

		data
.
isUrl
 =
 false

		data
.
link
 =
 args
[
1
]

		if
 args
[
2
]
 then

			data
.
display
 =
 args
[
2
]

		else

			data
.
display
 =
 args
[
1
]

		end

	end


	-- Classes

	local
 class
 =
 args
.
class
 and
 args
.
class
:
lower
()

	data
.
classes
 =
 {}

	if
 class
 ==
 'ui-button-green'

		or
 class
 ==
 'ui-button-blue'

		or
 class
 ==
 'ui-button-red'

	then

		table.insert
(

			data
.
classes
,

			'submit ui-button ui-widget ui-state-default ui-corner-all'

				..
 ' ui-button-text-only ui-button-text'

		)

	else

		table.insert
(
data
.
classes
,
 'mw-ui-button'
)

	end

	if
 class
 then

		table.insert
(
data
.
classes
,
 class
)

	end


	-- Styles

	do

		--[[

		-- Check whether we are on the same page as we have specified in

		-- args[1], but not if we are using a URL link, as then args[1] is only

		-- a display value. If we are currently on the page specified in

		-- args[1] make the button colour darker so that it stands out from

		-- other buttons on the page.

		--]]

		local
 success
,
 linkTitle
,
 currentTitle

		if
 not
 data
.
isUrl
 then

			currentTitle
 =
 mw
.
title
.
getCurrentTitle
()

			success
,
 linkTitle
 =
 pcall
(
mw
.
title
.
new
,
 args
[
1
])

		end

		if
 success

			and
 linkTitle

			and
 mw
.
title
.
equals
(
currentTitle
,
 linkTitle
)

		then

			if
 class
 ==
 'ui-button-blue'

				or
 class
 ==
 'mw-ui-progressive'

				or
 class
 ==
 'mw-ui-constructive'

			then

				data
.
backgroundColor
 =
 '#2962CB'

			elseif
 class
 ==
 'ui-button-green'
 then

				data
.
backgroundColor
 =
 '#008B6D'

			elseif
 class
 ==
 'ui-button-red'
 or
 class
 ==
 'mw-ui-destructive'
 then

				data
.
backgroundColor
 =
 '#A6170F'

			else

				data
.
backgroundColor
 =
 '#CCC'

				data
.
color
 =
 '#666'

			end

		end

		-- Add user-specified styles.

		data
.
style
 =
 args
.
style

	end


	return
 data

end


function
 p
.
renderLink
(
data
)

	-- Render the display span tag.

	local
 display

	do

		local
 displaySpan
 =
 mw
.
html
.
create
(
'span'
)

		for
 i
,
 class
 in
 ipairs
(
data
.
classes
 or
 {})
 do

			displaySpan
:
addClass
(
class
)

		end

		displaySpan

			:
css
{

				[
'background-color'
]
 =
 data
.
backgroundColor
,

				color
 =
 data
.
color

			}

		if
 data
.
style
 then

			displaySpan
:
cssText
(
data
.
style
)

		end

		displaySpan
:
wikitext
(
data
.
display
)

		display
 =
 tostring
(
displaySpan
)

	end


	-- Render the link

	local
 link
 
	if
 data
.
isUrl
 then

		link
 =
 string.format
(
'[%s %s]'
,
 data
.
link
,
 display
)

	else

		link
 =
 string.format
(
'[[%s|%s]]'
,
 data
.
link
,
 display
)

	end


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

end


function
 p
.
renderTrackingCategories
(
args
)

	if
 yesno
(
args
.
category
)
 ==
 false
 then

		return
 ''

	end

	local
 class
 =
 args
.
class
 and
 args
.
class
:
lower
()

	if
 class
 ==
 'ui-button-green'

		or
 class
 ==
 'ui-button-blue'

		or
 class
 ==
 'ui-button-red'

	then

		return
 '[[Th? lo?i:Trang s? d?ng mau nut b?m ui ki?u c?]]'

	else

		return
 ''

	end

end


return
 p